From 0692fbf5329533da92771005b162515185344d12 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Wed, 23 Dec 2020 11:26:55 -0500 Subject: [PATCH] full re-lint and typings generation --- .eslintrc.json | 47 + build.js | 3 +- dist/face-api.d.ts | 2109 ----------------- dist/face-api.esm-nobundle.js | 2 +- dist/face-api.esm-nobundle.js.map | 6 +- dist/face-api.esm-nobundle.json | 399 ++-- dist/face-api.esm.js | 2 +- dist/face-api.esm.js.map | 6 +- dist/face-api.esm.json | 401 ++-- dist/face-api.js | 4 +- dist/face-api.js.map | 6 +- dist/face-api.json | 400 ++-- dist/face-api.node-gpu.js | 2 +- dist/face-api.node-gpu.js.map | 6 +- dist/face-api.node-gpu.json | 398 ++-- dist/face-api.node.js | 2 +- dist/face-api.node.js.map | 6 +- dist/face-api.node.json | 398 ++-- dist/tfjs.esm.js | 4 +- dist/tfjs.esm.js.map | 6 +- dist/tfjs.esm.json | 13 +- package-lock.json | 1740 +++++++++++++- package.json | 17 +- src/ageGenderNet/AgeGenderNet.ts | 108 +- src/ageGenderNet/extractParams.ts | 21 +- .../extractParamsFromWeigthMap.ts | 29 +- src/ageGenderNet/index.ts | 2 +- src/ageGenderNet/types.ts | 15 +- src/classes/BoundingBox.ts | 6 +- src/classes/Box.ts | 194 +- src/classes/Dimensions.ts | 17 +- src/classes/FaceDetection.ts | 10 +- src/classes/FaceLandmarks.ts | 85 +- src/classes/FaceLandmarks5.ts | 10 +- src/classes/FaceLandmarks68.ts | 20 +- src/classes/FaceMatch.ts | 14 +- src/classes/LabeledBox.ts | 14 +- src/classes/LabeledFaceDescriptors.ts | 25 +- src/classes/ObjectDetection.ts | 45 +- src/classes/Point.ts | 26 +- src/classes/PredictedBox.ts | 18 +- src/classes/Rect.ts | 6 +- src/classes/index.ts | 16 +- src/common/convLayer.ts | 12 +- src/common/depthwiseSeparableConv.ts | 12 +- src/common/disposeUnusedWeightTensors.ts | 8 +- src/common/extractConvParamsFactory.ts | 25 +- src/common/extractFCParamsFactory.ts | 26 +- .../extractSeparableConvParamsFactory.ts | 41 +- src/common/extractWeightEntryFactory.ts | 16 +- src/common/extractWeightsFactory.ts | 16 +- src/common/fullyConnectedLayer.ts | 14 +- src/common/getModelUris.ts | 25 +- src/common/index.ts | 20 +- src/common/loadConvParamsFactory.ts | 13 +- src/common/types.ts | 10 +- src/dom/NetInput.ts | 107 +- src/dom/awaitMediaLoaded.ts | 35 +- src/dom/bufferToImage.ts | 30 +- src/dom/createCanvas.ts | 28 +- src/dom/extractFaceTensors.ts | 27 +- src/dom/extractFaces.ts | 37 +- src/dom/fetchImage.ts | 8 +- src/dom/fetchJson.ts | 2 +- src/dom/fetchNetWeights.ts | 2 +- src/dom/fetchOrThrow.ts | 14 +- src/dom/getContext2dOrThrow.ts | 17 +- src/dom/getMediaDimensions.ts | 9 +- src/dom/imageTensorToCanvas.ts | 17 +- src/dom/imageToSquare.ts | 29 +- src/dom/index.ts | 42 +- src/dom/isMediaElement.ts | 7 +- src/dom/isMediaLoaded.ts | 5 +- src/dom/loadWeightMap.ts | 8 +- src/dom/matchDimensions.ts | 10 +- src/dom/resolveInput.ts | 6 +- src/dom/toNetInput.ts | 33 +- src/dom/types.ts | 2 +- src/draw/DrawBox.ts | 51 +- src/draw/DrawFaceLandmarks.ts | 84 +- src/draw/DrawTextField.ts | 100 +- src/draw/drawContour.ts | 26 +- src/draw/drawDetections.ts | 20 +- src/draw/drawFaceExpressions.ts | 29 +- src/draw/index.ts | 12 +- src/env/createBrowserEnv.ts | 22 +- src/env/createFileSystem.ts | 30 +- src/env/createNodejsEnv.ts | 46 +- src/env/index.ts | 47 +- src/env/isBrowser.ts | 4 +- src/env/isNodejs.ts | 4 +- src/env/types.ts | 2 + src/faceExpressionNet/FaceExpressionNet.ts | 35 +- src/faceExpressionNet/FaceExpressions.ts | 20 +- src/faceExpressionNet/index.ts | 2 +- .../FaceFeatureExtractor.ts | 36 +- .../TinyFaceFeatureExtractor.ts | 34 +- src/faceFeatureExtractor/denseBlock.ts | 40 +- src/faceFeatureExtractor/extractParams.ts | 30 +- .../extractParamsFromWeigthMap.ts | 19 +- .../extractParamsFromWeigthMapTiny.ts | 19 +- src/faceFeatureExtractor/extractParamsTiny.ts | 27 +- src/faceFeatureExtractor/extractorsFactory.ts | 30 +- src/faceFeatureExtractor/index.ts | 2 +- src/faceFeatureExtractor/loadParamsFactory.ts | 33 +- src/faceFeatureExtractor/types.ts | 12 +- src/faceLandmarkNet/FaceLandmark68Net.ts | 9 +- src/faceLandmarkNet/FaceLandmark68NetBase.ts | 89 +- src/faceLandmarkNet/FaceLandmark68TinyNet.ts | 9 +- src/faceLandmarkNet/index.ts | 2 +- src/faceProcessor/FaceProcessor.ts | 56 +- src/faceProcessor/extractParams.ts | 19 +- .../extractParamsFromWeigthMap.ts | 27 +- src/faceProcessor/index.ts | 2 +- src/faceProcessor/types.ts | 1 - src/faceProcessor/util.ts | 18 +- src/faceRecognitionNet/FaceRecognitionNet.ts | 77 +- src/faceRecognitionNet/convLayer.ts | 21 +- src/faceRecognitionNet/extractParams.ts | 127 +- .../extractParamsFromWeigthMap.ts | 87 +- src/faceRecognitionNet/index.ts | 8 +- src/faceRecognitionNet/residualLayer.ts | 48 +- src/faceRecognitionNet/scaleLayer.ts | 2 +- src/faceRecognitionNet/types.ts | 11 +- src/factories/WithAge.ts | 13 +- src/factories/WithFaceDescriptor.ts | 10 +- src/factories/WithFaceDetection.ts | 11 +- src/factories/WithFaceExpressions.ts | 13 +- src/factories/WithFaceLandmarks.ts | 41 +- src/factories/WithGender.ts | 15 +- src/factories/index.ts | 12 +- src/globalApi/ComposableTask.ts | 8 +- src/globalApi/ComputeFaceDescriptorsTasks.ts | 44 +- src/globalApi/DetectFaceLandmarksTasks.ts | 58 +- src/globalApi/DetectFacesTasks.ts | 71 +- src/globalApi/FaceMatcher.ts | 49 +- src/globalApi/PredictAgeAndGenderTask.ts | 56 +- src/globalApi/PredictFaceExpressionsTask.ts | 54 +- src/globalApi/allFaces.ts | 16 +- src/globalApi/detectFaces.ts | 10 +- .../extractFacesAndComputeResults.ts | 32 +- src/globalApi/index.ts | 19 +- src/globalApi/nets.ts | 54 +- src/globalApi/types.ts | 3 +- src/index.ts | 6 +- src/ops/index.ts | 18 +- src/ops/iou.ts | 10 +- src/ops/minBbox.ts | 14 +- src/ops/nonMaxSuppression.ts | 34 +- src/ops/normalize.ts | 16 +- src/ops/padToSquare.ts | 42 +- src/ops/shuffleArray.ts | 14 +- src/ssdMobilenetv1/SsdMobilenetv1.ts | 95 +- src/ssdMobilenetv1/SsdMobilenetv1Options.ts | 16 +- src/ssdMobilenetv1/boxPredictionLayer.ts | 22 +- src/ssdMobilenetv1/extractParams.ts | 204 +- .../extractParamsFromWeigthMap.ts | 99 +- src/ssdMobilenetv1/index.ts | 10 +- src/ssdMobilenetv1/mobileNetV1.ts | 48 +- src/ssdMobilenetv1/nonMaxSuppression.ts | 91 +- src/ssdMobilenetv1/outputLayer.ts | 69 +- src/ssdMobilenetv1/pointwiseConvLayer.ts | 14 +- src/ssdMobilenetv1/predictionLayer.ts | 47 +- src/ssdMobilenetv1/types.ts | 2 +- src/tfjs/tf-browser.js | 3 + src/tfjs/tf-node-gpu.js | 3 + src/tfjs/tf-node.js | 3 + src/tinyFaceDetector/TinyFaceDetector.ts | 19 +- .../TinyFaceDetectorOptions.ts | 2 +- src/tinyFaceDetector/const.ts | 8 +- src/tinyFaceDetector/index.ts | 8 +- src/tinyYolov2/TinyYolov2.ts | 42 +- src/tinyYolov2/TinyYolov2Base.ts | 238 +- src/tinyYolov2/TinyYolov2Options.ts | 23 +- src/tinyYolov2/config.ts | 19 +- src/tinyYolov2/const.ts | 16 +- src/tinyYolov2/convWithBatchNorm.ts | 18 +- src/tinyYolov2/depthwiseSeparableConv.ts | 14 +- src/tinyYolov2/extractParams.ts | 98 +- src/tinyYolov2/extractParamsFromWeigthMap.ts | 56 +- src/tinyYolov2/index.ts | 14 +- src/tinyYolov2/leaky.ts | 10 +- src/tinyYolov2/types.ts | 2 +- src/utils/index.ts | 35 +- src/xception/TinyXception.ts | 66 +- src/xception/extractParams.ts | 71 +- src/xception/extractParamsFromWeigthMap.ts | 68 +- src/xception/index.ts | 2 +- src/xception/types.ts | 2 +- tsconfig.json | 3 +- types/NeuralNetwork.d.ts | 44 + types/ageGenderNet/AgeGenderNet.d.ts | 29 + types/ageGenderNet/extractParams.d.ts | 6 + .../extractParamsFromWeigthMap.d.ts | 7 + types/ageGenderNet/index.d.ts | 2 + types/ageGenderNet/types.d.ts | 21 + types/classes/BoundingBox.d.ts | 10 + types/classes/Box.d.ts | 46 + types/classes/Dimensions.d.ts | 12 + types/classes/FaceDetection.d.ts | 12 + types/classes/FaceLandmarks.d.ts | 42 + types/classes/FaceLandmarks5.d.ts | 5 + types/classes/FaceLandmarks68.d.ts | 12 + types/classes/FaceMatch.d.ts | 12 + types/classes/LabeledBox.d.ts | 9 + types/classes/LabeledFaceDescriptors.d.ts | 9 + types/classes/ObjectDetection.d.ts | 20 + types/classes/Point.d.ts | 18 + types/classes/PredictedBox.d.ts | 11 + types/classes/Rect.d.ts | 10 + types/classes/index.d.ts | 14 + types/common/convLayer.d.ts | 3 + types/common/depthwiseSeparableConv.d.ts | 3 + types/common/disposeUnusedWeightTensors.d.ts | 2 + types/common/extractConvParamsFactory.d.ts | 2 + types/common/extractFCParamsFactory.d.ts | 2 + .../extractSeparableConvParamsFactory.d.ts | 3 + types/common/extractWeightEntryFactory.d.ts | 2 + types/common/extractWeightsFactory.d.ts | 4 + types/common/fullyConnectedLayer.d.ts | 3 + types/common/getModelUris.d.ts | 4 + types/common/index.d.ts | 10 + types/common/loadConvParamsFactory.d.ts | 2 + types/common/types.d.ts | 20 + types/dom/NetInput.d.ts | 34 + types/dom/awaitMediaLoaded.d.ts | 1 + types/dom/bufferToImage.d.ts | 1 + types/dom/createCanvas.d.ts | 3 + types/dom/extractFaceTensors.d.ts | 14 + types/dom/extractFaces.d.ts | 11 + types/dom/fetchImage.d.ts | 1 + types/dom/fetchJson.d.ts | 1 + types/dom/fetchNetWeights.d.ts | 1 + types/dom/fetchOrThrow.d.ts | 1 + types/dom/getContext2dOrThrow.d.ts | 1 + types/dom/getMediaDimensions.d.ts | 2 + types/dom/imageTensorToCanvas.d.ts | 2 + types/dom/imageToSquare.d.ts | 1 + types/dom/index.d.ts | 21 + types/dom/isMediaElement.d.ts | 1 + types/dom/isMediaLoaded.d.ts | 1 + types/dom/loadWeightMap.d.ts | 2 + types/dom/matchDimensions.d.ts | 5 + types/dom/resolveInput.d.ts | 1 + types/dom/toNetInput.d.ts | 10 + types/dom/types.d.ts | 6 + types/draw/DrawBox.d.ts | 21 + types/draw/DrawFaceLandmarks.d.ts | 28 + types/draw/DrawTextField.d.ts | 34 + types/draw/drawContour.d.ts | 2 + types/draw/drawDetections.d.ts | 5 + types/draw/drawFaceExpressions.d.ts | 5 + types/draw/index.d.ts | 6 + types/env/createBrowserEnv.d.ts | 2 + types/env/createFileSystem.d.ts | 2 + types/env/createNodejsEnv.d.ts | 2 + types/env/index.d.ts | 22 + types/env/isBrowser.d.ts | 1 + types/env/isNodejs.d.ts | 1 + types/env/types.d.ts | 14 + types/euclideanDistance.d.ts | 1 + .../faceExpressionNet/FaceExpressionNet.d.ts | 15 + types/faceExpressionNet/FaceExpressions.d.ts | 15 + types/faceExpressionNet/index.d.ts | 2 + .../FaceFeatureExtractor.d.ts | 18 + .../TinyFaceFeatureExtractor.d.ts | 18 + types/faceFeatureExtractor/denseBlock.d.ts | 4 + types/faceFeatureExtractor/extractParams.d.ts | 6 + .../extractParamsFromWeigthMap.d.ts | 7 + .../extractParamsFromWeigthMapTiny.d.ts | 7 + .../extractParamsTiny.d.ts | 6 + .../extractorsFactory.d.ts | 6 + .../loadParamsFactory.d.ts | 6 + types/faceFeatureExtractor/types.d.ts | 40 + types/faceLandmarkNet/FaceLandmark68Net.d.ts | 8 + .../FaceLandmark68NetBase.d.ts | 13 + .../FaceLandmark68TinyNet.d.ts | 8 + types/faceLandmarkNet/index.d.ts | 5 + types/faceProcessor/FaceProcessor.d.ts | 28 + types/faceProcessor/extractParams.d.ts | 6 + .../extractParamsFromWeigthMap.d.ts | 7 + types/faceProcessor/types.d.ts | 4 + types/faceProcessor/util.d.ts | 5 + .../FaceRecognitionNet.d.ts | 19 + types/faceRecognitionNet/convLayer.d.ts | 5 + types/faceRecognitionNet/extractParams.d.ts | 6 + .../extractParamsFromWeigthMap.d.ts | 7 + types/faceRecognitionNet/index.d.ts | 3 + types/faceRecognitionNet/residualLayer.d.ts | 4 + types/faceRecognitionNet/scaleLayer.d.ts | 3 + types/faceRecognitionNet/types.d.ts | 32 + types/factories/WithAge.d.ts | 5 + types/factories/WithFaceDescriptor.d.ts | 4 + types/factories/WithFaceDetection.d.ts | 6 + types/factories/WithFaceExpressions.d.ts | 6 + types/factories/WithFaceLandmarks.d.ts | 11 + types/factories/WithGender.d.ts | 7 + types/factories/index.d.ts | 6 + types/globalApi/ComposableTask.d.ts | 4 + .../ComputeFaceDescriptorsTasks.d.ts | 22 + types/globalApi/DetectFaceLandmarksTasks.d.ts | 29 + types/globalApi/DetectFacesTasks.d.ts | 38 + types/globalApi/FaceMatcher.d.ts | 15 + types/globalApi/PredictAgeAndGenderTask.d.ts | 30 + .../globalApi/PredictFaceExpressionsTask.d.ts | 29 + types/globalApi/allFaces.d.ts | 6 + types/globalApi/detectFaces.d.ts | 5 + .../extractFacesAndComputeResults.d.ts | 7 + types/globalApi/index.d.ts | 9 + types/globalApi/nets.d.ts | 105 + types/globalApi/types.d.ts | 7 + types/index.d.ts | 25 + types/ops/index.d.ts | 8 + types/ops/iou.d.ts | 2 + types/ops/minBbox.d.ts | 2 + types/ops/nonMaxSuppression.d.ts | 2 + types/ops/normalize.d.ts | 2 + types/ops/padToSquare.d.ts | 10 + types/ops/shuffleArray.d.ts | 1 + types/resizeResults.d.ts | 2 + types/ssdMobilenetv1/SsdMobilenetv1.d.ts | 21 + .../ssdMobilenetv1/SsdMobilenetv1Options.d.ts | 12 + types/ssdMobilenetv1/boxPredictionLayer.d.ts | 3 + types/ssdMobilenetv1/extractParams.d.ts | 6 + .../extractParamsFromWeigthMap.d.ts | 7 + types/ssdMobilenetv1/index.d.ts | 7 + types/ssdMobilenetv1/mobileNetV1.d.ts | 3 + types/ssdMobilenetv1/nonMaxSuppression.d.ts | 2 + types/ssdMobilenetv1/outputLayer.d.ts | 3 + types/ssdMobilenetv1/pointwiseConvLayer.d.ts | 3 + types/ssdMobilenetv1/predictionLayer.d.ts | 3 + types/ssdMobilenetv1/types.d.ts | 63 + types/tinyFaceDetector/TinyFaceDetector.d.ts | 17 + .../TinyFaceDetectorOptions.d.ts | 6 + types/tinyFaceDetector/const.d.ts | 4 + types/tinyFaceDetector/index.d.ts | 4 + types/tinyYolov2/TinyYolov2.d.ts | 18 + types/tinyYolov2/TinyYolov2Base.d.ts | 33 + types/tinyYolov2/TinyYolov2Options.d.ts | 12 + types/tinyYolov2/config.d.ts | 12 + types/tinyYolov2/const.d.ts | 7 + types/tinyYolov2/convWithBatchNorm.d.ts | 3 + types/tinyYolov2/depthwiseSeparableConv.d.ts | 3 + types/tinyYolov2/extractParams.d.ts | 7 + .../extractParamsFromWeigthMap.d.ts | 8 + types/tinyYolov2/index.d.ts | 6 + types/tinyYolov2/leaky.d.ts | 2 + types/tinyYolov2/types.d.ts | 34 + types/utils/index.d.ts | 17 + types/xception/TinyXception.d.ts | 19 + types/xception/extractParams.d.ts | 6 + .../xception/extractParamsFromWeigthMap.d.ts | 7 + types/xception/types.d.ts | 23 + 353 files changed, 7151 insertions(+), 5729 deletions(-) create mode 100644 .eslintrc.json delete mode 100644 dist/face-api.d.ts create mode 100644 types/NeuralNetwork.d.ts create mode 100644 types/ageGenderNet/AgeGenderNet.d.ts create mode 100644 types/ageGenderNet/extractParams.d.ts create mode 100644 types/ageGenderNet/extractParamsFromWeigthMap.d.ts create mode 100644 types/ageGenderNet/index.d.ts create mode 100644 types/ageGenderNet/types.d.ts create mode 100644 types/classes/BoundingBox.d.ts create mode 100644 types/classes/Box.d.ts create mode 100644 types/classes/Dimensions.d.ts create mode 100644 types/classes/FaceDetection.d.ts create mode 100644 types/classes/FaceLandmarks.d.ts create mode 100644 types/classes/FaceLandmarks5.d.ts create mode 100644 types/classes/FaceLandmarks68.d.ts create mode 100644 types/classes/FaceMatch.d.ts create mode 100644 types/classes/LabeledBox.d.ts create mode 100644 types/classes/LabeledFaceDescriptors.d.ts create mode 100644 types/classes/ObjectDetection.d.ts create mode 100644 types/classes/Point.d.ts create mode 100644 types/classes/PredictedBox.d.ts create mode 100644 types/classes/Rect.d.ts create mode 100644 types/classes/index.d.ts create mode 100644 types/common/convLayer.d.ts create mode 100644 types/common/depthwiseSeparableConv.d.ts create mode 100644 types/common/disposeUnusedWeightTensors.d.ts create mode 100644 types/common/extractConvParamsFactory.d.ts create mode 100644 types/common/extractFCParamsFactory.d.ts create mode 100644 types/common/extractSeparableConvParamsFactory.d.ts create mode 100644 types/common/extractWeightEntryFactory.d.ts create mode 100644 types/common/extractWeightsFactory.d.ts create mode 100644 types/common/fullyConnectedLayer.d.ts create mode 100644 types/common/getModelUris.d.ts create mode 100644 types/common/index.d.ts create mode 100644 types/common/loadConvParamsFactory.d.ts create mode 100644 types/common/types.d.ts create mode 100644 types/dom/NetInput.d.ts create mode 100644 types/dom/awaitMediaLoaded.d.ts create mode 100644 types/dom/bufferToImage.d.ts create mode 100644 types/dom/createCanvas.d.ts create mode 100644 types/dom/extractFaceTensors.d.ts create mode 100644 types/dom/extractFaces.d.ts create mode 100644 types/dom/fetchImage.d.ts create mode 100644 types/dom/fetchJson.d.ts create mode 100644 types/dom/fetchNetWeights.d.ts create mode 100644 types/dom/fetchOrThrow.d.ts create mode 100644 types/dom/getContext2dOrThrow.d.ts create mode 100644 types/dom/getMediaDimensions.d.ts create mode 100644 types/dom/imageTensorToCanvas.d.ts create mode 100644 types/dom/imageToSquare.d.ts create mode 100644 types/dom/index.d.ts create mode 100644 types/dom/isMediaElement.d.ts create mode 100644 types/dom/isMediaLoaded.d.ts create mode 100644 types/dom/loadWeightMap.d.ts create mode 100644 types/dom/matchDimensions.d.ts create mode 100644 types/dom/resolveInput.d.ts create mode 100644 types/dom/toNetInput.d.ts create mode 100644 types/dom/types.d.ts create mode 100644 types/draw/DrawBox.d.ts create mode 100644 types/draw/DrawFaceLandmarks.d.ts create mode 100644 types/draw/DrawTextField.d.ts create mode 100644 types/draw/drawContour.d.ts create mode 100644 types/draw/drawDetections.d.ts create mode 100644 types/draw/drawFaceExpressions.d.ts create mode 100644 types/draw/index.d.ts create mode 100644 types/env/createBrowserEnv.d.ts create mode 100644 types/env/createFileSystem.d.ts create mode 100644 types/env/createNodejsEnv.d.ts create mode 100644 types/env/index.d.ts create mode 100644 types/env/isBrowser.d.ts create mode 100644 types/env/isNodejs.d.ts create mode 100644 types/env/types.d.ts create mode 100644 types/euclideanDistance.d.ts create mode 100644 types/faceExpressionNet/FaceExpressionNet.d.ts create mode 100644 types/faceExpressionNet/FaceExpressions.d.ts create mode 100644 types/faceExpressionNet/index.d.ts create mode 100644 types/faceFeatureExtractor/FaceFeatureExtractor.d.ts create mode 100644 types/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts create mode 100644 types/faceFeatureExtractor/denseBlock.d.ts create mode 100644 types/faceFeatureExtractor/extractParams.d.ts create mode 100644 types/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts create mode 100644 types/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts create mode 100644 types/faceFeatureExtractor/extractParamsTiny.d.ts create mode 100644 types/faceFeatureExtractor/extractorsFactory.d.ts create mode 100644 types/faceFeatureExtractor/loadParamsFactory.d.ts create mode 100644 types/faceFeatureExtractor/types.d.ts create mode 100644 types/faceLandmarkNet/FaceLandmark68Net.d.ts create mode 100644 types/faceLandmarkNet/FaceLandmark68NetBase.d.ts create mode 100644 types/faceLandmarkNet/FaceLandmark68TinyNet.d.ts create mode 100644 types/faceLandmarkNet/index.d.ts create mode 100644 types/faceProcessor/FaceProcessor.d.ts create mode 100644 types/faceProcessor/extractParams.d.ts create mode 100644 types/faceProcessor/extractParamsFromWeigthMap.d.ts create mode 100644 types/faceProcessor/types.d.ts create mode 100644 types/faceProcessor/util.d.ts create mode 100644 types/faceRecognitionNet/FaceRecognitionNet.d.ts create mode 100644 types/faceRecognitionNet/convLayer.d.ts create mode 100644 types/faceRecognitionNet/extractParams.d.ts create mode 100644 types/faceRecognitionNet/extractParamsFromWeigthMap.d.ts create mode 100644 types/faceRecognitionNet/index.d.ts create mode 100644 types/faceRecognitionNet/residualLayer.d.ts create mode 100644 types/faceRecognitionNet/scaleLayer.d.ts create mode 100644 types/faceRecognitionNet/types.d.ts create mode 100644 types/factories/WithAge.d.ts create mode 100644 types/factories/WithFaceDescriptor.d.ts create mode 100644 types/factories/WithFaceDetection.d.ts create mode 100644 types/factories/WithFaceExpressions.d.ts create mode 100644 types/factories/WithFaceLandmarks.d.ts create mode 100644 types/factories/WithGender.d.ts create mode 100644 types/factories/index.d.ts create mode 100644 types/globalApi/ComposableTask.d.ts create mode 100644 types/globalApi/ComputeFaceDescriptorsTasks.d.ts create mode 100644 types/globalApi/DetectFaceLandmarksTasks.d.ts create mode 100644 types/globalApi/DetectFacesTasks.d.ts create mode 100644 types/globalApi/FaceMatcher.d.ts create mode 100644 types/globalApi/PredictAgeAndGenderTask.d.ts create mode 100644 types/globalApi/PredictFaceExpressionsTask.d.ts create mode 100644 types/globalApi/allFaces.d.ts create mode 100644 types/globalApi/detectFaces.d.ts create mode 100644 types/globalApi/extractFacesAndComputeResults.d.ts create mode 100644 types/globalApi/index.d.ts create mode 100644 types/globalApi/nets.d.ts create mode 100644 types/globalApi/types.d.ts create mode 100644 types/index.d.ts create mode 100644 types/ops/index.d.ts create mode 100644 types/ops/iou.d.ts create mode 100644 types/ops/minBbox.d.ts create mode 100644 types/ops/nonMaxSuppression.d.ts create mode 100644 types/ops/normalize.d.ts create mode 100644 types/ops/padToSquare.d.ts create mode 100644 types/ops/shuffleArray.d.ts create mode 100644 types/resizeResults.d.ts create mode 100644 types/ssdMobilenetv1/SsdMobilenetv1.d.ts create mode 100644 types/ssdMobilenetv1/SsdMobilenetv1Options.d.ts create mode 100644 types/ssdMobilenetv1/boxPredictionLayer.d.ts create mode 100644 types/ssdMobilenetv1/extractParams.d.ts create mode 100644 types/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts create mode 100644 types/ssdMobilenetv1/index.d.ts create mode 100644 types/ssdMobilenetv1/mobileNetV1.d.ts create mode 100644 types/ssdMobilenetv1/nonMaxSuppression.d.ts create mode 100644 types/ssdMobilenetv1/outputLayer.d.ts create mode 100644 types/ssdMobilenetv1/pointwiseConvLayer.d.ts create mode 100644 types/ssdMobilenetv1/predictionLayer.d.ts create mode 100644 types/ssdMobilenetv1/types.d.ts create mode 100644 types/tinyFaceDetector/TinyFaceDetector.d.ts create mode 100644 types/tinyFaceDetector/TinyFaceDetectorOptions.d.ts create mode 100644 types/tinyFaceDetector/const.d.ts create mode 100644 types/tinyFaceDetector/index.d.ts create mode 100644 types/tinyYolov2/TinyYolov2.d.ts create mode 100644 types/tinyYolov2/TinyYolov2Base.d.ts create mode 100644 types/tinyYolov2/TinyYolov2Options.d.ts create mode 100644 types/tinyYolov2/config.d.ts create mode 100644 types/tinyYolov2/const.d.ts create mode 100644 types/tinyYolov2/convWithBatchNorm.d.ts create mode 100644 types/tinyYolov2/depthwiseSeparableConv.d.ts create mode 100644 types/tinyYolov2/extractParams.d.ts create mode 100644 types/tinyYolov2/extractParamsFromWeigthMap.d.ts create mode 100644 types/tinyYolov2/index.d.ts create mode 100644 types/tinyYolov2/leaky.d.ts create mode 100644 types/tinyYolov2/types.d.ts create mode 100644 types/utils/index.d.ts create mode 100644 types/xception/TinyXception.d.ts create mode 100644 types/xception/extractParams.d.ts create mode 100644 types/xception/extractParamsFromWeigthMap.d.ts create mode 100644 types/xception/types.d.ts diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..cf40a7a --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,47 @@ +{ + "globals": {}, + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true, + "es2020": true + }, + "parser": "@typescript-eslint/parser", + "parserOptions": { "ecmaVersion": 2020 }, + "plugins": ["@typescript-eslint"], + "extends": [ + "eslint:recommended", + "plugin:import/errors", + "plugin:import/warnings", + "plugin:import/typescript", + "plugin:node/recommended", + "plugin:promise/recommended", + "plugin:json/recommended-with-comments", + "airbnb-base" + ], + "ignorePatterns": [ "node_modules", "types" ], + "settings": { + "import/resolver": { + "node": { + "extensions": [".js", ".ts"] + } + } + }, + "rules": { + "max-len": [1, 275, 3], + "no-plusplus": "off", + "import/prefer-default-export": "off", + "node/no-unsupported-features/es-syntax": "off", + "import/no-cycle": "off", + "import/extensions": "off", + "node/no-missing-import": "off", + "no-underscore-dangle": "off", + "class-methods-use-this": "off", + "camelcase": "off", + "no-await-in-loop": "off", + "no-continue": "off", + "no-param-reassign": "off", + "prefer-destructuring": "off" + } +} \ No newline at end of file diff --git a/build.js b/build.js index 33b2a4f..1959f2e 100644 --- a/build.js +++ b/build.js @@ -21,7 +21,8 @@ const tsconfig = { noEmitOnError: false, target: ts.ScriptTarget.ES2018, module: ts.ModuleKind.ES2020, - outFile: "dist/face-api.d.ts", + // outFile: "dist/face-api.d.ts", + outDir: "types/", declaration: true, emitDeclarationOnly: true, emitDecoratorMetadata: true, diff --git a/dist/face-api.d.ts b/dist/face-api.d.ts deleted file mode 100644 index b1ae253..0000000 --- a/dist/face-api.d.ts +++ /dev/null @@ -1,2109 +0,0 @@ -/// -declare module "classes/Dimensions" { - export interface IDimensions { - width: number; - height: number; - } - export class Dimensions implements IDimensions { - private _width; - private _height; - constructor(width: number, height: number); - get width(): number; - get height(): number; - reverse(): Dimensions; - } -} -declare module "utils/index" { - import * as tf from '../../dist/tfjs.esm.js'; - import { Point } from "classes/index"; - import { Dimensions, IDimensions } from "classes/Dimensions"; - export function isTensor(tensor: any, dim: number): boolean; - export function isTensor1D(tensor: any): tensor is tf.Tensor1D; - export function isTensor2D(tensor: any): tensor is tf.Tensor2D; - export function isTensor3D(tensor: any): tensor is tf.Tensor3D; - export function isTensor4D(tensor: any): tensor is tf.Tensor4D; - export function isFloat(num: number): boolean; - export function isEven(num: number): boolean; - export function round(num: number, prec?: number): number; - export function isDimensions(obj: any): boolean; - export function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number): Dimensions; - export function getCenterPoint(pts: Point[]): Point; - export function range(num: number, start: number, step: number): number[]; - export function isValidNumber(num: any): boolean; - export function isValidProbablitiy(num: any): boolean; -} -declare module "classes/Point" { - export interface IPoint { - x: number; - y: number; - } - export class Point implements IPoint { - private _x; - private _y; - constructor(x: number, y: number); - get x(): number; - get y(): number; - add(pt: IPoint): Point; - sub(pt: IPoint): Point; - mul(pt: IPoint): Point; - div(pt: IPoint): Point; - abs(): Point; - magnitude(): number; - floor(): Point; - } -} -declare module "classes/Rect" { - import { Box } from "classes/Box"; - export interface IRect { - x: number; - y: number; - width: number; - height: number; - } - export class Rect extends Box implements IRect { - constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions?: boolean); - } -} -declare module "classes/Box" { - import { IBoundingBox } from "classes/BoundingBox"; - import { IDimensions } from "classes/Dimensions"; - import { Point } from "classes/Point"; - import { IRect } from "classes/Rect"; - export class Box implements IBoundingBox, IRect { - static isRect(rect: any): boolean; - static assertIsValidBox(box: any, callee: string, allowNegativeDimensions?: boolean): void; - private _x; - private _y; - private _width; - private _height; - constructor(_box: IBoundingBox | IRect, allowNegativeDimensions?: boolean); - get x(): number; - get y(): number; - get width(): number; - get height(): number; - get left(): number; - get top(): number; - get right(): number; - get bottom(): number; - get area(): number; - get topLeft(): Point; - get topRight(): Point; - get bottomLeft(): Point; - get bottomRight(): Point; - round(): Box; - floor(): Box; - toSquare(): Box; - rescale(s: IDimensions | number): Box; - pad(padX: number, padY: number): Box; - clipAtImageBorders(imgWidth: number, imgHeight: number): Box; - shift(sx: number, sy: number): Box; - padAtBorders(imageHeight: number, imageWidth: number): { - dy: number; - edy: number; - dx: number; - edx: number; - y: number; - ey: number; - x: number; - ex: number; - w: number; - h: number; - }; - calibrate(region: Box): Box; - } -} -declare module "classes/BoundingBox" { - import { Box } from "classes/Box"; - export interface IBoundingBox { - left: number; - top: number; - right: number; - bottom: number; - } - export class BoundingBox extends Box implements IBoundingBox { - constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions?: boolean); - } -} -declare module "classes/ObjectDetection" { - import { Box } from "classes/Box"; - import { Dimensions, IDimensions } from "classes/Dimensions"; - import { IRect } from "classes/Rect"; - export class ObjectDetection { - private _score; - private _classScore; - private _className; - private _box; - private _imageDims; - constructor(score: number, classScore: number, className: string, relativeBox: IRect, imageDims: IDimensions); - get score(): number; - get classScore(): number; - get className(): string; - get box(): Box; - get imageDims(): Dimensions; - get imageWidth(): number; - get imageHeight(): number; - get relativeBox(): Box; - forSize(width: number, height: number): ObjectDetection; - } -} -declare module "classes/FaceDetection" { - import { Box } from "classes/Box"; - import { IDimensions } from "classes/Dimensions"; - import { ObjectDetection } from "classes/ObjectDetection"; - import { Rect } from "classes/Rect"; - export interface IFaceDetecion { - score: number; - box: Box; - } - export class FaceDetection extends ObjectDetection implements IFaceDetecion { - constructor(score: number, relativeBox: Rect, imageDims: IDimensions); - forSize(width: number, height: number): FaceDetection; - } -} -declare module "ops/iou" { - import { Box } from "classes/Box"; - export function iou(box1: Box, box2: Box, isIOU?: boolean): number; -} -declare module "ops/minBbox" { - import { BoundingBox, IPoint } from "classes/index"; - export function minBbox(pts: IPoint[]): BoundingBox; -} -declare module "ops/nonMaxSuppression" { - import { Box } from "classes/Box"; - export function nonMaxSuppression(boxes: Box[], scores: number[], iouThreshold: number, isIOU?: boolean): number[]; -} -declare module "ops/normalize" { - import * as tf from '../../dist/tfjs.esm.js'; - export function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D; -} -declare module "ops/padToSquare" { - import * as tf from '../../dist/tfjs.esm.js'; - /** - * Pads the smaller dimension of an image tensor with zeros, such that width === height. - * - * @param imgTensor The image tensor. - * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on - * both sides of the minor dimension oof the image. - * @returns The padded tensor with width === height. - */ - export function padToSquare(imgTensor: tf.Tensor4D, isCenterImage?: boolean): tf.Tensor4D; -} -declare module "ops/shuffleArray" { - export function shuffleArray(inputArray: any[]): any[]; -} -declare module "ops/index" { - export * from "ops/iou"; - export * from "ops/minBbox"; - export * from "ops/nonMaxSuppression"; - export * from "ops/normalize"; - export * from "ops/padToSquare"; - export * from "ops/shuffleArray"; - export function sigmoid(x: number): number; - export function inverseSigmoid(x: number): number; -} -declare module "classes/FaceLandmarks" { - import { IBoundingBox } from "classes/BoundingBox"; - import { Box } from "classes/Box"; - import { Dimensions, IDimensions } from "classes/Dimensions"; - import { FaceDetection } from "classes/FaceDetection"; - import { Point } from "classes/Point"; - import { IRect } from "classes/Rect"; - export interface IFaceLandmarks { - positions: Point[]; - shift: Point; - } - export class FaceLandmarks implements IFaceLandmarks { - protected _shift: Point; - protected _positions: Point[]; - protected _imgDims: Dimensions; - constructor(relativeFaceLandmarkPositions: Point[], imgDims: IDimensions, shift?: Point); - get shift(): Point; - get imageWidth(): number; - get imageHeight(): number; - get positions(): Point[]; - get relativePositions(): Point[]; - forSize(width: number, height: number): T; - shiftBy(x: number, y: number): T; - shiftByPoint(pt: Point): T; - /** - * Aligns the face landmarks after face detection from the relative positions of the faces - * bounding box, or it's current shift. This function should be used to align the face images - * after face detection has been performed, before they are passed to the face recognition net. - * This will make the computed face descriptor more accurate. - * - * @param detection (optional) The bounding box of the face or the face detection result. If - * no argument was passed the position of the face landmarks are assumed to be relative to - * it's current shift. - * @returns The bounding box of the aligned face. - */ - align(detection?: FaceDetection | IRect | IBoundingBox | null, options?: { - useDlibAlignment?: boolean; - minBoxPadding?: number; - }): Box; - private alignDlib; - private alignMinBbox; - protected getRefPointsForAlignment(): Point[]; - } -} -declare module "classes/FaceLandmarks5" { - import { FaceLandmarks } from "classes/FaceLandmarks"; - import { Point } from "classes/Point"; - export class FaceLandmarks5 extends FaceLandmarks { - protected getRefPointsForAlignment(): Point[]; - } -} -declare module "classes/FaceLandmarks68" { - import { FaceLandmarks } from "classes/FaceLandmarks"; - import { Point } from "classes/Point"; - export class FaceLandmarks68 extends FaceLandmarks { - getJawOutline(): Point[]; - getLeftEyeBrow(): Point[]; - getRightEyeBrow(): Point[]; - getNose(): Point[]; - getLeftEye(): Point[]; - getRightEye(): Point[]; - getMouth(): Point[]; - protected getRefPointsForAlignment(): Point[]; - } -} -declare module "classes/FaceMatch" { - export interface IFaceMatch { - label: string; - distance: number; - } - export class FaceMatch implements IFaceMatch { - private _label; - private _distance; - constructor(label: string, distance: number); - get label(): string; - get distance(): number; - toString(withDistance?: boolean): string; - } -} -declare module "classes/LabeledBox" { - import { IBoundingBox } from "classes/BoundingBox"; - import { Box } from "classes/Box"; - import { IRect } from "classes/Rect"; - export class LabeledBox extends Box { - static assertIsValidLabeledBox(box: any, callee: string): void; - private _label; - constructor(box: IBoundingBox | IRect | any, label: number); - get label(): number; - } -} -declare module "classes/LabeledFaceDescriptors" { - export class LabeledFaceDescriptors { - private _label; - private _descriptors; - constructor(label: string, descriptors: Float32Array[]); - get label(): string; - get descriptors(): Float32Array[]; - toJSON(): any; - static fromJSON(json: any): LabeledFaceDescriptors; - } -} -declare module "classes/PredictedBox" { - import { IBoundingBox } from "classes/BoundingBox"; - import { LabeledBox } from "classes/LabeledBox"; - import { IRect } from "classes/Rect"; - export class PredictedBox extends LabeledBox { - static assertIsValidPredictedBox(box: any, callee: string): void; - private _score; - private _classScore; - constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number); - get score(): number; - get classScore(): number; - } -} -declare module "classes/index" { - export * from "classes/BoundingBox"; - export * from "classes/Box"; - export * from "classes/Dimensions"; - export * from "classes/FaceDetection"; - export * from "classes/FaceLandmarks"; - export * from "classes/FaceLandmarks5"; - export * from "classes/FaceLandmarks68"; - export * from "classes/FaceMatch"; - export * from "classes/LabeledBox"; - export * from "classes/LabeledFaceDescriptors"; - export * from "classes/ObjectDetection"; - export * from "classes/Point"; - export * from "classes/PredictedBox"; - export * from "classes/Rect"; -} -declare module "draw/drawContour" { - import { Point } from "classes/index"; - export function drawContour(ctx: CanvasRenderingContext2D, points: Point[], isClosed?: boolean): void; -} -declare module "factories/WithFaceDetection" { - import { FaceDetection } from "classes/FaceDetection"; - export type WithFaceDetection = TSource & { - detection: FaceDetection; - }; - export function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}>; - export function extendWithFaceDetection(sourceObj: TSource, detection: FaceDetection): WithFaceDetection; -} -declare module "env/types" { - export type FileSystem = { - readFile: (filePath: string) => Promise; - }; - export type Environment = FileSystem & { - Canvas: typeof HTMLCanvasElement; - CanvasRenderingContext2D: typeof CanvasRenderingContext2D; - Image: typeof HTMLImageElement; - ImageData: typeof ImageData; - Video: typeof HTMLVideoElement; - createCanvasElement: () => HTMLCanvasElement; - createImageElement: () => HTMLImageElement; - fetch: (url: string, init?: RequestInit) => Promise; - }; -} -declare module "env/createBrowserEnv" { - import { Environment } from "env/types"; - export function createBrowserEnv(): Environment; -} -declare module "env/createFileSystem" { - import { FileSystem } from "env/types"; - export function createFileSystem(fs?: any): FileSystem; -} -declare module "env/createNodejsEnv" { - import { Environment } from "env/types"; - export function createNodejsEnv(): Environment; -} -declare module "env/isBrowser" { - export function isBrowser(): boolean; -} -declare module "env/isNodejs" { - export function isNodejs(): boolean; -} -declare module "env/index" { - import { createBrowserEnv } from "env/createBrowserEnv"; - import { createFileSystem } from "env/createFileSystem"; - import { createNodejsEnv } from "env/createNodejsEnv"; - import { isBrowser } from "env/isBrowser"; - import { isNodejs } from "env/isNodejs"; - import { Environment } from "env/types"; - function getEnv(): Environment; - function setEnv(env: Environment): void; - function initialize(): void; - function monkeyPatch(env: Partial): void; - export const env: { - getEnv: typeof getEnv; - setEnv: typeof setEnv; - initialize: typeof initialize; - createBrowserEnv: typeof createBrowserEnv; - createFileSystem: typeof createFileSystem; - createNodejsEnv: typeof createNodejsEnv; - monkeyPatch: typeof monkeyPatch; - isBrowser: typeof isBrowser; - isNodejs: typeof isNodejs; - }; - export * from "env/types"; -} -declare module "dom/resolveInput" { - export function resolveInput(arg: string | any): any; -} -declare module "dom/getContext2dOrThrow" { - export function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D; -} -declare module "draw/DrawTextField" { - import { IDimensions, IPoint } from "classes/index"; - export enum AnchorPosition { - TOP_LEFT = "TOP_LEFT", - TOP_RIGHT = "TOP_RIGHT", - BOTTOM_LEFT = "BOTTOM_LEFT", - BOTTOM_RIGHT = "BOTTOM_RIGHT" - } - export interface IDrawTextFieldOptions { - anchorPosition?: AnchorPosition; - backgroundColor?: string; - fontColor?: string; - fontSize?: number; - fontStyle?: string; - padding?: number; - } - export class DrawTextFieldOptions implements IDrawTextFieldOptions { - anchorPosition: AnchorPosition; - backgroundColor: string; - fontColor: string; - fontSize: number; - fontStyle: string; - padding: number; - constructor(options?: IDrawTextFieldOptions); - } - export class DrawTextField { - text: string[]; - anchor: IPoint; - options: DrawTextFieldOptions; - constructor(text: string | string[] | DrawTextField, anchor: IPoint, options?: IDrawTextFieldOptions); - measureWidth(ctx: CanvasRenderingContext2D): number; - measureHeight(): number; - getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint; - draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; - } -} -declare module "draw/DrawBox" { - import { Box, IBoundingBox, IRect } from "classes/index"; - import { DrawTextFieldOptions, IDrawTextFieldOptions } from "draw/DrawTextField"; - export interface IDrawBoxOptions { - boxColor?: string; - lineWidth?: number; - drawLabelOptions?: IDrawTextFieldOptions; - label?: string; - } - export class DrawBoxOptions { - boxColor: string; - lineWidth: number; - drawLabelOptions: DrawTextFieldOptions; - label?: string; - constructor(options?: IDrawBoxOptions); - } - export class DrawBox { - box: Box; - options: DrawBoxOptions; - constructor(box: IBoundingBox | IRect, options?: IDrawBoxOptions); - draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; - } -} -declare module "draw/drawDetections" { - import { IBoundingBox, IRect } from "classes/index"; - import { FaceDetection } from "classes/FaceDetection"; - import { WithFaceDetection } from "factories/WithFaceDetection"; - export type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>; - export function drawDetections(canvasArg: string | HTMLCanvasElement, detections: TDrawDetectionsInput | Array): void; -} -declare module "dom/isMediaLoaded" { - export function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement): boolean; -} -declare module "dom/awaitMediaLoaded" { - export function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement): Promise; -} -declare module "dom/bufferToImage" { - export function bufferToImage(buf: Blob): Promise; -} -declare module "dom/getMediaDimensions" { - import { Dimensions, IDimensions } from "classes/Dimensions"; - export function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions; -} -declare module "dom/createCanvas" { - import { IDimensions } from "classes/Dimensions"; - export function createCanvas({ width, height }: IDimensions): HTMLCanvasElement; - export function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement; -} -declare module "dom/imageTensorToCanvas" { - import * as tf from '../../dist/tfjs.esm.js'; - export function imageTensorToCanvas(imgTensor: tf.Tensor, canvas?: HTMLCanvasElement): Promise; -} -declare module "dom/isMediaElement" { - export function isMediaElement(input: any): boolean; -} -declare module "dom/imageToSquare" { - export function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage?: boolean): HTMLCanvasElement; -} -declare module "dom/types" { - import * as tf from '../../dist/tfjs.esm.js'; - import { NetInput } from "dom/NetInput"; - export type TMediaElement = HTMLImageElement | HTMLVideoElement | HTMLCanvasElement; - export type TResolvedNetInput = TMediaElement | tf.Tensor3D | tf.Tensor4D; - export type TNetInputArg = string | TResolvedNetInput; - export type TNetInput = TNetInputArg | Array | NetInput | tf.Tensor4D; -} -declare module "dom/NetInput" { - import * as tf from '../../dist/tfjs.esm.js'; - import { Dimensions } from "classes/Dimensions"; - import { TResolvedNetInput } from "dom/types"; - export class NetInput { - private _imageTensors; - private _canvases; - private _batchSize; - private _treatAsBatchInput; - private _inputDimensions; - private _inputSize; - constructor(inputs: Array, treatAsBatchInput?: boolean); - get imageTensors(): Array; - get canvases(): HTMLCanvasElement[]; - get isBatchInput(): boolean; - get batchSize(): number; - get inputDimensions(): number[][]; - get inputSize(): number | undefined; - get reshapedInputDimensions(): Dimensions[]; - getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement; - getInputDimensions(batchIdx: number): number[]; - getInputHeight(batchIdx: number): number; - getInputWidth(batchIdx: number): number; - getReshapedInputDimensions(batchIdx: number): Dimensions; - /** - * Create a batch tensor from all input canvases and tensors - * with size [batchSize, inputSize, inputSize, 3]. - * - * @param inputSize Height and width of the tensor. - * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on - * both sides of the minor dimension oof the image. - * @returns The batch tensor. - */ - toBatchTensor(inputSize: number, isCenterInputs?: boolean): tf.Tensor4D; - } -} -declare module "dom/toNetInput" { - import { NetInput } from "dom/NetInput"; - import { TNetInput } from "dom/types"; - /** - * Validates the input to make sure, they are valid net inputs and awaits all media elements - * to be finished loading. - * - * @param input The input, which can be a media element or an array of different media elements. - * @returns A NetInput instance, which can be passed into one of the neural networks. - */ - export function toNetInput(inputs: TNetInput): Promise; -} -declare module "dom/extractFaces" { - import { FaceDetection } from "classes/FaceDetection"; - import { Rect } from "classes/Rect"; - import { TNetInput } from "dom/types"; - /** - * Extracts the image regions containing the detected faces. - * - * @param input The image that face detection has been performed on. - * @param detections The face detection results or face bounding boxes for that image. - * @returns The Canvases of the corresponding image region for each detected face. - */ - export function extractFaces(input: TNetInput, detections: Array): Promise; -} -declare module "dom/extractFaceTensors" { - import * as tf from '../../dist/tfjs.esm.js'; - import { Rect } from "classes/index"; - import { FaceDetection } from "classes/FaceDetection"; - /** - * Extracts the tensors of the image regions containing the detected faces. - * Useful if you want to compute the face descriptors for the face images. - * Using this method is faster then extracting a canvas for each face and - * converting them to tensors individually. - * - * @param imageTensor The image tensor that face detection has been performed on. - * @param detections The face detection results or face bounding boxes for that image. - * @returns Tensors of the corresponding image region for each detected face. - */ - export function extractFaceTensors(imageTensor: tf.Tensor3D | tf.Tensor4D, detections: Array): Promise; -} -declare module "dom/fetchOrThrow" { - export function fetchOrThrow(url: string, init?: RequestInit): Promise; -} -declare module "dom/fetchImage" { - export function fetchImage(uri: string): Promise; -} -declare module "dom/fetchJson" { - export function fetchJson(uri: string): Promise; -} -declare module "dom/fetchNetWeights" { - export function fetchNetWeights(uri: string): Promise; -} -declare module "common/getModelUris" { - export function getModelUris(uri: string | undefined, defaultModelName: string): { - modelBaseUri: string; - manifestUri: string; - }; -} -declare module "dom/loadWeightMap" { - import * as tf from '../../dist/tfjs.esm.js'; - export function loadWeightMap(uri: string | undefined, defaultModelName: string): Promise; -} -declare module "dom/matchDimensions" { - import { IDimensions } from "classes/index"; - export function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions?: boolean): { - width: number; - height: number; - }; -} -declare module "dom/index" { - export * from "dom/awaitMediaLoaded"; - export * from "dom/bufferToImage"; - export * from "dom/createCanvas"; - export * from "dom/extractFaces"; - export * from "dom/extractFaceTensors"; - export * from "dom/fetchImage"; - export * from "dom/fetchJson"; - export * from "dom/fetchNetWeights"; - export * from "dom/fetchOrThrow"; - export * from "dom/getContext2dOrThrow"; - export * from "dom/getMediaDimensions"; - export * from "dom/imageTensorToCanvas"; - export * from "dom/imageToSquare"; - export * from "dom/isMediaElement"; - export * from "dom/isMediaLoaded"; - export * from "dom/loadWeightMap"; - export * from "dom/matchDimensions"; - export * from "dom/NetInput"; - export * from "dom/resolveInput"; - export * from "dom/toNetInput"; - export * from "dom/types"; -} -declare module "common/types" { - import * as tf from '../../dist/tfjs.esm.js'; - export type ExtractWeightsFunction = (numWeights: number) => Float32Array; - export type ParamMapping = { - originalPath?: string; - paramPath: string; - }; - export type ConvParams = { - filters: tf.Tensor4D; - bias: tf.Tensor1D; - }; - export type FCParams = { - weights: tf.Tensor2D; - bias: tf.Tensor1D; - }; - export class SeparableConvParams { - depthwise_filter: tf.Tensor4D; - pointwise_filter: tf.Tensor4D; - bias: tf.Tensor1D; - constructor(depthwise_filter: tf.Tensor4D, pointwise_filter: tf.Tensor4D, bias: tf.Tensor1D); - } -} -declare module "common/convLayer" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ConvParams } from "common/types"; - export function convLayer(x: tf.Tensor4D, params: ConvParams, padding?: 'valid' | 'same', withRelu?: boolean): tf.Tensor4D; -} -declare module "common/depthwiseSeparableConv" { - import * as tf from '../../dist/tfjs.esm.js'; - import { SeparableConvParams } from "common/types"; - export function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams, stride: [number, number]): tf.Tensor4D; -} -declare module "common/disposeUnusedWeightTensors" { - import { ParamMapping } from "common/types"; - export function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]): void; -} -declare module "common/extractConvParamsFactory" { - import { ConvParams, ExtractWeightsFunction, ParamMapping } from "common/types"; - export function extractConvParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, filterSize: number, mappedPrefix: string) => ConvParams; -} -declare module "common/extractFCParamsFactory" { - import { ExtractWeightsFunction, FCParams, ParamMapping } from "common/types"; - export function extractFCParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, mappedPrefix: string) => FCParams; -} -declare module "common/extractSeparableConvParamsFactory" { - import { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from "common/types"; - export function extractSeparableConvParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, mappedPrefix: string) => SeparableConvParams; - export function loadSeparableConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T): (prefix: string) => SeparableConvParams; -} -declare module "common/extractWeightEntryFactory" { - import { ParamMapping } from "common/types"; - export function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]): (originalPath: string, paramRank: number, mappedPath?: string | undefined) => T; -} -declare module "common/extractWeightsFactory" { - export function extractWeightsFactory(weights: Float32Array): { - extractWeights: (numWeights: number) => Float32Array; - getRemainingWeights: () => Float32Array; - }; -} -declare module "common/index" { - export * from "common/convLayer"; - export * from "common/depthwiseSeparableConv"; - export * from "common/disposeUnusedWeightTensors"; - export * from "common/extractConvParamsFactory"; - export * from "common/extractFCParamsFactory"; - export * from "common/extractSeparableConvParamsFactory"; - export * from "common/extractWeightEntryFactory"; - export * from "common/extractWeightsFactory"; - export * from "common/getModelUris"; - export * from "common/types"; -} -declare module "NeuralNetwork" { - import * as tf from '../dist/tfjs.esm.js'; - import { ParamMapping } from "common/index"; - export abstract class NeuralNetwork { - protected _name: string; - protected _params: TNetParams | undefined; - protected _paramMappings: ParamMapping[]; - constructor(_name: string); - get params(): TNetParams | undefined; - get paramMappings(): ParamMapping[]; - get isLoaded(): boolean; - getParamFromPath(paramPath: string): tf.Tensor; - reassignParamFromPath(paramPath: string, tensor: tf.Tensor): void; - getParamList(): { - path: string; - tensor: any; - }[]; - getTrainableParams(): { - path: string; - tensor: any; - }[]; - getFrozenParams(): { - path: string; - tensor: any; - }[]; - variable(): void; - freeze(): void; - dispose(throwOnRedispose?: boolean): void; - serializeParams(): Float32Array; - load(weightsOrUrl: Float32Array | string | undefined): Promise; - loadFromUri(uri: string | undefined): Promise; - loadFromDisk(filePath: string | undefined): Promise; - loadFromWeightMap(weightMap: tf.NamedTensorMap): void; - extractWeights(weights: Float32Array): void; - private traversePropertyPath; - protected abstract getDefaultModelName(): string; - protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TNetParams; - paramMappings: ParamMapping[]; - }; - protected abstract extractParams(weights: Float32Array): { - params: TNetParams; - paramMappings: ParamMapping[]; - }; - } -} -declare module "faceFeatureExtractor/types" { - import * as tf from '../../dist/tfjs.esm.js'; - import { NetInput, TNetInput } from "index"; - import { ConvParams, SeparableConvParams } from "common/index"; - import { NeuralNetwork } from "NeuralNetwork"; - export type ConvWithBatchNormParams = BatchNormParams & { - filter: tf.Tensor4D; - }; - export type BatchNormParams = { - mean: tf.Tensor1D; - variance: tf.Tensor1D; - scale: tf.Tensor1D; - offset: tf.Tensor1D; - }; - export type SeparableConvWithBatchNormParams = { - depthwise: ConvWithBatchNormParams; - pointwise: ConvWithBatchNormParams; - }; - export type DenseBlock3Params = { - conv0: SeparableConvParams | ConvParams; - conv1: SeparableConvParams; - conv2: SeparableConvParams; - }; - export type DenseBlock4Params = DenseBlock3Params & { - conv3: SeparableConvParams; - }; - export type TinyFaceFeatureExtractorParams = { - dense0: DenseBlock3Params; - dense1: DenseBlock3Params; - dense2: DenseBlock3Params; - }; - export type FaceFeatureExtractorParams = { - dense0: DenseBlock4Params; - dense1: DenseBlock4Params; - dense2: DenseBlock4Params; - dense3: DenseBlock4Params; - }; - export interface IFaceFeatureExtractor extends NeuralNetwork { - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - } -} -declare module "faceFeatureExtractor/denseBlock" { - import * as tf from '../../dist/tfjs.esm.js'; - import { DenseBlock3Params, DenseBlock4Params } from "faceFeatureExtractor/types"; - export function denseBlock3(x: tf.Tensor4D, denseBlockParams: DenseBlock3Params, isFirstLayer?: boolean): tf.Tensor4D; - export function denseBlock4(x: tf.Tensor4D, denseBlockParams: DenseBlock4Params, isFirstLayer?: boolean, isScaleDown?: boolean): tf.Tensor4D; -} -declare module "faceFeatureExtractor/extractorsFactory" { - import { ExtractWeightsFunction, ParamMapping } from "common/index"; - import { DenseBlock3Params, DenseBlock4Params } from "faceFeatureExtractor/types"; - export function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): { - extractDenseBlock3Params: (channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer?: boolean) => DenseBlock3Params; - extractDenseBlock4Params: (channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer?: boolean) => DenseBlock4Params; - }; -} -declare module "faceFeatureExtractor/extractParams" { - import { ParamMapping } from "common/index"; - import { FaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - export function extractParams(weights: Float32Array): { - params: FaceFeatureExtractorParams; - paramMappings: ParamMapping[]; - }; -} -declare module "common/loadConvParamsFactory" { - import { ConvParams } from "common/types"; - export function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T): (prefix: string) => ConvParams; -} -declare module "faceFeatureExtractor/loadParamsFactory" { - import { ParamMapping } from "common/index"; - import { DenseBlock3Params, DenseBlock4Params } from "faceFeatureExtractor/types"; - export function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]): { - extractDenseBlock3Params: (prefix: string, isFirstLayer?: boolean) => DenseBlock3Params; - extractDenseBlock4Params: (prefix: string, isFirstLayer?: boolean) => DenseBlock4Params; - }; -} -declare module "faceFeatureExtractor/extractParamsFromWeigthMap" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ParamMapping } from "common/index"; - import { FaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - export function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: FaceFeatureExtractorParams; - paramMappings: ParamMapping[]; - }; -} -declare module "faceFeatureExtractor/FaceFeatureExtractor" { - import * as tf from '../../dist/tfjs.esm.js'; - import { NetInput, TNetInput } from "dom/index"; - import { NeuralNetwork } from "NeuralNetwork"; - import { FaceFeatureExtractorParams, IFaceFeatureExtractor } from "faceFeatureExtractor/types"; - export class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { - constructor(); - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: FaceFeatureExtractorParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: FaceFeatureExtractorParams; - paramMappings: import("common").ParamMapping[]; - }; - } -} -declare module "common/fullyConnectedLayer" { - import * as tf from '../../dist/tfjs.esm.js'; - import { FCParams } from "common/types"; - export function fullyConnectedLayer(x: tf.Tensor2D, params: FCParams): tf.Tensor2D; -} -declare module "faceProcessor/types" { - import { FCParams } from "common/index"; - export type NetParams = { - fc: FCParams; - }; -} -declare module "faceProcessor/extractParams" { - import { ParamMapping } from "common/index"; - import { NetParams } from "faceProcessor/types"; - export function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { - params: NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "faceProcessor/extractParamsFromWeigthMap" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ParamMapping } from "common/index"; - import { NetParams } from "faceProcessor/types"; - export function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "faceProcessor/util" { - import * as tf from '../../dist/tfjs.esm.js'; - export function seperateWeightMaps(weightMap: tf.NamedTensorMap): { - featureExtractorMap: any; - classifierMap: any; - }; -} -declare module "faceProcessor/FaceProcessor" { - import * as tf from '../../dist/tfjs.esm.js'; - import { NetInput } from "dom/index"; - import { FaceFeatureExtractorParams, IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - import { NeuralNetwork } from "NeuralNetwork"; - import { NetParams } from "faceProcessor/types"; - export abstract class FaceProcessor extends NeuralNetwork { - protected _faceFeatureExtractor: IFaceFeatureExtractor; - constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor); - get faceFeatureExtractor(): IFaceFeatureExtractor; - protected abstract getDefaultModelName(): string; - protected abstract getClassifierChannelsIn(): number; - protected abstract getClassifierChannelsOut(): number; - runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D; - dispose(throwOnRedispose?: boolean): void; - loadClassifierParams(weights: Float32Array): void; - extractClassifierParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - } -} -declare module "faceExpressionNet/FaceExpressions" { - export const FACE_EXPRESSION_LABELS: string[]; - export class FaceExpressions { - neutral: number; - happy: number; - sad: number; - angry: number; - fearful: number; - disgusted: number; - surprised: number; - constructor(probabilities: number[] | Float32Array); - asSortedArray(): { - expression: string; - probability: number; - }[]; - } -} -declare module "faceExpressionNet/FaceExpressionNet" { - import * as tf from '../../dist/tfjs.esm.js'; - import { NetInput, TNetInput } from "dom/index"; - import { FaceFeatureExtractor } from "faceFeatureExtractor/FaceFeatureExtractor"; - import { FaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - import { FaceProcessor } from "faceProcessor/FaceProcessor"; - import { FaceExpressions } from "faceExpressionNet/FaceExpressions"; - export class FaceExpressionNet extends FaceProcessor { - constructor(faceFeatureExtractor?: FaceFeatureExtractor); - forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D; - forward(input: TNetInput): Promise; - predictExpressions(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected getClassifierChannelsIn(): number; - protected getClassifierChannelsOut(): number; - } -} -declare module "faceExpressionNet/index" { - export * from "faceExpressionNet/FaceExpressionNet"; - export * from "faceExpressionNet/FaceExpressions"; -} -declare module "factories/WithFaceExpressions" { - import { FaceExpressions } from "faceExpressionNet/FaceExpressions"; - export type WithFaceExpressions = TSource & { - expressions: FaceExpressions; - }; - export function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}>; - export function extendWithFaceExpressions(sourceObj: TSource, expressions: FaceExpressions): WithFaceExpressions; -} -declare module "draw/drawFaceExpressions" { - import { IPoint } from "classes/index"; - import { FaceExpressions } from "faceExpressionNet/index"; - import { WithFaceExpressions } from "factories/WithFaceExpressions"; - export type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>; - export function drawFaceExpressions(canvasArg: string | HTMLCanvasElement, faceExpressions: DrawFaceExpressionsInput | Array, minConfidence?: number, textFieldAnchor?: IPoint): void; -} -declare module "factories/WithFaceLandmarks" { - import { FaceDetection } from "classes/FaceDetection"; - import { FaceLandmarks } from "classes/FaceLandmarks"; - import { FaceLandmarks68 } from "classes/FaceLandmarks68"; - import { WithFaceDetection } from "factories/WithFaceDetection"; - export type WithFaceLandmarks, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> = TSource & { - landmarks: TFaceLandmarks; - unshiftedLandmarks: TFaceLandmarks; - alignedRect: FaceDetection; - }; - export function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks>; - export function extendWithFaceLandmarks, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68>(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks; -} -declare module "draw/DrawFaceLandmarks" { - import { FaceLandmarks } from "classes/FaceLandmarks"; - import { WithFaceDetection } from "factories/WithFaceDetection"; - import { WithFaceLandmarks } from "factories/WithFaceLandmarks"; - export interface IDrawFaceLandmarksOptions { - drawLines?: boolean; - drawPoints?: boolean; - lineWidth?: number; - pointSize?: number; - lineColor?: string; - pointColor?: string; - } - export class DrawFaceLandmarksOptions { - drawLines: boolean; - drawPoints: boolean; - lineWidth: number; - pointSize: number; - lineColor: string; - pointColor: string; - constructor(options?: IDrawFaceLandmarksOptions); - } - export class DrawFaceLandmarks { - faceLandmarks: FaceLandmarks; - options: DrawFaceLandmarksOptions; - constructor(faceLandmarks: FaceLandmarks, options?: IDrawFaceLandmarksOptions); - draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; - } - export type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>; - export function drawFaceLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: DrawFaceLandmarksInput | Array): void; -} -declare module "draw/index" { - export * from "draw/drawContour"; - export * from "draw/drawDetections"; - export * from "draw/drawFaceExpressions"; - export * from "draw/DrawBox"; - export * from "draw/DrawFaceLandmarks"; - export * from "draw/DrawTextField"; -} -declare module "xception/types" { - import { ConvParams, SeparableConvParams } from "common/index"; - export type ReductionBlockParams = { - separable_conv0: SeparableConvParams; - separable_conv1: SeparableConvParams; - expansion_conv: ConvParams; - }; - export type MainBlockParams = { - separable_conv0: SeparableConvParams; - separable_conv1: SeparableConvParams; - separable_conv2: SeparableConvParams; - }; - export type TinyXceptionParams = { - entry_flow: { - conv_in: ConvParams; - reduction_block_0: ReductionBlockParams; - reduction_block_1: ReductionBlockParams; - }; - middle_flow: any; - exit_flow: { - reduction_block: ReductionBlockParams; - separable_conv: SeparableConvParams; - }; - }; -} -declare module "xception/extractParams" { - import { ParamMapping } from "common/types"; - import { TinyXceptionParams } from "xception/types"; - export function extractParams(weights: Float32Array, numMainBlocks: number): { - params: TinyXceptionParams; - paramMappings: ParamMapping[]; - }; -} -declare module "xception/extractParamsFromWeigthMap" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ParamMapping } from "common/index"; - import { TinyXceptionParams } from "xception/types"; - export function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap, numMainBlocks: number): { - params: TinyXceptionParams; - paramMappings: ParamMapping[]; - }; -} -declare module "xception/TinyXception" { - import * as tf from '../../dist/tfjs.esm.js'; - import { NetInput, TNetInput } from "dom/index"; - import { NeuralNetwork } from "NeuralNetwork"; - import { TinyXceptionParams } from "xception/types"; - export class TinyXception extends NeuralNetwork { - private _numMainBlocks; - constructor(numMainBlocks: number); - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TinyXceptionParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: TinyXceptionParams; - paramMappings: import("common").ParamMapping[]; - }; - } -} -declare module "ageGenderNet/types" { - import * as tf from '../../dist/tfjs.esm.js'; - import { FCParams } from "common/index"; - export type AgeAndGenderPrediction = { - age: number; - gender: Gender; - genderProbability: number; - }; - export enum Gender { - FEMALE = "female", - MALE = "male" - } - export type NetOutput = { - age: tf.Tensor1D; - gender: tf.Tensor2D; - }; - export type NetParams = { - fc: { - age: FCParams; - gender: FCParams; - }; - }; -} -declare module "ageGenderNet/extractParams" { - import { ParamMapping } from "common/index"; - import { NetParams } from "ageGenderNet/types"; - export function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "ageGenderNet/extractParamsFromWeigthMap" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ParamMapping } from "common/index"; - import { NetParams } from "ageGenderNet/types"; - export function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "ageGenderNet/AgeGenderNet" { - import * as tf from '../../dist/tfjs.esm.js'; - import { TinyXception } from "xception/TinyXception"; - import { AgeAndGenderPrediction, NetOutput, NetParams } from "ageGenderNet/types"; - import { NeuralNetwork } from "NeuralNetwork"; - import { NetInput, TNetInput } from "dom/index"; - export class AgeGenderNet extends NeuralNetwork { - private _faceFeatureExtractor; - constructor(faceFeatureExtractor?: TinyXception); - get faceFeatureExtractor(): TinyXception; - runNet(input: NetInput | tf.Tensor4D): NetOutput; - forwardInput(input: NetInput | tf.Tensor4D): NetOutput; - forward(input: TNetInput): Promise; - predictAgeAndGender(input: TNetInput): Promise; - protected getDefaultModelName(): string; - dispose(throwOnRedispose?: boolean): void; - loadClassifierParams(weights: Float32Array): void; - extractClassifierParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - } -} -declare module "ageGenderNet/index" { - export * from "ageGenderNet/AgeGenderNet"; - export * from "ageGenderNet/types"; -} -declare module "faceLandmarkNet/FaceLandmark68NetBase" { - import * as tf from '../../dist/tfjs.esm.js'; - import { IDimensions } from "classes/index"; - import { FaceLandmarks68 } from "classes/FaceLandmarks68"; - import { NetInput, TNetInput } from "dom/index"; - import { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - import { FaceProcessor } from "faceProcessor/FaceProcessor"; - export abstract class FaceLandmark68NetBase extends FaceProcessor { - postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D; - forwardInput(input: NetInput): tf.Tensor2D; - forward(input: TNetInput): Promise; - detectLandmarks(input: TNetInput): Promise; - protected getClassifierChannelsOut(): number; - } -} -declare module "faceLandmarkNet/FaceLandmark68Net" { - import { FaceFeatureExtractor } from "faceFeatureExtractor/FaceFeatureExtractor"; - import { FaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - import { FaceLandmark68NetBase } from "faceLandmarkNet/FaceLandmark68NetBase"; - export class FaceLandmark68Net extends FaceLandmark68NetBase { - constructor(faceFeatureExtractor?: FaceFeatureExtractor); - protected getDefaultModelName(): string; - protected getClassifierChannelsIn(): number; - } -} -declare module "faceFeatureExtractor/extractParamsFromWeigthMapTiny" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ParamMapping } from "common/index"; - import { TinyFaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - export function extractParamsFromWeigthMapTiny(weightMap: tf.NamedTensorMap): { - params: TinyFaceFeatureExtractorParams; - paramMappings: ParamMapping[]; - }; -} -declare module "faceFeatureExtractor/extractParamsTiny" { - import { ParamMapping } from "common/index"; - import { TinyFaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - export function extractParamsTiny(weights: Float32Array): { - params: TinyFaceFeatureExtractorParams; - paramMappings: ParamMapping[]; - }; -} -declare module "faceFeatureExtractor/TinyFaceFeatureExtractor" { - import * as tf from '../../dist/tfjs.esm.js'; - import { NetInput, TNetInput } from "dom/index"; - import { NeuralNetwork } from "NeuralNetwork"; - import { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - export class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { - constructor(); - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TinyFaceFeatureExtractorParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: TinyFaceFeatureExtractorParams; - paramMappings: import("common").ParamMapping[]; - }; - } -} -declare module "faceLandmarkNet/FaceLandmark68TinyNet" { - import { TinyFaceFeatureExtractor } from "faceFeatureExtractor/TinyFaceFeatureExtractor"; - import { TinyFaceFeatureExtractorParams } from "faceFeatureExtractor/types"; - import { FaceLandmark68NetBase } from "faceLandmarkNet/FaceLandmark68NetBase"; - export class FaceLandmark68TinyNet extends FaceLandmark68NetBase { - constructor(faceFeatureExtractor?: TinyFaceFeatureExtractor); - protected getDefaultModelName(): string; - protected getClassifierChannelsIn(): number; - } -} -declare module "faceLandmarkNet/index" { - import { FaceLandmark68Net } from "faceLandmarkNet/FaceLandmark68Net"; - export * from "faceLandmarkNet/FaceLandmark68Net"; - export * from "faceLandmarkNet/FaceLandmark68TinyNet"; - export class FaceLandmarkNet extends FaceLandmark68Net { - } -} -declare module "faceRecognitionNet/types" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ConvParams } from "common/index"; - export type ScaleLayerParams = { - weights: tf.Tensor1D; - biases: tf.Tensor1D; - }; - export type ResidualLayerParams = { - conv1: ConvLayerParams; - conv2: ConvLayerParams; - }; - export type ConvLayerParams = { - conv: ConvParams; - scale: ScaleLayerParams; - }; - export type NetParams = { - conv32_down: ConvLayerParams; - conv32_1: ResidualLayerParams; - conv32_2: ResidualLayerParams; - conv32_3: ResidualLayerParams; - conv64_down: ResidualLayerParams; - conv64_1: ResidualLayerParams; - conv64_2: ResidualLayerParams; - conv64_3: ResidualLayerParams; - conv128_down: ResidualLayerParams; - conv128_1: ResidualLayerParams; - conv128_2: ResidualLayerParams; - conv256_down: ResidualLayerParams; - conv256_1: ResidualLayerParams; - conv256_2: ResidualLayerParams; - conv256_down_out: ResidualLayerParams; - fc: tf.Tensor2D; - }; -} -declare module "faceRecognitionNet/scaleLayer" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ScaleLayerParams } from "faceRecognitionNet/types"; - export function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D; -} -declare module "faceRecognitionNet/convLayer" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ConvLayerParams } from "faceRecognitionNet/types"; - export function conv(x: tf.Tensor4D, params: ConvLayerParams): any; - export function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams): any; - export function convDown(x: tf.Tensor4D, params: ConvLayerParams): any; -} -declare module "faceRecognitionNet/extractParams" { - import { ParamMapping } from "common/index"; - import { NetParams } from "faceRecognitionNet/types"; - export function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "faceRecognitionNet/extractParamsFromWeigthMap" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ParamMapping } from "common/index"; - import { NetParams } from "faceRecognitionNet/types"; - export function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "faceRecognitionNet/residualLayer" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ResidualLayerParams } from "faceRecognitionNet/types"; - export function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D; - export function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D; -} -declare module "faceRecognitionNet/FaceRecognitionNet" { - import * as tf from '../../dist/tfjs.esm.js'; - import { NetInput, TNetInput } from "dom/index"; - import { NeuralNetwork } from "NeuralNetwork"; - import { NetParams } from "faceRecognitionNet/types"; - export class FaceRecognitionNet extends NeuralNetwork { - constructor(); - forwardInput(input: NetInput): tf.Tensor2D; - forward(input: TNetInput): Promise; - computeFaceDescriptor(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - } -} -declare module "faceRecognitionNet/index" { - import { FaceRecognitionNet } from "faceRecognitionNet/FaceRecognitionNet"; - export * from "faceRecognitionNet/FaceRecognitionNet"; - export function createFaceRecognitionNet(weights: Float32Array): FaceRecognitionNet; -} -declare module "factories/WithFaceDescriptor" { - export type WithFaceDescriptor = TSource & { - descriptor: Float32Array; - }; - export function extendWithFaceDescriptor(sourceObj: TSource, descriptor: Float32Array): WithFaceDescriptor; -} -declare module "factories/WithAge" { - export type WithAge = TSource & { - age: number; - }; - export function isWithAge(obj: any): obj is WithAge<{}>; - export function extendWithAge(sourceObj: TSource, age: number): WithAge; -} -declare module "factories/WithGender" { - import { Gender } from "ageGenderNet/types"; - export type WithGender = TSource & { - gender: Gender; - genderProbability: number; - }; - export function isWithGender(obj: any): obj is WithGender<{}>; - export function extendWithGender(sourceObj: TSource, gender: Gender, genderProbability: number): WithGender; -} -declare module "factories/index" { - export * from "factories/WithFaceDescriptor"; - export * from "factories/WithFaceDetection"; - export * from "factories/WithFaceExpressions"; - export * from "factories/WithFaceLandmarks"; - export * from "factories/WithAge"; - export * from "factories/WithGender"; -} -declare module "ssdMobilenetv1/types" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ConvParams } from "common/index"; - export type PointwiseConvParams = { - filters: tf.Tensor4D; - batch_norm_offset: tf.Tensor1D; - }; - export namespace MobileNetV1 { - type DepthwiseConvParams = { - filters: tf.Tensor4D; - batch_norm_scale: tf.Tensor1D; - batch_norm_offset: tf.Tensor1D; - batch_norm_mean: tf.Tensor1D; - batch_norm_variance: tf.Tensor1D; - }; - type ConvPairParams = { - depthwise_conv: DepthwiseConvParams; - pointwise_conv: PointwiseConvParams; - }; - type Params = { - conv_0: PointwiseConvParams; - conv_1: ConvPairParams; - conv_2: ConvPairParams; - conv_3: ConvPairParams; - conv_4: ConvPairParams; - conv_5: ConvPairParams; - conv_6: ConvPairParams; - conv_7: ConvPairParams; - conv_8: ConvPairParams; - conv_9: ConvPairParams; - conv_10: ConvPairParams; - conv_11: ConvPairParams; - conv_12: ConvPairParams; - conv_13: ConvPairParams; - }; - } - export type BoxPredictionParams = { - box_encoding_predictor: ConvParams; - class_predictor: ConvParams; - }; - export type PredictionLayerParams = { - conv_0: PointwiseConvParams; - conv_1: PointwiseConvParams; - conv_2: PointwiseConvParams; - conv_3: PointwiseConvParams; - conv_4: PointwiseConvParams; - conv_5: PointwiseConvParams; - conv_6: PointwiseConvParams; - conv_7: PointwiseConvParams; - box_predictor_0: BoxPredictionParams; - box_predictor_1: BoxPredictionParams; - box_predictor_2: BoxPredictionParams; - box_predictor_3: BoxPredictionParams; - box_predictor_4: BoxPredictionParams; - box_predictor_5: BoxPredictionParams; - }; - export type OutputLayerParams = { - extra_dim: tf.Tensor3D; - }; - export type NetParams = { - mobilenetv1: MobileNetV1.Params; - prediction_layer: PredictionLayerParams; - output_layer: OutputLayerParams; - }; -} -declare module "ssdMobilenetv1/extractParams" { - import { ParamMapping } from "common/index"; - import { NetParams } from "ssdMobilenetv1/types"; - export function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "ssdMobilenetv1/extractParamsFromWeigthMap" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ParamMapping } from "common/index"; - import { NetParams } from "ssdMobilenetv1/types"; - export function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "ssdMobilenetv1/pointwiseConvLayer" { - import * as tf from '../../dist/tfjs.esm.js'; - import { PointwiseConvParams } from "ssdMobilenetv1/types"; - export function pointwiseConvLayer(x: tf.Tensor4D, params: PointwiseConvParams, strides: [number, number]): any; -} -declare module "ssdMobilenetv1/mobileNetV1" { - import * as tf from '../../dist/tfjs.esm.js'; - import { MobileNetV1 } from "ssdMobilenetv1/types"; - export function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params): any; -} -declare module "ssdMobilenetv1/nonMaxSuppression" { - import * as tf from '../../dist/tfjs.esm.js'; - export function nonMaxSuppression(boxes: tf.Tensor2D, scores: number[], maxOutputSize: number, iouThreshold: number, scoreThreshold: number): number[]; -} -declare module "ssdMobilenetv1/outputLayer" { - import * as tf from '../../dist/tfjs.esm.js'; - import { OutputLayerParams } from "ssdMobilenetv1/types"; - export function outputLayer(boxPredictions: tf.Tensor4D, classPredictions: tf.Tensor4D, params: OutputLayerParams): any; -} -declare module "ssdMobilenetv1/boxPredictionLayer" { - import * as tf from '../../dist/tfjs.esm.js'; - import { BoxPredictionParams } from "ssdMobilenetv1/types"; - export function boxPredictionLayer(x: tf.Tensor4D, params: BoxPredictionParams): any; -} -declare module "ssdMobilenetv1/predictionLayer" { - import * as tf from '../../dist/tfjs.esm.js'; - import { PredictionLayerParams } from "ssdMobilenetv1/types"; - export function predictionLayer(x: tf.Tensor4D, conv11: tf.Tensor4D, params: PredictionLayerParams): any; -} -declare module "ssdMobilenetv1/SsdMobilenetv1Options" { - export interface ISsdMobilenetv1Options { - minConfidence?: number; - maxResults?: number; - } - export class SsdMobilenetv1Options { - protected _name: string; - private _minConfidence; - private _maxResults; - constructor({ minConfidence, maxResults }?: ISsdMobilenetv1Options); - get minConfidence(): number; - get maxResults(): number; - } -} -declare module "ssdMobilenetv1/SsdMobilenetv1" { - import * as tf from '../../dist/tfjs.esm.js'; - import { FaceDetection } from "classes/FaceDetection"; - import { NetInput, TNetInput } from "dom/index"; - import { NeuralNetwork } from "NeuralNetwork"; - import { ISsdMobilenetv1Options } from "ssdMobilenetv1/SsdMobilenetv1Options"; - import { NetParams } from "ssdMobilenetv1/types"; - export class SsdMobilenetv1 extends NeuralNetwork { - constructor(); - forwardInput(input: NetInput): any; - forward(input: TNetInput): Promise; - locateFaces(input: TNetInput, options?: ISsdMobilenetv1Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("common").ParamMapping[]; - }; - } -} -declare module "ssdMobilenetv1/index" { - import { SsdMobilenetv1 } from "ssdMobilenetv1/SsdMobilenetv1"; - export * from "ssdMobilenetv1/SsdMobilenetv1"; - export * from "ssdMobilenetv1/SsdMobilenetv1Options"; - export function createSsdMobilenetv1(weights: Float32Array): SsdMobilenetv1; - export function createFaceDetectionNet(weights: Float32Array): SsdMobilenetv1; - export class FaceDetectionNet extends SsdMobilenetv1 { - } -} -declare module "tinyYolov2/const" { - import { Point } from "classes/index"; - export const IOU_THRESHOLD = 0.4; - export const BOX_ANCHORS: Point[]; - export const BOX_ANCHORS_SEPARABLE: Point[]; - export const MEAN_RGB_SEPARABLE: [number, number, number]; - export const DEFAULT_MODEL_NAME = "tiny_yolov2_model"; - export const DEFAULT_MODEL_NAME_SEPARABLE_CONV = "tiny_yolov2_separable_conv_model"; -} -declare module "tinyYolov2/config" { - import { Point } from "classes/Point"; - export type TinyYolov2Config = { - withSeparableConvs: boolean; - iouThreshold: number; - anchors: Point[]; - classes: string[]; - meanRgb?: [number, number, number]; - withClassScores?: boolean; - filterSizes?: number[]; - isFirstLayerConv2d?: boolean; - }; - export function validateConfig(config: any): void; -} -declare module "tinyYolov2/leaky" { - import * as tf from '../../dist/tfjs.esm.js'; - export function leaky(x: tf.Tensor4D): tf.Tensor4D; -} -declare module "tinyYolov2/types" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ConvParams } from "common/index"; - import { SeparableConvParams } from "common/types"; - export type BatchNorm = { - sub: tf.Tensor1D; - truediv: tf.Tensor1D; - }; - export type ConvWithBatchNorm = { - conv: ConvParams; - bn: BatchNorm; - }; - export type MobilenetParams = { - conv0: SeparableConvParams | ConvParams; - conv1: SeparableConvParams; - conv2: SeparableConvParams; - conv3: SeparableConvParams; - conv4: SeparableConvParams; - conv5: SeparableConvParams; - conv6?: SeparableConvParams; - conv7?: SeparableConvParams; - conv8: ConvParams; - }; - export type DefaultTinyYolov2NetParams = { - conv0: ConvWithBatchNorm; - conv1: ConvWithBatchNorm; - conv2: ConvWithBatchNorm; - conv3: ConvWithBatchNorm; - conv4: ConvWithBatchNorm; - conv5: ConvWithBatchNorm; - conv6: ConvWithBatchNorm; - conv7: ConvWithBatchNorm; - conv8: ConvParams; - }; - export type TinyYolov2NetParams = DefaultTinyYolov2NetParams | MobilenetParams; -} -declare module "tinyYolov2/convWithBatchNorm" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ConvWithBatchNorm } from "tinyYolov2/types"; - export function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D; -} -declare module "tinyYolov2/depthwiseSeparableConv" { - import * as tf from '../../dist/tfjs.esm.js'; - import { SeparableConvParams } from "common/types"; - export function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D; -} -declare module "tinyYolov2/extractParams" { - import { ParamMapping } from "common/types"; - import { TinyYolov2Config } from "tinyYolov2/config"; - import { TinyYolov2NetParams } from "tinyYolov2/types"; - export function extractParams(weights: Float32Array, config: TinyYolov2Config, boxEncodingSize: number, filterSizes: number[]): { - params: TinyYolov2NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "tinyYolov2/extractParamsFromWeigthMap" { - import * as tf from '../../dist/tfjs.esm.js'; - import { ParamMapping } from "common/types"; - import { TinyYolov2Config } from "tinyYolov2/config"; - import { TinyYolov2NetParams } from "tinyYolov2/types"; - export function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap, config: TinyYolov2Config): { - params: TinyYolov2NetParams; - paramMappings: ParamMapping[]; - }; -} -declare module "tinyYolov2/TinyYolov2Options" { - export enum TinyYolov2SizeType { - XS = 224, - SM = 320, - MD = 416, - LG = 608 - } - export interface ITinyYolov2Options { - inputSize?: number; - scoreThreshold?: number; - } - export class TinyYolov2Options { - protected _name: string; - private _inputSize; - private _scoreThreshold; - constructor({ inputSize, scoreThreshold }?: ITinyYolov2Options); - get inputSize(): number; - get scoreThreshold(): number; - } -} -declare module "tinyYolov2/TinyYolov2Base" { - import * as tf from '../../dist/tfjs.esm.js'; - import { Dimensions } from "classes/Dimensions"; - import { ObjectDetection } from "classes/ObjectDetection"; - import { NetInput } from "dom/NetInput"; - import { TNetInput } from "dom/types"; - import { NeuralNetwork } from "NeuralNetwork"; - import { TinyYolov2Config } from "tinyYolov2/config"; - import { ITinyYolov2Options } from "tinyYolov2/TinyYolov2Options"; - import { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from "tinyYolov2/types"; - export class TinyYolov2Base extends NeuralNetwork { - static DEFAULT_FILTER_SIZES: number[]; - private _config; - constructor(config: TinyYolov2Config); - get config(): TinyYolov2Config; - get withClassScores(): boolean; - get boxEncodingSize(): number; - runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D; - runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D; - forwardInput(input: NetInput, inputSize: number): tf.Tensor4D; - forward(input: TNetInput, inputSize: number): Promise; - detect(input: TNetInput, forwardParams?: ITinyYolov2Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TinyYolov2NetParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: TinyYolov2NetParams; - paramMappings: import("common").ParamMapping[]; - }; - protected extractBoxes(outputTensor: tf.Tensor4D, inputBlobDimensions: Dimensions, scoreThreshold?: number): Promise; - private extractPredictedClass; - } -} -declare module "tinyYolov2/TinyYolov2" { - import * as tf from '../../dist/tfjs.esm.js'; - import { FaceDetection, Point } from "classes/index"; - import { ParamMapping } from "common/types"; - import { TNetInput } from "dom/types"; - import { TinyYolov2Base } from "tinyYolov2/TinyYolov2Base"; - import { ITinyYolov2Options } from "tinyYolov2/TinyYolov2Options"; - import { TinyYolov2NetParams } from "tinyYolov2/types"; - export class TinyYolov2 extends TinyYolov2Base { - constructor(withSeparableConvs?: boolean); - get withSeparableConvs(): boolean; - get anchors(): Point[]; - locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TinyYolov2NetParams; - paramMappings: ParamMapping[]; - }; - } -} -declare module "tinyYolov2/index" { - import { TinyYolov2 } from "tinyYolov2/TinyYolov2"; - export * from "tinyYolov2/TinyYolov2Options"; - export * from "tinyYolov2/config"; - export * from "tinyYolov2/types"; - export { TinyYolov2 }; - export function createTinyYolov2(weights: Float32Array, withSeparableConvs?: boolean): TinyYolov2; -} -declare module "tinyFaceDetector/TinyFaceDetectorOptions" { - import { ITinyYolov2Options, TinyYolov2Options } from "tinyYolov2/index"; - export interface ITinyFaceDetectorOptions extends ITinyYolov2Options { - } - export class TinyFaceDetectorOptions extends TinyYolov2Options { - protected _name: string; - } -} -declare module "globalApi/ComposableTask" { - export class ComposableTask { - then(onfulfilled: (value: T) => T | PromiseLike): Promise; - run(): Promise; - } -} -declare module "globalApi/extractFacesAndComputeResults" { - import * as tf from '../../dist/tfjs.esm.js'; - import { FaceDetection } from "classes/FaceDetection"; - import { TNetInput } from "dom/index"; - import { WithFaceDetection } from "factories/WithFaceDetection"; - import { WithFaceLandmarks } from "factories/WithFaceLandmarks"; - export function extractAllFacesAndComputeResults, TResult>(parentResults: TSource[], input: TNetInput, computeResults: (faces: Array) => Promise, extractedFaces?: Array | null, getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection): Promise; - export function extractSingleFaceAndComputeResult, TResult>(parentResult: TSource, input: TNetInput, computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise, extractedFaces?: Array | null, getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection): Promise; -} -declare module "tinyFaceDetector/const" { - import { Point } from "classes/index"; - export const IOU_THRESHOLD = 0.4; - export const BOX_ANCHORS: Point[]; - export const MEAN_RGB: [number, number, number]; -} -declare module "tinyFaceDetector/TinyFaceDetector" { - import * as tf from '../../dist/tfjs.esm.js'; - import { FaceDetection, Point } from "classes/index"; - import { ParamMapping } from "common/index"; - import { TNetInput } from "dom/index"; - import { ITinyYolov2Options } from "tinyYolov2/index"; - import { TinyYolov2Base } from "tinyYolov2/TinyYolov2Base"; - import { TinyYolov2NetParams } from "tinyYolov2/types"; - export class TinyFaceDetector extends TinyYolov2Base { - constructor(); - get anchors(): Point[]; - locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TinyYolov2NetParams; - paramMappings: ParamMapping[]; - }; - } -} -declare module "globalApi/nets" { - import { AgeGenderNet } from "ageGenderNet/AgeGenderNet"; - import { AgeAndGenderPrediction } from "ageGenderNet/types"; - import { FaceDetection } from "classes/FaceDetection"; - import { FaceLandmarks68 } from "classes/FaceLandmarks68"; - import { TNetInput } from "dom/index"; - import { FaceExpressionNet } from "faceExpressionNet/FaceExpressionNet"; - import { FaceExpressions } from "faceExpressionNet/FaceExpressions"; - import { FaceLandmark68Net } from "faceLandmarkNet/FaceLandmark68Net"; - import { FaceLandmark68TinyNet } from "faceLandmarkNet/FaceLandmark68TinyNet"; - import { FaceRecognitionNet } from "faceRecognitionNet/FaceRecognitionNet"; - import { SsdMobilenetv1 } from "ssdMobilenetv1/SsdMobilenetv1"; - import { SsdMobilenetv1Options } from "ssdMobilenetv1/SsdMobilenetv1Options"; - import { TinyFaceDetector } from "tinyFaceDetector/TinyFaceDetector"; - import { TinyFaceDetectorOptions } from "tinyFaceDetector/TinyFaceDetectorOptions"; - import { ITinyYolov2Options, TinyYolov2 } from "tinyYolov2/index"; - export const nets: { - ssdMobilenetv1: SsdMobilenetv1; - tinyFaceDetector: TinyFaceDetector; - tinyYolov2: TinyYolov2; - faceLandmark68Net: FaceLandmark68Net; - faceLandmark68TinyNet: FaceLandmark68TinyNet; - faceRecognitionNet: FaceRecognitionNet; - faceExpressionNet: FaceExpressionNet; - ageGenderNet: AgeGenderNet; - }; - /** - * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. - * - * @param input The input image. - * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ - export const ssdMobilenetv1: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; - /** - * Attempts to detect all faces in an image using the Tiny Face Detector. - * - * @param input The input image. - * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters). - * @returns Bounding box of each face with score. - */ - export const tinyFaceDetector: (input: TNetInput, options: TinyFaceDetectorOptions) => Promise; - /** - * Attempts to detect all faces in an image using the Tiny Yolov2 Network. - * - * @param input The input image. - * @param options (optional, default: see TinyYolov2Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ - export const tinyYolov2: (input: TNetInput, options: ITinyYolov2Options) => Promise; - /** - * Detects the 68 point face landmark positions of the face shown in an image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ - export const detectFaceLandmarks: (input: TNetInput) => Promise; - /** - * Detects the 68 point face landmark positions of the face shown in an image - * using a tinier version of the 68 point face landmark model, which is slightly - * faster at inference, but also slightly less accurate. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ - export const detectFaceLandmarksTiny: (input: TNetInput) => Promise; - /** - * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image, - * which uniquely represents the features of that persons face. The computed face descriptor can - * be used to measure the similarity between faces, by computing the euclidean distance of two - * face descriptors. - * - * @param inputs The face image extracted from the aligned bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Face descriptor with 128 entries or array thereof in case of batch input. - */ - export const computeFaceDescriptor: (input: TNetInput) => Promise; - /** - * Recognizes the facial expressions from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input. - */ - export const recognizeFaceExpressions: (input: TNetInput) => Promise; - /** - * Predicts age and gender from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Predictions with age, gender and gender probability or array thereof in case of batch input. - */ - export const predictAgeAndGender: (input: TNetInput) => Promise; - export const loadSsdMobilenetv1Model: (url: string) => Promise; - export const loadTinyFaceDetectorModel: (url: string) => Promise; - export const loadTinyYolov2Model: (url: string) => Promise; - export const loadFaceLandmarkModel: (url: string) => Promise; - export const loadFaceLandmarkTinyModel: (url: string) => Promise; - export const loadFaceRecognitionModel: (url: string) => Promise; - export const loadFaceExpressionModel: (url: string) => Promise; - export const loadAgeGenderModel: (url: string) => Promise; - export const loadFaceDetectionModel: (url: string) => Promise; - export const locateFaces: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; - export const detectLandmarks: (input: TNetInput) => Promise; -} -declare module "globalApi/PredictFaceExpressionsTask" { - import { TNetInput } from "dom/index"; - import { WithFaceDetection } from "factories/WithFaceDetection"; - import { WithFaceExpressions } from "factories/WithFaceExpressions"; - import { WithFaceLandmarks } from "factories/WithFaceLandmarks"; - import { ComposableTask } from "globalApi/ComposableTask"; - import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from "globalApi/ComputeFaceDescriptorsTasks"; - import { PredictAllAgeAndGenderTask, PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from "globalApi/PredictAgeAndGenderTask"; - export class PredictFaceExpressionsTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - protected extractedFaces?: any[] | undefined; - constructor(parentTask: ComposableTask | Promise, input: TNetInput, extractedFaces?: any[] | undefined); - } - export class PredictAllFaceExpressionsTask> extends PredictFaceExpressionsTaskBase[], TSource[]> { - run(): Promise[]>; - withAgeAndGender(): PredictAllAgeAndGenderTask>; - } - export class PredictSingleFaceExpressionsTask> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> { - run(): Promise | undefined>; - withAgeAndGender(): PredictSingleAgeAndGenderTask>; - } - export class PredictAllFaceExpressionsWithFaceAlignmentTask>> extends PredictAllFaceExpressionsTask { - withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptors(): ComputeAllFaceDescriptorsTask>; - } - export class PredictSingleFaceExpressionsWithFaceAlignmentTask>> extends PredictSingleFaceExpressionsTask { - withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptor(): ComputeSingleFaceDescriptorTask>; - } -} -declare module "globalApi/PredictAgeAndGenderTask" { - import { TNetInput } from "dom/index"; - import { WithAge } from "factories/WithAge"; - import { WithFaceDetection } from "factories/WithFaceDetection"; - import { WithFaceLandmarks } from "factories/WithFaceLandmarks"; - import { WithGender } from "factories/WithGender"; - import { ComposableTask } from "globalApi/ComposableTask"; - import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from "globalApi/ComputeFaceDescriptorsTasks"; - import { PredictAllFaceExpressionsTask, PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from "globalApi/PredictFaceExpressionsTask"; - export class PredictAgeAndGenderTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - protected extractedFaces?: any[] | undefined; - constructor(parentTask: ComposableTask | Promise, input: TNetInput, extractedFaces?: any[] | undefined); - } - export class PredictAllAgeAndGenderTask> extends PredictAgeAndGenderTaskBase>[], TSource[]> { - run(): Promise>[]>; - withFaceExpressions(): PredictAllFaceExpressionsTask>>; - } - export class PredictSingleAgeAndGenderTask> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> { - run(): Promise> | undefined>; - withFaceExpressions(): PredictSingleFaceExpressionsTask>>; - } - export class PredictAllAgeAndGenderWithFaceAlignmentTask>> extends PredictAllAgeAndGenderTask { - withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>>; - withFaceDescriptors(): ComputeAllFaceDescriptorsTask>>; - } - export class PredictSingleAgeAndGenderWithFaceAlignmentTask>> extends PredictSingleAgeAndGenderTask { - withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>>; - withFaceDescriptor(): ComputeSingleFaceDescriptorTask>>; - } -} -declare module "globalApi/ComputeFaceDescriptorsTasks" { - import { TNetInput } from "dom/index"; - import { WithFaceDescriptor } from "factories/WithFaceDescriptor"; - import { WithFaceDetection } from "factories/WithFaceDetection"; - import { WithFaceLandmarks } from "factories/WithFaceLandmarks"; - import { ComposableTask } from "globalApi/ComposableTask"; - import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from "globalApi/PredictAgeAndGenderTask"; - import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from "globalApi/PredictFaceExpressionsTask"; - export class ComputeFaceDescriptorsTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - constructor(parentTask: ComposableTask | Promise, input: TNetInput); - } - export class ComputeAllFaceDescriptorsTask>> extends ComputeFaceDescriptorsTaskBase[], TSource[]> { - run(): Promise[]>; - withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; - } - export class ComputeSingleFaceDescriptorTask>> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> { - run(): Promise | undefined>; - withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; - } -} -declare module "globalApi/DetectFaceLandmarksTasks" { - import { FaceLandmarks68 } from "classes/FaceLandmarks68"; - import { TNetInput } from "dom/index"; - import { FaceLandmark68Net } from "faceLandmarkNet/FaceLandmark68Net"; - import { FaceLandmark68TinyNet } from "faceLandmarkNet/FaceLandmark68TinyNet"; - import { WithFaceDetection } from "factories/WithFaceDetection"; - import { WithFaceLandmarks } from "factories/WithFaceLandmarks"; - import { ComposableTask } from "globalApi/ComposableTask"; - import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from "globalApi/ComputeFaceDescriptorsTasks"; - import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from "globalApi/PredictAgeAndGenderTask"; - import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from "globalApi/PredictFaceExpressionsTask"; - export class DetectFaceLandmarksTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - protected useTinyLandmarkNet: boolean; - constructor(parentTask: ComposableTask | Promise, input: TNetInput, useTinyLandmarkNet: boolean); - protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet; - } - export class DetectAllFaceLandmarksTask> extends DetectFaceLandmarksTaskBase[], TSource[]> { - run(): Promise[]>; - withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptors(): ComputeAllFaceDescriptorsTask>; - } - export class DetectSingleFaceLandmarksTask> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> { - run(): Promise | undefined>; - withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptor(): ComputeSingleFaceDescriptorTask>; - } -} -declare module "globalApi/types" { - import { FaceDetection } from "classes/FaceDetection"; - import { TNetInput } from "dom/index"; - import { SsdMobilenetv1Options } from "ssdMobilenetv1/SsdMobilenetv1Options"; - import { TinyFaceDetectorOptions } from "tinyFaceDetector/TinyFaceDetectorOptions"; - import { TinyYolov2Options } from "tinyYolov2/index"; - export type FaceDetectionOptions = TinyFaceDetectorOptions | SsdMobilenetv1Options | TinyYolov2Options; - export type FaceDetectionFunction = (input: TNetInput) => Promise; -} -declare module "globalApi/DetectFacesTasks" { - import { FaceDetection } from "classes/FaceDetection"; - import { TNetInput } from "dom/index"; - import { ComposableTask } from "globalApi/ComposableTask"; - import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from "globalApi/DetectFaceLandmarksTasks"; - import { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from "globalApi/PredictAgeAndGenderTask"; - import { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from "globalApi/PredictFaceExpressionsTask"; - import { FaceDetectionOptions } from "globalApi/types"; - export class DetectFacesTaskBase extends ComposableTask { - protected input: TNetInput; - protected options: FaceDetectionOptions; - constructor(input: TNetInput, options?: FaceDetectionOptions); - } - export class DetectAllFacesTask extends DetectFacesTaskBase { - run(): Promise; - private runAndExtendWithFaceDetections; - withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectAllFaceLandmarksTask<{ - detection: FaceDetection; - }>; - withFaceExpressions(): PredictAllFaceExpressionsTask<{ - detection: FaceDetection; - }>; - withAgeAndGender(): PredictAllAgeAndGenderTask<{ - detection: FaceDetection; - }>; - } - export class DetectSingleFaceTask extends DetectFacesTaskBase { - run(): Promise; - private runAndExtendWithFaceDetection; - withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectSingleFaceLandmarksTask<{ - detection: FaceDetection; - }>; - withFaceExpressions(): PredictSingleFaceExpressionsTask<{ - detection: FaceDetection; - }>; - withAgeAndGender(): PredictSingleAgeAndGenderTask<{ - detection: FaceDetection; - }>; - } -} -declare module "globalApi/detectFaces" { - import { TNetInput } from "dom/index"; - import { DetectAllFacesTask, DetectSingleFaceTask } from "globalApi/DetectFacesTasks"; - import { FaceDetectionOptions } from "globalApi/types"; - export function detectSingleFace(input: TNetInput, options?: FaceDetectionOptions): DetectSingleFaceTask; - export function detectAllFaces(input: TNetInput, options?: FaceDetectionOptions): DetectAllFacesTask; -} -declare module "globalApi/allFaces" { - import { TNetInput } from "dom/index"; - import { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from "factories/index"; - import { ITinyYolov2Options } from "tinyYolov2/index"; - export function allFacesSsdMobilenetv1(input: TNetInput, minConfidence?: number): Promise>>[]>; - export function allFacesTinyYolov2(input: TNetInput, forwardParams?: ITinyYolov2Options): Promise>>[]>; - export const allFaces: typeof allFacesSsdMobilenetv1; -} -declare module "euclideanDistance" { - export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array): number; -} -declare module "globalApi/FaceMatcher" { - import { FaceMatch } from "classes/FaceMatch"; - import { LabeledFaceDescriptors } from "classes/LabeledFaceDescriptors"; - import { WithFaceDescriptor } from "factories/index"; - export class FaceMatcher { - private _labeledDescriptors; - private _distanceThreshold; - constructor(inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>, distanceThreshold?: number); - get labeledDescriptors(): LabeledFaceDescriptors[]; - get distanceThreshold(): number; - computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number; - matchDescriptor(queryDescriptor: Float32Array): FaceMatch; - findBestMatch(queryDescriptor: Float32Array): FaceMatch; - toJSON(): any; - static fromJSON(json: any): FaceMatcher; - } -} -declare module "globalApi/index" { - export * from "globalApi/allFaces"; - export * from "globalApi/ComposableTask"; - export * from "globalApi/ComputeFaceDescriptorsTasks"; - export * from "globalApi/detectFaces"; - export * from "globalApi/DetectFacesTasks"; - export * from "globalApi/DetectFaceLandmarksTasks"; - export * from "globalApi/FaceMatcher"; - export * from "globalApi/nets"; - export * from "globalApi/types"; -} -declare module "tinyFaceDetector/index" { - import { TinyFaceDetector } from "tinyFaceDetector/TinyFaceDetector"; - export * from "tinyFaceDetector/TinyFaceDetector"; - export * from "tinyFaceDetector/TinyFaceDetectorOptions"; - export function createTinyFaceDetector(weights: Float32Array): TinyFaceDetector; -} -declare module "resizeResults" { - import { IDimensions } from "classes/index"; - export function resizeResults(results: T, dimensions: IDimensions): T; -} -declare module "index" { - import * as tf from '../dist/tfjs.esm.js'; - import * as draw from "draw/index"; - import * as utils from "utils/index"; - export { tf, draw, utils }; - export * from "ageGenderNet/index"; - export * from "classes/index"; - export * from "dom/index"; - export * from "env/index"; - export * from "faceExpressionNet/index"; - export * from "faceLandmarkNet/index"; - export * from "faceRecognitionNet/index"; - export * from "factories/index"; - export * from "globalApi/index"; - export * from "ops/index"; - export * from "ssdMobilenetv1/index"; - export * from "tinyFaceDetector/index"; - export * from "tinyYolov2/index"; - export * from "euclideanDistance"; - export * from "NeuralNetwork"; - export * from "resizeResults"; - export const version: { - faceapi: string; - node: boolean; - browser: boolean; - }; -} diff --git a/dist/face-api.esm-nobundle.js b/dist/face-api.esm-nobundle.js index 6bf7464..dbf952d 100644 --- a/dist/face-api.esm-nobundle.js +++ b/dist/face-api.esm-nobundle.js @@ -5,5 +5,5 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module);import*as dist_star from"@tensorflow/tfjs/dist/index.js";import*as tfjs_backend_wasm_star from"@tensorflow/tfjs-backend-wasm";var require_tfjs_esm=__commonJS(exports=>{__exportStar(exports,dist_star);__exportStar(exports,tfjs_backend_wasm_star)}),require_isNodejs=__commonJS((exports,module)=>{__export(exports,{isNodejs:()=>isNodejs3});function isNodejs3(){return typeof global=="object"&&!0&&typeof module!="undefined"&&typeof process!="undefined"&&!!process.version}}),tf42=__toModule(require_tfjs_esm()),draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range,round:()=>round});var tf=__toModule(require_tfjs_esm()),Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof tf.Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!==0}function isEven(num){return num%2===0}function round(num,prec=2){let f=Math.pow(10,prec);return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale2=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale2),Math.round(height*scale2))}function getCenterPoint(pts){return pts.reduce((sum,pt)=>sum.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range(num,start,step){return Array(num).fill(0).map((_,i)=>start+i*step)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&0<=num&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min,x)=>xymaxmax({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}var tf2=__toModule(require_tfjs_esm());function normalize(x,meanRgb){return tf2.tidy(()=>{let[r,g,b]=meanRgb,avg_r=tf2.fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=tf2.fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=tf2.fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=tf2.concat([avg_r,avg_g,avg_b],3);return tf2.sub(x,avg_rgb)})}var tf3=__toModule(require_tfjs_esm());function padToSquare(imgTensor,isCenterImage=!1){return tf3.tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmount2=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmount2,tf3.fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>tf3.cast(t,"float32"));return tf3.concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array=inputArray.slice();for(let i=array.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array[i];array[i]=array[j],array[j]=x}return array}function sigmoid(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},options);return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json){let descriptors=json.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return Object.assign({},sourceObj,extension)}function createBrowserEnv(){let fetch=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")},readFile=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?function(filePath){return new Promise((res,rej)=>{fs.readFile(filePath,function(err,buffer){return err?rej(err):res(buffer)})})}:function(){throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=function(){if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=function(){if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch=global.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch,...fileSystem}}function isBrowser(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env16){environment=env16}function initialize(){if(isBrowser())return setEnv(createBrowserEnv());if(isNodejs.isNodejs())return setEnv(createNodejsEnv())}function monkeyPatch(env16){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env16;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env16.createCanvasElement||(()=>new Canvas),environment.createImageElement=env16.createImageElement||(()=>new Image),environment.ImageData=env16.ImageData||environment.ImageData,environment.Video=env16.Video||environment.Video,environment.fetch=env16.fetch||environment.fetch,environment.readFile=env16.readFile||environment.readFile}var env={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions(Object.assign({},defaultDrawLabelOptions,drawLabelOptions))}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}var tf18=__toModule(require_tfjs_esm());function isMediaLoaded(media){let{Image,Video}=env.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{if(!(buf instanceof Blob))return reject("bufferToImage - expected buf to be of type: Blob");let reader=new FileReader;reader.onload=()=>{if(typeof reader.result!="string")return reject("bufferToImage - expected reader.result to be a string, in onload");let img=env.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input){let{Image,Video}=env.getEnv();return input instanceof Image?new Dimensions(input.naturalWidth,input.naturalHeight):input instanceof Video?new Dimensions(input.videoWidth,input.videoHeight):new Dimensions(input.width,input.height)}function createCanvas({width,height}){let{createCanvasElement}=env.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}var tf4=__toModule(require_tfjs_esm());async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tf4.tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await tf4.browser.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input){let{Image,Canvas,Video}=env.getEnv();return input instanceof Image||input instanceof Canvas||input instanceof Video}var tf5=__toModule(require_tfjs_esm());function imageToSquare(input,inputSize,centerImage=!1){let{Image,Canvas}=env.getEnv();if(!(input instanceof Image||input instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input),scale2=inputSize/Math.max(dims.height,dims.width),width=scale2*dims.width,height=scale2*dims.height,targetCanvas=createCanvas({width:inputSize,height:inputSize}),inputCanvas=input instanceof Canvas?input:createCanvasFromMedia(input),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input)){this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape;return}if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape.slice(1);return}let canvas=input instanceof env.getEnv().Canvas?input:createCanvasFromMedia(input);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tf5.tidy(()=>{let inputTensors=range(this.batchSize,0,1).map(batchIdx=>{let input=this.getInput(batchIdx);if(input instanceof tf5.Tensor){let imgTensor=isTensor4D(input)?input:input.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=tf5.image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input instanceof env.getEnv().Canvas)return tf5.browser.fromPixels(imageToSquare(input,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)}),batchTensor=tf5.stack(inputTensors.map(t=>tf5.cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input,i)=>{if(!isMediaElement(input)&&!isTensor3D(input)&&!isTensor4D(input))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input=>isMediaElement(input)&&awaitMediaLoaded(input))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input,detections){let{Canvas}=env.getEnv(),canvas=input;if(!(input instanceof Canvas)){let netInput=await toNetInput(input);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}var tf6=__toModule(require_tfjs_esm());async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tf6.tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>tf6.slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init){let fetch=env.getEnv().fetch,res=await fetch(url,init);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}var tf7=__toModule(require_tfjs_esm());function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return tf7.io.loadWeights(manifest,modelBaseUri)}function matchDimensions(input,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input.width=width,input.height=height,{width,height}}var tf15=__toModule(require_tfjs_esm()),tf8=__toModule(require_tfjs_esm()),NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof tf8.Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof tf8.Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable})=>{let tensor2=tf8.tensor(variable.dataSync());variable.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights=tf8.io.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof tf8.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}},tf10=__toModule(require_tfjs_esm()),tf9=__toModule(require_tfjs_esm());function depthwiseSeparableConv(x,params,stride){return tf9.tidy(()=>{let out=tf9.separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=tf9.add(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=tf10.relu(tf10.add(out1,tf10.add(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,tf10.add(out3,out4))))})}var tf11=__toModule(require_tfjs_esm());function convLayer(x,params,padding="same",withRelu=!1){return tf11.tidy(()=>{let out=tf11.add(tf11.conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?tf11.relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}var tf12=__toModule(require_tfjs_esm());function extractConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,filterSize,mappedPrefix){let filters=tf12.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf12.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}var tf13=__toModule(require_tfjs_esm());function extractFCParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let fc_weights=tf13.tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tf13.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var tf14=__toModule(require_tfjs_esm()),SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let depthwise_filter=tf14.tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tf14.tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tf14.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return function(prefix){let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return function(originalPath,paramRank,mappedPath){let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return function(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tf15.tidy(()=>{let batchTensor=tf15.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf15.scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=tf15.avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}},tf17=__toModule(require_tfjs_esm()),tf16=__toModule(require_tfjs_esm());function fullyConnectedLayer(x,params){return tf16.tidy(()=>tf16.add(tf16.matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf17.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input){return tf18.tidy(()=>tf18.softmax(this.runNet(input)))}async forward(input){return this.forwardInput(await toNetInput(input))}async predictExpressions(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(tf18.unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return Object.assign({},sourceObj,extension)}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(expr2=>expr2.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(expr2=>`${expr2.expression} (${round(expr2.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return Object.assign({},sourceObj,extension)}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var tf20=__toModule(require_tfjs_esm()),tf19=__toModule(require_tfjs_esm());function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return tf19.add(tf19.conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?tf19.relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=tf19.maxPool(out,[3,3],[2,2],"same"),out=tf19.add(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(tf19.relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv2,[1,1]),out=tf19.add(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tf19.tidy(()=>{let batchTensor=tf19.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf19.scalar(256)),out=tf19.relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=tf19.relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf20.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input,pooled=tf20.avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input){return tf20.tidy(()=>{let{age,gender}=this.runNet(input);return{age,gender:tf20.softmax(gender)}})}async forward(input){return this.forwardInput(await toNetInput(input))}async predictAgeAndGender(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),ages=tf20.unstack(out.age),genders=tf20.unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var tf21=__toModule(require_tfjs_esm()),FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale2=inputSize/Math.max(height,width);return{width:width*scale2,height:height*scale2}}),batchSize=inputDimensions.length;return tf21.tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>tf21.stack([tf21.fill([68],fillX,"float32"),tf21.fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding(batchIdx,(w,h)=>wgetPadding(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(tf21.stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input){return tf21.tidy(()=>{let out=this.runNet(input);return this.postProcess(out,input.inputSize,input.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input){return this.forwardInput(await toNetInput(input))}async detectLandmarks(input){let netInput=await toNetInput(input),landmarkTensors=tf21.tidy(()=>tf21.unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven(i)),yCoords=landmarksArray.filter((_,i)=>!isEven(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var tf22=__toModule(require_tfjs_esm());function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tf22.tidy(()=>{let batchTensor=tf22.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf22.scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=tf22.avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};var tf27=__toModule(require_tfjs_esm()),tf24=__toModule(require_tfjs_esm()),tf23=__toModule(require_tfjs_esm());function scale(x,params){return tf23.add(tf23.mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=tf24.conv2d(x,filters,strides,padding);return out=tf24.add(out,bias),out=scale(out,params.scale),withRelu?tf24.relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}var tf25=__toModule(require_tfjs_esm());function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tf25.tidy(()=>tf25.transpose(tf25.tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tf25.tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tf25.tensor1d(extractWeights(numWeights)),biases=tf25.tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale2=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale2}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tf25.tidy(()=>tf25.transpose(tf25.tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale2=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale2}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),fc=weightMap.fc;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf26=__toModule(require_tfjs_esm());function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=tf26.add(out,x),out=tf26.relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=tf26.avgPool(x,2,2,"valid"),zeros2=tf26.zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=tf26.zeros(padShapeX);out=tf26.concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=tf26.zeros(padShapeY);out=tf26.concat([out,zerosH],2)}return pooled=isPad?tf26.concat([pooled,zeros2],3):pooled,out=tf26.add(pooled,out),out=tf26.relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tf27.tidy(()=>{let batchTensor=tf27.cast(input.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf27.scalar(256)),out=convDown(normalized,params.conv32_down);out=tf27.maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=tf27.matMul(globalAvg,params.fc);return fullyConnected})}async forward(input){return this.forwardInput(await toNetInput(input))}async computeFaceDescriptor(input){let netInput=await toNetInput(input),faceDescriptorTensors=tf27.tidy(()=>tf27.unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return Object.assign({},sourceObj,extension)}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return Object.assign({},sourceObj,extension)}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return Object.assign({},sourceObj,extension)}var tf34=__toModule(require_tfjs_esm()),tf28=__toModule(require_tfjs_esm());function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tf28.tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tf28.tensor1d(extractWeights(numChannels)),batch_norm_offset=tf28.tensor1d(extractWeights(numChannels)),batch_norm_mean=tf28.tensor1d(extractWeights(numChannels)),batch_norm_variance=tf28.tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tf28.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf28.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tf28.tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf30=__toModule(require_tfjs_esm()),tf29=__toModule(require_tfjs_esm());function pointwiseConvLayer(x,params,strides){return tf29.tidy(()=>{let out=tf29.conv2d(x,params.filters,strides,"same");return out=tf29.add(out,params.batch_norm_offset),tf29.clipByValue(out,0,6)})}var epsilon=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tf30.tidy(()=>{let out=tf30.depthwiseConv2d(x,params.filters,strides,"same");return out=tf30.batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon),tf30.clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tf30.tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function nonMaxSuppression2(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}var tf31=__toModule(require_tfjs_esm());function getCenterCoordinatesAndSizesLayer(x){let vec=tf31.unstack(tf31.transpose(x,[1,0])),sizes=[tf31.sub(vec[2],vec[0]),tf31.sub(vec[3],vec[1])],centers=[tf31.add(vec[0],tf31.div(sizes[0],tf31.scalar(2))),tf31.add(vec[1],tf31.div(sizes[1],tf31.scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=tf31.unstack(tf31.transpose(x1,[1,0])),div0_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[2],tf31.scalar(5))),sizes[0]),tf31.scalar(2)),add0_out=tf31.add(tf31.mul(tf31.div(vec[0],tf31.scalar(10)),sizes[0]),centers[0]),div1_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[3],tf31.scalar(5))),sizes[1]),tf31.scalar(2)),add1_out=tf31.add(tf31.mul(tf31.div(vec[1],tf31.scalar(10)),sizes[1]),centers[1]);return tf31.transpose(tf31.stack([tf31.sub(add0_out,div0_out),tf31.sub(add1_out,div1_out),tf31.add(add0_out,div0_out),tf31.add(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tf31.tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(tf31.reshape(tf31.tile(params.extra_dim,[batchSize,1,1]),[-1,4]),tf31.reshape(boxPredictions,[-1,4]));boxes=tf31.reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=tf31.sigmoid(tf31.slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=tf31.slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=tf31.reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=tf31.unstack(boxes),scoresByBatch=tf31.unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}var tf33=__toModule(require_tfjs_esm()),tf32=__toModule(require_tfjs_esm());function boxPredictionLayer(x,params){return tf32.tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=tf32.reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=tf32.reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tf33.tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=tf33.concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=tf33.concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tf34.tidy(()=>{let batchTensor=tf34.cast(input.toBatchTensor(512,!1),"float32"),x=tf34.sub(tf34.mul(batchTensor,tf34.scalar(.007843137718737125)),tf34.scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input){return this.forwardInput(await toNetInput(input))}async locateFaces(input,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression2(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",tf39=__toModule(require_tfjs_esm()),isNumber=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber(a.x)&&isNumber(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}var tf36=__toModule(require_tfjs_esm()),tf35=__toModule(require_tfjs_esm());function leaky(x){return tf35.tidy(()=>{let min=tf35.mul(x,tf35.scalar(.10000000149011612));return tf35.add(tf35.relu(tf35.sub(x,min)),min)})}function convWithBatchNorm(x,params){return tf36.tidy(()=>{let out=tf36.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf36.conv2d(out,params.conv.filters,[1,1],"valid"),out=tf36.sub(out,params.bn.sub),out=tf36.mul(out,params.bn.truediv),out=tf36.add(out,params.conv.bias),leaky(out)})}var tf37=__toModule(require_tfjs_esm());function depthwiseSeparableConv3(x,params){return tf37.tidy(()=>{let out=tf37.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf37.separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=tf37.add(out,params.bias),leaky(out)})}var tf38=__toModule(require_tfjs_esm());function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub6=tf38.tensor1d(extractWeights(size)),truediv=tf38.tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub6,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub6=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub6,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2SizeType;(function(TinyYolov2SizeType2){TinyYolov2SizeType2[TinyYolov2SizeType2.XS=224]="XS",TinyYolov2SizeType2[TinyYolov2SizeType2.SM=320]="SM",TinyYolov2SizeType2[TinyYolov2SizeType2.MD=416]="MD",TinyYolov2SizeType2[TinyYolov2SizeType2.LG=608]="LG"})(TinyYolov2SizeType||(TinyYolov2SizeType={}));var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tf39.tidy(()=>{let batchTensor=tf39.cast(input.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(tf39.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input,inputSize){return await this.forwardInput(await toNetInput(input),inputSize)}async detect(input,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input),out=await this.forwardInput(netInput,inputSize),out0=tf39.tidy(()=>tf39.unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tf39.tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?tf39.softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):tf39.scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,width2=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,height2=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-width2/2,y=ctY-height2/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+width2,y+height2),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max,curr)=>max.classScore>curr.classScore?max:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2=Object.assign({},{withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"]},withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0});super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}},tf41=__toModule(require_tfjs_esm()),tf40=__toModule(require_tfjs_esm());async function extractAllFacesAndComputeResults(parentResults,input,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input instanceof tf40.Tensor?await extractFaceTensors(input,faceBoxes):await extractFaces(input,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof tf40.Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input,options)=>nets.ssdMobilenetv1.locateFaces(input,options),tinyFaceDetector=(input,options)=>nets.tinyFaceDetector.locateFaces(input,options),tinyYolov23=(input,options)=>nets.tinyYolov2.locateFaces(input,options),detectFaceLandmarks=input=>nets.faceLandmark68Net.detectLandmarks(input),detectFaceLandmarksTiny=input=>nets.faceLandmark68TinyNet.detectLandmarks(input),computeFaceDescriptor=input=>nets.faceRecognitionNet.computeFaceDescriptor(input),recognizeFaceExpressions=input=>nets.faceExpressionNet.predictExpressions(input),predictAgeAndGender=input=>nets.ageGenderNet.predictAgeAndGender(input),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input){super();this.parentTask=parentTask;this.input=input}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input,options=new SsdMobilenetv1Options){super();this.input=input;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input2=>nets.tinyFaceDetector.locateFaces(input2,options):options instanceof SsdMobilenetv1Options?input2=>nets.ssdMobilenetv1.locateFaces(input2,options):options instanceof TinyYolov2Options?input2=>nets.tinyYolov2.locateFaces(input2,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input)}runAndExtendWithFaceDetections(){return new Promise(async res=>{let detections=await this.run();return res(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async res=>{let detection=await this.run();return res(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input,options)}function detectAllFaces(input,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input,options)}async function allFacesSsdMobilenetv1(input,minConfidence){return console.warn("allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input,forwardParams={}){return console.warn("allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count=1,createUniqueLabel=()=>`person ${count++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json){let labeledDescriptors=json.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var version="0.9.5",node=typeof process!="undefined",browser3=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version2={faceapi:version,node,browser:browser3};export{AgeGenderNet,BoundingBox,Box,ComposableTask,ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask,DetectAllFacesTask,DetectFaceLandmarksTaskBase,DetectFacesTaskBase,DetectSingleFaceLandmarksTask,DetectSingleFaceTask,Dimensions,FACE_EXPRESSION_LABELS,FaceDetection,FaceDetectionNet,FaceExpressionNet,FaceExpressions,FaceLandmark68Net,FaceLandmark68TinyNet,FaceLandmarkNet,FaceLandmarks,FaceLandmarks5,FaceLandmarks68,FaceMatch,FaceMatcher,FaceRecognitionNet,Gender,LabeledBox,LabeledFaceDescriptors,NetInput,NeuralNetwork,ObjectDetection,Point,PredictedBox,Rect,SsdMobilenetv1,SsdMobilenetv1Options,TinyFaceDetector,TinyFaceDetectorOptions,TinyYolov2,TinyYolov2Options,TinyYolov2SizeType,allFaces,allFacesSsdMobilenetv1,allFacesTinyYolov2,awaitMediaLoaded,bufferToImage,computeFaceDescriptor,createCanvas,createCanvasFromMedia,createFaceDetectionNet,createFaceRecognitionNet,createSsdMobilenetv1,createTinyFaceDetector,createTinyYolov2,detectAllFaces,detectFaceLandmarks,detectFaceLandmarksTiny,detectLandmarks,detectSingleFace,draw_exports as draw,env,euclideanDistance,extendWithAge,extendWithFaceDescriptor,extendWithFaceDetection,extendWithFaceExpressions,extendWithFaceLandmarks,extendWithGender,extractFaceTensors,extractFaces,fetchImage,fetchJson,fetchNetWeights,fetchOrThrow,getContext2dOrThrow,getMediaDimensions,imageTensorToCanvas,imageToSquare,inverseSigmoid,iou,isMediaElement,isMediaLoaded,isWithAge,isWithFaceDetection,isWithFaceExpressions,isWithFaceLandmarks,isWithGender,loadAgeGenderModel,loadFaceDetectionModel,loadFaceExpressionModel,loadFaceLandmarkModel,loadFaceLandmarkTinyModel,loadFaceRecognitionModel,loadSsdMobilenetv1Model,loadTinyFaceDetectorModel,loadTinyYolov2Model,loadWeightMap,locateFaces,matchDimensions,minBbox,nets,nonMaxSuppression,normalize,padToSquare,predictAgeAndGender,recognizeFaceExpressions,resizeResults,resolveInput,shuffleArray,sigmoid,ssdMobilenetv1,tf42 as tf,tinyFaceDetector,tinyYolov23 as tinyYolov2,toNetInput,utils_exports as utils,validateConfig,version2 as version}; +var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module);import*as dist_star from"@tensorflow/tfjs/dist/index.js";import*as tfjs_backend_wasm_star from"@tensorflow/tfjs-backend-wasm";var require_tfjs_esm=__commonJS(exports=>{__exportStar(exports,dist_star);__exportStar(exports,tfjs_backend_wasm_star)}),require_isNodejs=__commonJS((exports,module)=>{__export(exports,{isNodejs:()=>isNodejs3});function isNodejs3(){return typeof global=="object"&&!0&&typeof module!="undefined"&&typeof process!="undefined"&&!!process.version}}),tf42=__toModule(require_tfjs_esm()),draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range,round:()=>round});var tf=__toModule(require_tfjs_esm()),Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof tf.Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!==0}function isEven(num){return num%2===0}function round(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale2=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale2),Math.round(height*scale2))}function getCenterPoint(pts){return pts.reduce((sum,pt)=>sum.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range(num,start,step){return Array(num).fill(0).map((_,i)=>start+i*step)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min,x)=>xymaxmax({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}var tf2=__toModule(require_tfjs_esm());function normalize(x,meanRgb){return tf2.tidy(()=>{let[r,g,b]=meanRgb,avg_r=tf2.fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=tf2.fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=tf2.fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=tf2.concat([avg_r,avg_g,avg_b],3);return tf2.sub(x,avg_rgb)})}var tf3=__toModule(require_tfjs_esm());function padToSquare(imgTensor,isCenterImage=!1){return tf3.tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,tf3.fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>tf3.cast(t,"float32"));return tf3.concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array=inputArray.slice();for(let i=array.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array[i];array[i]=array[j],array[j]=x}return array}function sigmoid(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json){let descriptors=json.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return{...sourceObj,...extension}}function createBrowserEnv(){let fetch=window.fetch;if(!fetch)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer)=>err?reject(err):resolve(buffer))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch,...fileSystem}}function isBrowser(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env16){environment=env16}function initialize(){return isBrowser()?setEnv(createBrowserEnv()):isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env16){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env16;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env16.createCanvasElement||(()=>new Canvas),environment.createImageElement=env16.createImageElement||(()=>new Image),environment.ImageData=env16.ImageData||environment.ImageData,environment.Video=env16.Video||environment.Video,environment.fetch=env16.fetch||environment.fetch,environment.readFile=env16.readFile||environment.readFile}var env={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}var tf18=__toModule(require_tfjs_esm());function isMediaLoaded(media){let{Image,Video}=env.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input){let{Image,Video}=env.getEnv();return input instanceof Image?new Dimensions(input.naturalWidth,input.naturalHeight):input instanceof Video?new Dimensions(input.videoWidth,input.videoHeight):new Dimensions(input.width,input.height)}function createCanvas({width,height}){let{createCanvasElement}=env.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}var tf4=__toModule(require_tfjs_esm());async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tf4.tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await tf4.browser.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input){let{Image,Canvas,Video}=env.getEnv();return input instanceof Image||input instanceof Canvas||input instanceof Video}var tf5=__toModule(require_tfjs_esm());function imageToSquare(input,inputSize,centerImage=!1){let{Image,Canvas}=env.getEnv();if(!(input instanceof Image||input instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input),scale2=inputSize/Math.max(dims.height,dims.width),width=scale2*dims.width,height=scale2*dims.height,targetCanvas=createCanvas({width:inputSize,height:inputSize}),inputCanvas=input instanceof Canvas?input:createCanvasFromMedia(input),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input)){this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape;return}if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape.slice(1);return}let canvas=input instanceof env.getEnv().Canvas?input:createCanvasFromMedia(input);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tf5.tidy(()=>{let inputTensors=range(this.batchSize,0,1).map(batchIdx=>{let input=this.getInput(batchIdx);if(input instanceof tf5.Tensor){let imgTensor=isTensor4D(input)?input:input.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=tf5.image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input instanceof env.getEnv().Canvas)return tf5.browser.fromPixels(imageToSquare(input,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)}),batchTensor=tf5.stack(inputTensors.map(t=>tf5.cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input,i)=>{if(!isMediaElement(input)&&!isTensor3D(input)&&!isTensor4D(input))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input=>isMediaElement(input)&&awaitMediaLoaded(input))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input,detections){let{Canvas}=env.getEnv(),canvas=input;if(!(input instanceof Canvas)){let netInput=await toNetInput(input);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}var tf6=__toModule(require_tfjs_esm());async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tf6.tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>tf6.slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init){let{fetch}=env.getEnv(),res=await fetch(url,init);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}var tf7=__toModule(require_tfjs_esm());function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return tf7.io.loadWeights(manifest,modelBaseUri)}function matchDimensions(input,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input.width=width,input.height=height,{width,height}}var tf15=__toModule(require_tfjs_esm()),tf8=__toModule(require_tfjs_esm()),NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof tf8.Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof tf8.Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable})=>{let tensor2=tf8.tensor(variable.dataSync());variable.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights=tf8.io.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof tf8.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}},tf10=__toModule(require_tfjs_esm()),tf9=__toModule(require_tfjs_esm());function depthwiseSeparableConv(x,params,stride){return tf9.tidy(()=>{let out=tf9.separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=tf9.add(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=tf10.relu(tf10.add(out1,tf10.add(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,tf10.add(out3,out4))))})}var tf11=__toModule(require_tfjs_esm());function convLayer(x,params,padding="same",withRelu=!1){return tf11.tidy(()=>{let out=tf11.add(tf11.conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?tf11.relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}var tf12=__toModule(require_tfjs_esm());function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tf12.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf12.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}var tf13=__toModule(require_tfjs_esm());function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tf13.tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tf13.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var tf14=__toModule(require_tfjs_esm()),SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tf14.tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tf14.tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tf14.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tf15.tidy(()=>{let batchTensor=tf15.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf15.scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=tf15.avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}},tf17=__toModule(require_tfjs_esm()),tf16=__toModule(require_tfjs_esm());function fullyConnectedLayer(x,params){return tf16.tidy(()=>tf16.add(tf16.matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf17.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input){return tf18.tidy(()=>tf18.softmax(this.runNet(input)))}async forward(input){return this.forwardInput(await toNetInput(input))}async predictExpressions(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(tf18.unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return{...sourceObj,...extension}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round(exprLocal.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return{...sourceObj,...extension}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version="0.9.5",tf20=__toModule(require_tfjs_esm()),tf19=__toModule(require_tfjs_esm());function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return tf19.add(tf19.conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?tf19.relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=tf19.maxPool(out,[3,3],[2,2],"same"),out=tf19.add(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(tf19.relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv2,[1,1]),out=tf19.add(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tf19.tidy(()=>{let batchTensor=tf19.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf19.scalar(256)),out=tf19.relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=tf19.relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf20.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input,pooled=tf20.avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input){return tf20.tidy(()=>{let{age,gender}=this.runNet(input);return{age,gender:tf20.softmax(gender)}})}async forward(input){return this.forwardInput(await toNetInput(input))}async predictAgeAndGender(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),ages=tf20.unstack(out.age),genders=tf20.unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var tf21=__toModule(require_tfjs_esm()),FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale2=inputSize/Math.max(height,width);return{width:width*scale2,height:height*scale2}}),batchSize=inputDimensions.length;return tf21.tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>tf21.stack([tf21.fill([68],fillX,"float32"),tf21.fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding(batchIdx,(w,h)=>wgetPadding(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(tf21.stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input){return tf21.tidy(()=>{let out=this.runNet(input);return this.postProcess(out,input.inputSize,input.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input){return this.forwardInput(await toNetInput(input))}async detectLandmarks(input){let netInput=await toNetInput(input),landmarkTensors=tf21.tidy(()=>tf21.unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven(i)),yCoords=landmarksArray.filter((_,i)=>!isEven(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var tf22=__toModule(require_tfjs_esm());function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tf22.tidy(()=>{let batchTensor=tf22.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf22.scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=tf22.avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};var tf27=__toModule(require_tfjs_esm()),tf24=__toModule(require_tfjs_esm()),tf23=__toModule(require_tfjs_esm());function scale(x,params){return tf23.add(tf23.mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=tf24.conv2d(x,filters,strides,padding);return out=tf24.add(out,bias),out=scale(out,params.scale),withRelu?tf24.relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}var tf25=__toModule(require_tfjs_esm());function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tf25.tidy(()=>tf25.transpose(tf25.tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tf25.tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tf25.tensor1d(extractWeights(numWeights)),biases=tf25.tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale2=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale2}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tf25.tidy(()=>tf25.transpose(tf25.tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale2=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale2}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf26=__toModule(require_tfjs_esm());function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=tf26.add(out,x),out=tf26.relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=tf26.avgPool(x,2,2,"valid"),zeros2=tf26.zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=tf26.zeros(padShapeX);out=tf26.concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=tf26.zeros(padShapeY);out=tf26.concat([out,zerosH],2)}return pooled=isPad?tf26.concat([pooled,zeros2],3):pooled,out=tf26.add(pooled,out),out=tf26.relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tf27.tidy(()=>{let batchTensor=tf27.cast(input.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf27.scalar(256)),out=convDown(normalized,params.conv32_down);out=tf27.maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=tf27.matMul(globalAvg,params.fc);return fullyConnected})}async forward(input){return this.forwardInput(await toNetInput(input))}async computeFaceDescriptor(input){let netInput=await toNetInput(input),faceDescriptorTensors=tf27.tidy(()=>tf27.unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return{...sourceObj,...extension}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return{...sourceObj,...extension}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return{...sourceObj,...extension}}var tf34=__toModule(require_tfjs_esm()),tf28=__toModule(require_tfjs_esm());function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tf28.tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tf28.tensor1d(extractWeights(numChannels)),batch_norm_offset=tf28.tensor1d(extractWeights(numChannels)),batch_norm_mean=tf28.tensor1d(extractWeights(numChannels)),batch_norm_variance=tf28.tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tf28.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf28.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tf28.tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf30=__toModule(require_tfjs_esm()),tf29=__toModule(require_tfjs_esm());function pointwiseConvLayer(x,params,strides){return tf29.tidy(()=>{let out=tf29.conv2d(x,params.filters,strides,"same");return out=tf29.add(out,params.batch_norm_offset),tf29.clipByValue(out,0,6)})}var epsilon=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tf30.tidy(()=>{let out=tf30.depthwiseConv2d(x,params.filters,strides,"same");return out=tf30.batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon),tf30.clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tf30.tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression2(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}var tf31=__toModule(require_tfjs_esm());function getCenterCoordinatesAndSizesLayer(x){let vec=tf31.unstack(tf31.transpose(x,[1,0])),sizes=[tf31.sub(vec[2],vec[0]),tf31.sub(vec[3],vec[1])],centers=[tf31.add(vec[0],tf31.div(sizes[0],tf31.scalar(2))),tf31.add(vec[1],tf31.div(sizes[1],tf31.scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=tf31.unstack(tf31.transpose(x1,[1,0])),div0_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[2],tf31.scalar(5))),sizes[0]),tf31.scalar(2)),add0_out=tf31.add(tf31.mul(tf31.div(vec[0],tf31.scalar(10)),sizes[0]),centers[0]),div1_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[3],tf31.scalar(5))),sizes[1]),tf31.scalar(2)),add1_out=tf31.add(tf31.mul(tf31.div(vec[1],tf31.scalar(10)),sizes[1]),centers[1]);return tf31.transpose(tf31.stack([tf31.sub(add0_out,div0_out),tf31.sub(add1_out,div1_out),tf31.add(add0_out,div0_out),tf31.add(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tf31.tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(tf31.reshape(tf31.tile(params.extra_dim,[batchSize,1,1]),[-1,4]),tf31.reshape(boxPredictions,[-1,4]));boxes=tf31.reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=tf31.sigmoid(tf31.slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=tf31.slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=tf31.reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=tf31.unstack(boxes),scoresByBatch=tf31.unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}var tf33=__toModule(require_tfjs_esm()),tf32=__toModule(require_tfjs_esm());function boxPredictionLayer(x,params){return tf32.tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=tf32.reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=tf32.reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tf33.tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=tf33.concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=tf33.concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tf34.tidy(()=>{let batchTensor=tf34.cast(input.toBatchTensor(512,!1),"float32"),x=tf34.sub(tf34.mul(batchTensor,tf34.scalar(.007843137718737125)),tf34.scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input){return this.forwardInput(await toNetInput(input))}async locateFaces(input,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression2(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",tf39=__toModule(require_tfjs_esm()),isNumber=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber(a.x)&&isNumber(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}var tf36=__toModule(require_tfjs_esm()),tf35=__toModule(require_tfjs_esm());function leaky(x){return tf35.tidy(()=>{let min=tf35.mul(x,tf35.scalar(.10000000149011612));return tf35.add(tf35.relu(tf35.sub(x,min)),min)})}function convWithBatchNorm(x,params){return tf36.tidy(()=>{let out=tf36.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf36.conv2d(out,params.conv.filters,[1,1],"valid"),out=tf36.sub(out,params.bn.sub),out=tf36.mul(out,params.bn.truediv),out=tf36.add(out,params.conv.bias),leaky(out)})}var tf37=__toModule(require_tfjs_esm());function depthwiseSeparableConv3(x,params){return tf37.tidy(()=>{let out=tf37.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf37.separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=tf37.add(out,params.bias),leaky(out)})}var tf38=__toModule(require_tfjs_esm());function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub6=tf38.tensor1d(extractWeights(size)),truediv=tf38.tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub6,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub6=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub6,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tf39.tidy(()=>{let batchTensor=tf39.cast(input.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(tf39.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input,inputSize){return this.forwardInput(await toNetInput(input),inputSize)}async detect(input,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input),out=await this.forwardInput(netInput,inputSize),out0=tf39.tidy(()=>tf39.unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tf39.tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?tf39.softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):tf39.scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max,curr)=>max.classScore>curr.classScore?max:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}},tf41=__toModule(require_tfjs_esm()),tf40=__toModule(require_tfjs_esm());async function extractAllFacesAndComputeResults(parentResults,input,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input instanceof tf40.Tensor?await extractFaceTensors(input,faceBoxes):await extractFaces(input,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof tf40.Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input,options)=>nets.ssdMobilenetv1.locateFaces(input,options),tinyFaceDetector=(input,options)=>nets.tinyFaceDetector.locateFaces(input,options),tinyYolov23=(input,options)=>nets.tinyYolov2.locateFaces(input,options),detectFaceLandmarks=input=>nets.faceLandmark68Net.detectLandmarks(input),detectFaceLandmarksTiny=input=>nets.faceLandmark68TinyNet.detectLandmarks(input),computeFaceDescriptor=input=>nets.faceRecognitionNet.computeFaceDescriptor(input),recognizeFaceExpressions=input=>nets.faceExpressionNet.predictExpressions(input),predictAgeAndGender=input=>nets.ageGenderNet.predictAgeAndGender(input),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input){super();this.parentTask=parentTask;this.input=input}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input,options=new SsdMobilenetv1Options){super();this.input=input;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input2=>nets.tinyFaceDetector.locateFaces(input2,options):options instanceof SsdMobilenetv1Options?input2=>nets.ssdMobilenetv1.locateFaces(input2,options):options instanceof TinyYolov2Options?input2=>nets.tinyYolov2.locateFaces(input2,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input,options)}function detectAllFaces(input,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input,options)}async function allFacesSsdMobilenetv1(input,minConfidence){return detectAllFaces(input,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input,forwardParams={}){return detectAllFaces(input,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count=1,createUniqueLabel=()=>`person ${count++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json){let labeledDescriptors=json.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser3=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version2={faceapi:version,node,browser:browser3};export{AgeGenderNet,BoundingBox,Box,ComposableTask,ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask,DetectAllFacesTask,DetectFaceLandmarksTaskBase,DetectFacesTaskBase,DetectSingleFaceLandmarksTask,DetectSingleFaceTask,Dimensions,FACE_EXPRESSION_LABELS,FaceDetection,FaceDetectionNet,FaceExpressionNet,FaceExpressions,FaceLandmark68Net,FaceLandmark68TinyNet,FaceLandmarkNet,FaceLandmarks,FaceLandmarks5,FaceLandmarks68,FaceMatch,FaceMatcher,FaceRecognitionNet,Gender,LabeledBox,LabeledFaceDescriptors,NetInput,NeuralNetwork,ObjectDetection,Point,PredictedBox,Rect,SsdMobilenetv1,SsdMobilenetv1Options,TinyFaceDetector,TinyFaceDetectorOptions,TinyYolov2,TinyYolov2Options,allFaces,allFacesSsdMobilenetv1,allFacesTinyYolov2,awaitMediaLoaded,bufferToImage,computeFaceDescriptor,createCanvas,createCanvasFromMedia,createFaceDetectionNet,createFaceRecognitionNet,createSsdMobilenetv1,createTinyFaceDetector,createTinyYolov2,detectAllFaces,detectFaceLandmarks,detectFaceLandmarksTiny,detectLandmarks,detectSingleFace,draw_exports as draw,env,euclideanDistance,extendWithAge,extendWithFaceDescriptor,extendWithFaceDetection,extendWithFaceExpressions,extendWithFaceLandmarks,extendWithGender,extractFaceTensors,extractFaces,fetchImage,fetchJson,fetchNetWeights,fetchOrThrow,getContext2dOrThrow,getMediaDimensions,imageTensorToCanvas,imageToSquare,inverseSigmoid,iou,isMediaElement,isMediaLoaded,isWithAge,isWithFaceDetection,isWithFaceExpressions,isWithFaceLandmarks,isWithGender,loadAgeGenderModel,loadFaceDetectionModel,loadFaceExpressionModel,loadFaceLandmarkModel,loadFaceLandmarkTinyModel,loadFaceRecognitionModel,loadSsdMobilenetv1Model,loadTinyFaceDetectorModel,loadTinyYolov2Model,loadWeightMap,locateFaces,matchDimensions,minBbox,nets,nonMaxSuppression,normalize,padToSquare,predictAgeAndGender,recognizeFaceExpressions,resizeResults,resolveInput,shuffleArray,sigmoid,ssdMobilenetv1,tf42 as tf,tinyFaceDetector,tinyYolov23 as tinyYolov2,toNetInput,utils_exports as utils,validateConfig,version2 as version}; //# sourceMappingURL=face-api.esm-nobundle.js.map diff --git a/dist/face-api.esm-nobundle.js.map b/dist/face-api.esm-nobundle.js.map index afc6f79..da33377 100644 --- a/dist/face-api.esm-nobundle.js.map +++ b/dist/face-api.esm-nobundle.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/tfjs/tf-browser.js", "../src/env/isNodejs.ts", "../src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/utils/index.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/NetInput.ts", "../src/dom/imageToSquare.ts", "../src/dom/NetInput.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/dom/loadWeightMap.ts", "../src/common/getModelUris.ts", "../src/dom/loadWeightMap.ts", "../src/dom/matchDimensions.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/NeuralNetwork.ts", "../src/NeuralNetwork.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/depthwiseSeparableConv.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/types.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/xception/TinyXception.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/xception/TinyXception.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts", "../src/index.ts"], - "sourcesContent": ["// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\nexport * from '@tensorflow/tfjs/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n/*\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n*/\n", "export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "export * from './drawContour'\nexport * from './drawDetections'\nexport * from './drawFaceExpressions'\nexport * from './DrawBox'\nexport * from './DrawFaceLandmarks'\nexport * from './DrawTextField'", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false\n) {\n ctx.beginPath()\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx]\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(x, y)\n })\n\n if (isClosed) {\n const from = points[points.length - 1]\n const to = points[0]\n if (!from || !to) {\n return\n }\n\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(to.x, to.y)\n }\n\n ctx.stroke()\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n\n private _width: number\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`)\n }\n\n this._width = width\n this._height = height\n }\n\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x\n this._y = y\n }\n\n get x(): number { return this._x }\n get y(): number { return this._y }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y)\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y)\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y)\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y)\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y))\n }\n\n public magnitude(): number {\n return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2))\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y))\n }\n}", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber)\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`)\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)\n }\n }\n\n private _x: number\n private _y: number\n private _width: number\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber)\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber)\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`)\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top]\n\n Box.assertIsValidBox({ x, y, width, height }, 'Box.constructor', allowNegativeDimensions)\n\n this._x = x\n this._y = y\n this._width = width\n this._height = height\n }\n\n public get x(): number { return this._x }\n public get y(): number { return this._y }\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n public get left(): number { return this.x }\n public get top(): number { return this.y }\n public get right(): number { return this.x + this.width }\n public get bottom(): number { return this.y + this.height }\n public get area(): number { return this.width * this.height }\n public get topLeft(): Point { return new Point(this.left, this.top) }\n public get topRight(): Point { return new Point(this.right, this.top) }\n public get bottomLeft(): Point { return new Point(this.left, this.bottom) }\n public get bottomRight(): Point { return new Point(this.right, this.bottom) }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.round(val))\n return new Box({ x, y, width, height })\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.floor(val))\n return new Box({ x, y, width, height })\n }\n\n public toSquare(): Box {\n let { x, y, width, height } = this\n const diff = Math.abs(width - height)\n if (width < height) {\n x -= (diff / 2)\n width += diff\n }\n if (height < width) {\n y -= (diff / 2)\n height += diff\n }\n\n return new Box({ x, y, width, height })\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY\n })\n }\n\n public pad(padX: number, padY: number): Box {\n let [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY\n ]\n return new Box({ x, y, width, height })\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const { x, y, right, bottom } = this\n const clippedX = Math.max(x, 0)\n const clippedY = Math.max(y, 0)\n\n const newWidth = right - clippedX\n const newHeight = bottom - clippedY\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX)\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY)\n\n return (new Box({ x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight})).floor()\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this\n const x = this.x + sx\n const y = this.y + sy\n\n return new Box({ x, y, width, height })\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1\n const h = this.height + 1\n\n let dx = 1\n let dy = 1\n let edx = w\n let edy = h\n\n let x = this.left\n let y = this.top\n let ex = this.right\n let ey = this.bottom\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w\n ex = imageWidth\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h\n ey = imageHeight\n }\n if (x < 1) {\n edy = 2 - x\n x = 1\n }\n if (y < 1) {\n edy = 2 - y\n y = 1\n }\n\n return { dy, edy, dx, edx, y, ey, x, ex, w, h }\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height)\n }).toSquare().round()\n }\n}", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({ left, top, right, bottom }, allowNegativeDimensions)\n }\n}", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n private _classScore: number\n private _className: string\n private _box: Rect\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height)\n this._score = score\n this._classScore = classScore\n this._className = className\n this._box = new Box(relativeBox).rescale(this._imageDims)\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n public get className(): string { return this._className }\n public get box(): Box { return this._box }\n public get imageDims(): Dimensions { return this._imageDims }\n public get imageWidth(): number { return this.imageDims.width }\n public get imageHeight(): number { return this.imageDims.height }\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()) }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height}\n )\n }\n}", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions\n ) {\n super(score, score, '', relativeBox, imageDims)\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height)\n return new FaceDetection(score, relativeBox, imageDims)\n }\n}", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left))\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top))\n const interSection = width * height\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area)\n}", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map(pt => pt.x)\n const ys = pts.map(pt => pt.y)\n const minX = xs.reduce((min, x) => x < min ? x : min, Infinity)\n const minY = ys.reduce((min, y) => y < min ? y : min, Infinity)\n const maxX = xs.reduce((max, x) => max < x ? x : max, 0)\n const maxY = ys.reduce((max, y) => max < y ? y : max, 0)\n\n return new BoundingBox(minX, minY, maxX, maxY)\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true\n): number[] {\n\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map(c => c.boxIndex)\n\n const pick: number[] = []\n\n while(indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number\n pick.push(curr)\n\n const indices = indicesSortedByScore\n\n const outputs: number[] = []\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i]\n\n const currBox = boxes[curr]\n const idxBox = boxes[idx]\n\n outputs.push(iou(currBox, idxBox, isIOU))\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold\n )\n }\n\n return pick\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32')\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32')\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32')\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3)\n\n return tf.sub(x, avg_rgb)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n\n const [height, width] = imgTensor.shape.slice(1)\n if (height === width) {\n return imgTensor\n }\n\n const dimDiff = Math.abs(height - width)\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1))\n const paddingAxis = height > width ? 2 : 1\n\n const createPaddingTensor = (paddingAmount: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice()\n paddingTensorShape[paddingAxis] = paddingAmount\n return tf.fill(paddingTensorShape, 0, 'float32')\n }\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount)\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number)\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend\n ]\n .filter(t => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[]\n return tf.concat(tensorsToStack, paddingAxis)\n\n })\n}", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice()\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n const x = array[i]\n array[i] = array[j]\n array[j] = x\n }\n return array\n}", "export * from './iou'\nexport * from './minBbox'\nexport * from './nonMaxSuppression'\nexport * from './normalize'\nexport * from './padToSquare'\nexport * from './shuffleArray'\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x))\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x))\n}", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({ x, y, width, height }, allowNegativeDimensions)\n }\n}", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5\nconst relY = 0.43\nconst relScale = 0.45\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n protected _positions: Point[]\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0)\n ) {\n const { width, height } = imgDims\n this._imgDims = new Dimensions(width, height)\n this._shift = shift\n this._positions = relativeFaceLandmarkPositions.map(\n pt => pt.mul(new Point(width, height)).add(shift)\n )\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y) }\n public get imageWidth(): number { return this._imgDims.width }\n public get imageHeight(): number { return this._imgDims.height }\n public get positions(): Point[] { return this._positions }\n public get relativePositions(): Point[] {\n return this._positions.map(\n pt => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight))\n )\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height }\n )\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y)\n )\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y)\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { }\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection)\n\n return this.shiftBy(box.x, box.y).align(null, options)\n }\n\n const { useDlibAlignment, minBoxPadding } = Object.assign({}, { useDlibAlignment: false, minBoxPadding: 0.2 }, options)\n\n if (useDlibAlignment) {\n return this.alignDlib()\n }\n\n return this.alignMinBbox(minBoxPadding)\n }\n\n private alignDlib(): Box {\n\n const centers = this.getRefPointsForAlignment()\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude()\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2\n\n const size = Math.floor(eyeToMouthDist / relScale)\n\n const refPoint = getCenterPoint(centers)\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)))\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)))\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y))\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions)\n return box.pad(box.width * padding, box.height * padding)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class')\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]])\n ]\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17)\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22)\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27)\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36)\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42)\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48)\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth()\n ].map(getCenterPoint)\n }\n}", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label\n this._distance = distance\n }\n\n public get label(): string { return this._label }\n public get distance(): number { return this._distance }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`\n }\n}", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee)\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`)\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box)\n this._label = label\n }\n\n public get label(): number { return this._label }\n\n}", "export class LabeledFaceDescriptors {\n private _label: string\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string')\n }\n\n if (!Array.isArray(descriptors) || descriptors.some(desc => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array')\n }\n\n this._label = label\n this._descriptors = descriptors\n }\n\n public get label(): string { return this._label }\n public get descriptors(): Float32Array[] { return this._descriptors }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d))\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => {\n return new Float32Array(d);\n });\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n\n}", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee)\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)\n }\n }\n\n private _score: number\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label)\n this._score = score\n this._classScore = classScore\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n\n}", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj['detection'] instanceof FaceDetection\n}\n\nexport function extendWithFaceDetection<\n TSource\n> (\n sourceObj: TSource,\n detection: FaceDetection\n): WithFaceDetection {\n\n const extension = { detection }\n return Object.assign({}, sourceObj, extension)\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n\n const fetch = window['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for browser environment')\n }\n\n const readFile = function() {\n throw new Error('readFile - filesystem not available for browser environment')\n }\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D: CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData: ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile\n }\n}", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n\n let requireFsError = ''\n\n if (!fs) {\n try {\n fs = require('fs')\n } catch (err) {\n requireFsError = err.toString()\n }\n }\n\n const readFile = fs\n ? function(filePath: string) {\n return new Promise((res, rej) => {\n fs.readFile(filePath, function(err: any, buffer: Buffer) {\n return err ? rej(err) : res(buffer)\n })\n })\n }\n : function() {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)\n }\n\n return {\n readFile\n }\n}", "import { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n\n const Canvas = global['Canvas'] || global['HTMLCanvasElement']\n const Image = global['Image'] || global['HTMLImageElement']\n\n const createCanvasElement = function() {\n if (Canvas) {\n return new Canvas()\n }\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment')\n }\n\n const createImageElement = function() {\n if (Image) {\n return new Image()\n }\n throw new Error('createImageElement - missing Image implementation for nodejs environment')\n }\n\n const fetch = global['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for nodejs environment')\n }\n\n const fileSystem = createFileSystem()\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global['CanvasRenderingContext2D'] || class {},\n Image: Image || class {},\n ImageData: global['ImageData'] || class {},\n Video: global['HTMLVideoElement'] || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem\n }\n}", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined'\n}", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()')\n }\n return environment\n}\n\nfunction setEnv(env: Environment) {\n environment = env\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) {\n return setEnv(createBrowserEnv())\n }\n if (isNodejs()) {\n return setEnv(createNodejsEnv())\n }\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize()\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()')\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env\n environment.Canvas = Canvas\n environment.Image = Image\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas())\n environment.createImageElement = env.createImageElement || (() => new Image())\n\n environment.ImageData = env.ImageData || environment.ImageData\n environment.Video = env.Video || environment.Video\n environment.fetch = env.fetch || environment.fetch\n environment.readFile = env.readFile || environment.readFile\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs\n}\n\ninitialize()\n\nexport * from './types'\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg)\n }\n return arg\n}", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n\n const { Canvas, CanvasRenderingContext2D } = env.getEnv()\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg\n }\n\n const canvas = resolveInput(canvasArg)\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas')\n }\n\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null')\n }\n\n return ctx\n}", "import { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\nexport enum AnchorPosition {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n public backgroundColor: string\n public fontColor: string\n public fontSize: number\n public fontStyle: string\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const { anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding } = options\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)'\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)'\n this.fontSize = fontSize || 14\n this.fontStyle = fontStyle || 'Georgia'\n this.padding = padding || 4\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n public anchor : IPoint\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {}\n ) {\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text)\n this.anchor = anchor\n this.options = new DrawTextFieldOptions(options)\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options\n return this.text.map(l => ctx.measureText(l).width).reduce((w0, w1) => w0 < w1 ? w1 : w0, 0) + (2 * padding)\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options\n return this.text.length * fontSize + (2 * padding)\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT\n\n const textFieldWidth = this.measureWidth(ctx)\n const textFieldHeight = this.measureHeight()\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x)\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0)\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0)\n return { x: newX, y: newY }\n }\n return { x, y }\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg)\n const ctx = getContext2dOrThrow(canvas)\n\n const { backgroundColor, fontColor, fontSize, fontStyle, padding } = this.options\n\n ctx.font = `${fontSize}px ${fontStyle}`\n const maxTextWidth = this.measureWidth(ctx)\n const textHeight = this.measureHeight()\n\n ctx.fillStyle = backgroundColor\n const upperLeft = this.getUpperLeft(ctx, canvas)\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight)\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x\n const y = padding + upperLeft.y + ((i + 1) * fontSize)\n ctx.fillText(textLine, x, y)\n })\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions } from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n public lineWidth: number\n public drawLabelOptions: DrawTextFieldOptions\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const { boxColor, lineWidth, label, drawLabelOptions } = options\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)'\n this.lineWidth = lineWidth || 2\n this.label = label\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor\n }\n this.drawLabelOptions = new DrawTextFieldOptions(Object.assign({}, defaultDrawLabelOptions, drawLabelOptions))\n }\n}\n\nexport class DrawBox {\n public box: Box\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {}\n ) {\n this.box = new Box(box)\n this.options = new DrawBoxOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { boxColor, lineWidth } = this.options\n\n const { x, y, width, height } = this.box\n ctx.strokeStyle = boxColor\n ctx.lineWidth = lineWidth\n ctx.strokeRect(x, y, width, height)\n\n const { label } = this.options\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg)\n }\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections]\n\n detectionsArray.forEach(det => {\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined)\n\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det))\n\n const label = score ? `${round(score)}` : undefined\n new DrawBox(box, { label }).draw(canvasArg)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor)\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)))\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async t => {\n const data = await t.data()\n t.dispose()\n return data\n }))\n out.dispose()\n\n const predictionsByBatch = probabilitesByBatch\n .map(probabilites => new FaceExpressions(probabilites as Float32Array))\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n\n protected getClassifierChannelsOut(): number {\n return 7\n }\n}", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n\n const { Image, Video } = env.getEnv()\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3)\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null)\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n resolve(e)\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n reject(e)\n }\n\n media.addEventListener('load', onLoad)\n media.addEventListener('error', onError)\n })\n}", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) {\n return reject('bufferToImage - expected buf to be of type: Blob')\n }\n\n const reader = new FileReader()\n reader.onload = () => {\n if (typeof reader.result !== 'string') {\n return reject('bufferToImage - expected reader.result to be a string, in onload')\n }\n\n const img = env.getEnv().createImageElement()\n img.onload = () => resolve(img)\n img.onerror = reject\n img.src = reader.result\n }\n reader.onerror = reject\n reader.readAsDataURL(buf)\n })\n}", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n\n const { Image, Video } = env.getEnv()\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight)\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight)\n }\n return new Dimensions(input.width, input.height)\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n\n const { createCanvasElement } = env.getEnv()\n const canvas = createCanvasElement()\n canvas.width = width\n canvas.height = height\n return canvas\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n\n const { ImageData } = env.getEnv()\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet')\n }\n\n const { width, height } = dims || getMediaDimensions(media)\n const canvas = createCanvas({ width, height })\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0)\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height)\n }\n return canvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement\n): Promise {\n\n const targetCanvas = canvas || env.getEnv().createCanvasElement()\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0)\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt())\n await tf.browser.toPixels(imgTensor3D, targetCanvas)\n\n imgTensor3D.dispose()\n\n return targetCanvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement\n): Promise {\n\n const targetCanvas = canvas || env.getEnv().createCanvasElement()\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0)\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt())\n await tf.browser.toPixels(imgTensor3D, targetCanvas)\n\n imgTensor3D.dispose()\n\n return targetCanvas\n}", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n\n const { Image, Canvas, Video } = env.getEnv()\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport { computeReshapedDimensions, isTensor3D, isTensor4D, range } from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n private _canvases: HTMLCanvasElement[] = []\n private _batchSize: number\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`)\n }\n\n this._treatAsBatchInput = treatAsBatchInput\n this._batchSize = inputs.length\n\n inputs.forEach((input, idx) => {\n\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = input.shape\n return\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0]\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = (input as any).shape.slice(1)\n return\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input)\n this._canvases[idx] = canvas\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3]\n })\n }\n\n public get imageTensors(): Array {\n return this._imageTensors\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput\n }\n\n public get batchSize(): number {\n return this._batchSize\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx)\n )\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx]\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx]\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0]\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1]\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet')\n }\n\n const width = this.getInputWidth(batchIdx)\n const height = this.getInputHeight(batchIdx)\n return computeReshapedDimensions({ width, height }, this.inputSize)\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n\n this._inputSize = inputSize\n\n return tf.tidy(() => {\n\n const inputTensors = range(this.batchSize, 0, 1).map(batchIdx => {\n const input = this.getInput(batchIdx)\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims()\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs)\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize])\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3)\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs))\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)\n })\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map(t => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3)\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n \n return batchTensor\n })\n }\n}", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n\n const { Image, Canvas } = env.getEnv()\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement')\n }\n\n const dims = getMediaDimensions(input)\n const scale = inputSize / Math.max(dims.height, dims.width)\n const width = scale * dims.width\n const height = scale * dims.height\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize })\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input)\n\n const offset = Math.abs(width - height) / 2\n const dx = centerImage && width < height ? offset : 0\n const dy = centerImage && height < width ? offset : 0\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height)\n\n return targetCanvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport { computeReshapedDimensions, isTensor3D, isTensor4D, range } from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n private _canvases: HTMLCanvasElement[] = []\n private _batchSize: number\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`)\n }\n\n this._treatAsBatchInput = treatAsBatchInput\n this._batchSize = inputs.length\n\n inputs.forEach((input, idx) => {\n\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = input.shape\n return\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0]\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = (input as any).shape.slice(1)\n return\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input)\n this._canvases[idx] = canvas\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3]\n })\n }\n\n public get imageTensors(): Array {\n return this._imageTensors\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput\n }\n\n public get batchSize(): number {\n return this._batchSize\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx)\n )\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx]\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx]\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0]\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1]\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet')\n }\n\n const width = this.getInputWidth(batchIdx)\n const height = this.getInputHeight(batchIdx)\n return computeReshapedDimensions({ width, height }, this.inputSize)\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n\n this._inputSize = inputSize\n\n return tf.tidy(() => {\n\n const inputTensors = range(this.batchSize, 0, 1).map(batchIdx => {\n const input = this.getInput(batchIdx)\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims()\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs)\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize])\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3)\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs))\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)\n })\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map(t => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3)\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n \n return batchTensor\n })\n }\n}", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs\n }\n\n let inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs]\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input')\n }\n\n const getIdxHint = (idx: number) => Array.isArray(inputs) ? ` at input index ${idx}:` : ''\n\n const inputArray = inputArgArray.map(resolveInput)\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`)\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`)\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0]\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n }\n })\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map(input => isMediaElement(input) && awaitMediaLoaded(input))\n )\n\n return new NetInput(inputArray, Array.isArray(inputs))\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array\n): Promise {\n\n const { Canvas } = env.getEnv()\n\n let canvas = input as HTMLCanvasElement\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input)\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported')\n }\n\n const tensorOrCanvas = netInput.getInput(0)\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas)\n }\n\n const ctx = getContext2dOrThrow(canvas)\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det\n )\n .map(box => box.clipAtImageBorders(canvas.width, canvas.height))\n\n return boxes.map(({ x, y, width, height }) => {\n const faceImg = createCanvas({ width, height })\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0)\n return faceImg\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array\n): Promise {\n\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D')\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported')\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0)\n\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det\n )\n .map(box => box.clipAtImageBorders(imgWidth, imgHeight))\n\n const faceTensors = boxes.map(({ x, y, width, height }) =>\n tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels])\n )\n\n return faceTensors\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array\n): Promise {\n\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D')\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported')\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0)\n\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det\n )\n .map(box => box.clipAtImageBorders(imgWidth, imgHeight))\n\n const faceTensors = boxes.map(({ x, y, width, height }) =>\n tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels])\n )\n\n return faceTensors\n })\n}", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n init?: RequestInit\n): Promise {\n\n const fetch = env.getEnv().fetch\n const res = await fetch(url, init)\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`)\n }\n return res\n}", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri)\n const blob = await (res).blob()\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`)\n }\n return bufferToImage(blob)\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json()\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer())\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName)\n let manifest = await fetchJson(manifestUri)\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri)\n}", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename\n }\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`\n }\n }\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter(s => s)\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/')\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName)\n let manifest = await fetchJson(manifestUri)\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri)\n}", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference\n input.width = width\n input.height = height\n return { width, height }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('FaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock4(normalized, params.dense0, true)\n out = denseBlock4(out, params.dense1)\n out = denseBlock4(out, params.dense2)\n out = denseBlock4(out, params.dense3)\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n })\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number]\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same')\n out = tf.add(out, params.bias)\n return out\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n })\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias\n ) as tf.Tensor4D\n\n return withRelu ? tf.relu(out) : out\n })\n}", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach(path => {\n if (!paramMappings.some(pm => pm.originalPath === path)) {\n weightMap[path].dispose()\n }\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): FCParams {\n\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut])\n const fc_bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return {\n weights: fc_weights,\n bias: fc_bias\n }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1])\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut])\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n\nexport function loadSeparableConvParamsFactory(\n extractWeightEntry: (originalPath: string, paramRank: number) => T\n) {\n\n return function (prefix: string): SeparableConvParams {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4)\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n constructor(\n public depthwise_filter: tf.Tensor4D,\n public pointwise_filter: tf.Tensor4D,\n public bias: tf.Tensor1D\n ) {}\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1])\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut])\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n\nexport function loadSeparableConvParamsFactory(\n extractWeightEntry: (originalPath: string, paramRank: number) => T\n) {\n\n return function (prefix: string): SeparableConvParams {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4)\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n return function (originalPath: string, paramRank: number, mappedPath?: string): T {\n const tensor = weightMap[originalPath]\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`)\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath }\n )\n\n return tensor\n }\n\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights)\n remainingWeights = remainingWeights.slice(numWeights)\n return ret\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights\n }\n\n return {\n extractWeights,\n getRemainingWeights\n }\n}", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`)\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`)\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer)\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock4Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2')\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2, dense3 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return function(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return { filters, bias }\n }\n}", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock4Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('FaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock4(normalized, params.dense0, true)\n out = denseBlock4(out, params.dense1)\n out = denseBlock4(out, params.dense2)\n out = denseBlock4(out, params.dense3)\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name)\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract getClassifierChannelsIn(): number\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut())\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const cIn = this.getClassifierChannelsIn()\n const cOut = this.getClassifierChannelsOut()\n const classifierWeightSize = (cOut * cIn ) + cOut\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams\n): tf.Tensor2D {\n return tf.tidy(() =>\n tf.add(\n tf.matMul(x, params.weights),\n params.bias\n )\n )\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: extractFcParams('fc')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n\n const featureExtractorMap: tf.NamedTensorMap = {}\n const classifierMap: tf.NamedTensorMap = {}\n\n Object.keys(weightMap).forEach(key => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap\n map[key] = weightMap[key]\n })\n\n return { featureExtractorMap, classifierMap }\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name)\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract getClassifierChannelsIn(): number\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut())\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const cIn = this.getClassifierChannelsIn()\n const cOut = this.getClassifierChannelsOut()\n const classifierWeightSize = (cOut * cIn ) + cOut\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised']\n\nexport class FaceExpressions {\n public neutral: number\n public happy: number\n public sad: number\n public angry: number\n public fearful: number\n public disgusted: number\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`)\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx]\n })\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map(expression => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor)\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)))\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async t => {\n const data = await t.data()\n t.dispose()\n return data\n }))\n out.dispose()\n\n const predictionsByBatch = probabilitesByBatch\n .map(probabilites => new FaceExpressions(probabilites as Float32Array))\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n\n protected getClassifierChannelsOut(): number {\n return 7\n }\n}", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj['expressions'] instanceof FaceExpressions\n}\n\nexport function extendWithFaceExpressions<\n TSource\n> (\n sourceObj: TSource,\n expressions: FaceExpressions\n): WithFaceExpressions {\n\n const extension = { expressions }\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions]\n\n faceExpressionsArray.forEach(e => {\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined)\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof')\n }\n\n const sorted = expr.asSortedArray()\n const resultsToDisplay = sorted.filter(expr => expr.probability > minConfidence)\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0))\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map(expr => `${expr.expression} (${round(expr.probability)})`),\n anchor\n )\n drawTextField.draw(canvasArg)\n })\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n}\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n && obj['landmarks'] instanceof FaceLandmarks\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n && obj['alignedRect'] instanceof FaceDetection\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> (\n sourceObj: TSource,\n unshiftedLandmarks: TFaceLandmarks\n): WithFaceLandmarks {\n\n const { box: shift } = sourceObj.detection\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y)\n\n const rect = landmarks.align()\n const { imageDims } = sourceObj.detection\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims)\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect\n }\n\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n public drawPoints: boolean\n public lineWidth: number\n public pointSize: number\n public lineColor: string\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const { drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor } = options\n this.drawLines = drawLines\n this.drawPoints = drawPoints\n this.lineWidth = lineWidth || 1\n this.pointSize = pointSize || 2\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)'\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)'\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {}\n ) {\n this.faceLandmarks = faceLandmarks\n this.options = new DrawFaceLandmarksOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor } = this.options\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor\n ctx.lineWidth = lineWidth\n drawContour(ctx, this.faceLandmarks.getJawOutline())\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow())\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow())\n drawContour(ctx, this.faceLandmarks.getNose())\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true)\n drawContour(ctx, this.faceLandmarks.getRightEye(), true)\n drawContour(ctx, this.faceLandmarks.getMouth(), true)\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor\n ctx.fillStyle = pointColor\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath()\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI)\n ctx.fill()\n }\n this.faceLandmarks.positions.forEach(drawPoint)\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks]\n faceLandmarksArray.forEach(f => {\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined)\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof')\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { AgeAndGenderPrediction, Gender, NetOutput, NetParams } from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet')\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1)\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D()\n const gender = fullyConnectedLayer(pooled, params.fc.gender)\n return { age, gender }\n })\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input)\n return { age, gender: tf.softmax(gender) }\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n\n const ages = tf.unstack(out.age)\n const genders = tf.unstack(out.gender)\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i]\n }))\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0]\n const probMale = (await genderTensor.data())[0]\n const isMale = probMale > 0.5\n const gender = isMale ? Gender.MALE : Gender.FEMALE\n const genderProbability = isMale ? probMale : (1 - probMale)\n\n ageTensor.dispose()\n genderTensor.dispose()\n return { age, gender, genderProbability }\n })\n )\n out.age.dispose()\n out.gender.dispose()\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model'\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights)\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2)\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias)\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = tf.maxPool(out, [3, 3], [2, 2], 'same')\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]))\n return out\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1])\n out = tf.add(out, x)\n return out\n}\n\nexport class TinyXception extends NeuralNetwork {\n\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception')\n this._numMainBlocks = numMainBlocks\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyXception - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]))\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false)\n out = reductionBlock(out, params.entry_flow.reduction_block_1)\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`])\n })\n\n out = reductionBlock(out, params.exit_flow.reduction_block)\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]))\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks)\n }\n}", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = loadParamsFactory(weightMap, paramMappings)\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias)\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = tf.maxPool(out, [3, 3], [2, 2], 'same')\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]))\n return out\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1])\n out = tf.add(out, x)\n return out\n}\n\nexport class TinyXception extends NeuralNetwork {\n\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception')\n this._numMainBlocks = numMainBlocks\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyXception - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]))\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false)\n out = reductionBlock(out, params.entry_flow.reduction_block_1)\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`])\n })\n\n out = reductionBlock(out, params.exit_flow.reduction_block)\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]))\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks)\n }\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const age = extractFCParams(512, 1, 'fc/age')\n const gender = extractFCParams(512, 2, 'fc/gender')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport enum Gender {\n FEMALE = 'female',\n MALE = 'male'\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { AgeAndGenderPrediction, Gender, NetOutput, NetParams } from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet')\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1)\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D()\n const gender = fullyConnectedLayer(pooled, params.fc.gender)\n return { age, gender }\n })\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input)\n return { age, gender: tf.softmax(gender) }\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n\n const ages = tf.unstack(out.age)\n const genders = tf.unstack(out.gender)\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i]\n }))\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0]\n const probMale = (await genderTensor.data())[0]\n const isMale = probMale > 0.5\n const gender = isMale ? Gender.MALE : Gender.FEMALE\n const genderProbability = isMale ? probMale : (1 - probMale)\n\n ageTensor.dispose()\n genderTensor.dispose()\n return { age, gender, genderProbability }\n })\n )\n out.age.dispose()\n out.gender.dispose()\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model'\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights)\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2)\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width)\n return {\n width: width * scale,\n height: height * scale\n }\n })\n\n const batchSize = inputDimensions.length\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) =>\n tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D()\n\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx]\n return cond(width, height) ? Math.abs(width - height) / 2 : 0\n }\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h)\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w)\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx)\n )\n )))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height\n )\n )))\n\n return landmarkTensors as tf.Tensor2D\n })\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input)\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width }))\n )\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data())\n const xCoords = landmarksArray.filter((_, i) => isEven(i))\n const yCoords = landmarksArray.filter((_, i) => !isEven(i))\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width : netInput.getInputWidth(batchIdx),\n }\n )\n }\n ))\n\n landmarkTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width)\n return {\n width: width * scale,\n height: height * scale\n }\n })\n\n const batchSize = inputDimensions.length\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) =>\n tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D()\n\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx]\n return cond(width, height) ? Math.abs(width - height) / 2 : 0\n }\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h)\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w)\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx)\n )\n )))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height\n )\n )))\n\n return landmarkTensors as tf.Tensor2D\n })\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input)\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width }))\n )\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data())\n const xCoords = landmarksArray.filter((_, i) => isEven(i))\n const yCoords = landmarksArray.filter((_, i) => !isEven(i))\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width : netInput.getInputWidth(batchIdx),\n }\n )\n }\n ))\n\n landmarkTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136\n }\n}", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('TinyFaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock3(normalized, params.dense0, true)\n out = denseBlock3(out, params.dense1)\n out = denseBlock3(out, params.dense2)\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock3Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\n\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock3Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('TinyFaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock3(normalized, params.dense0, true)\n out = denseBlock3(out, params.dense1)\n out = denseBlock3(out, params.dense2)\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights)\n }\n}", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 128\n }\n}", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n\n constructor() {\n super('FaceRecognitionNet')\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = convDown(normalized, params.conv32_down)\n out = tf.maxPool(out, 3, 2, 'valid')\n\n out = residual(out, params.conv32_1)\n out = residual(out, params.conv32_2)\n out = residual(out, params.conv32_3)\n\n out = residualDown(out, params.conv64_down)\n out = residual(out, params.conv64_1)\n out = residual(out, params.conv64_2)\n out = residual(out, params.conv64_3)\n\n out = residualDown(out, params.conv128_down)\n out = residual(out, params.conv128_1)\n out = residual(out, params.conv128_2)\n\n out = residualDown(out, params.conv256_down)\n out = residual(out, params.conv256_1)\n out = residual(out, params.conv256_2)\n out = residualDown(out, params.conv256_down_out)\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D\n const fullyConnected = tf.matMul(globalAvg, params.fc)\n\n return fullyConnected\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n t => t.data()\n )) as Float32Array[]\n\n faceDescriptorTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same'\n): tf.Tensor4D {\n const { filters, bias } = params.conv\n\n let out = tf.conv2d(x, filters, strides, padding)\n out = tf.add(out, bias)\n out = scale(out, params.scale)\n return withRelu ? tf.relu(out) : out\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true)\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false)\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid')\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases)\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same'\n): tf.Tensor4D {\n const { filters, bias } = params.conv\n\n let out = tf.conv2d(x, filters, strides, padding)\n out = tf.add(out, bias)\n out = scale(out, params.scale)\n return withRelu ? tf.relu(out) : out\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true)\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false)\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid')\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping } from '../common/index';\nimport { isFloat } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues)\n const depth = weights.length / (numFilters * filterSize * filterSize)\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`)\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0]\n )\n )\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize)\n const bias = tf.tensor1d(extractWeights(numFilters))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n\n const weights = tf.tensor1d(extractWeights(numWeights))\n const biases = tf.tensor1d(extractWeights(numWeights))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` }\n )\n\n return {\n weights,\n biases\n }\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvLayerParams {\n\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`)\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`)\n\n return { conv, scale }\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false\n ): ResidualLayerParams {\n\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`)\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`)\n\n return { conv1, conv2 }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down')\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1')\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2')\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3')\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true)\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1')\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2')\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3')\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true)\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1')\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2')\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true)\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1')\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2')\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out')\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0])\n )\n paramMappings.push({ paramPath: `fc` })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping } from '../common/index';\nimport { isFloat } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues)\n const depth = weights.length / (numFilters * filterSize * filterSize)\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`)\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0]\n )\n )\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize)\n const bias = tf.tensor1d(extractWeights(numFilters))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n\n const weights = tf.tensor1d(extractWeights(numWeights))\n const biases = tf.tensor1d(extractWeights(numWeights))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` }\n )\n\n return {\n weights,\n biases\n }\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvLayerParams {\n\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`)\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`)\n\n return { conv, scale }\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false\n ): ResidualLayerParams {\n\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`)\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`)\n\n return { conv1, conv2 }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down')\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1')\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2')\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3')\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true)\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1')\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2')\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3')\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true)\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1')\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2')\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true)\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1')\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2')\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out')\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0])\n )\n paramMappings.push({ paramPath: `fc` })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1)\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1)\n\n return { weights, biases }\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1)\n const scale = extractScaleLayerParams(prefix)\n\n return { conv: { filters, bias }, scale }\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`)\n }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const conv32_down = extractConvLayerParams('conv32_down')\n const conv32_1 = extractResidualLayerParams('conv32_1')\n const conv32_2 = extractResidualLayerParams('conv32_2')\n const conv32_3 = extractResidualLayerParams('conv32_3')\n\n const conv64_down = extractResidualLayerParams('conv64_down')\n const conv64_1 = extractResidualLayerParams('conv64_1')\n const conv64_2 = extractResidualLayerParams('conv64_2')\n const conv64_3 = extractResidualLayerParams('conv64_3')\n\n const conv128_down = extractResidualLayerParams('conv128_down')\n const conv128_1 = extractResidualLayerParams('conv128_1')\n const conv128_2 = extractResidualLayerParams('conv128_2')\n\n const conv256_down = extractResidualLayerParams('conv256_down')\n const conv256_1 = extractResidualLayerParams('conv256_1')\n const conv256_2 = extractResidualLayerParams('conv256_2')\n const conv256_down_out = extractResidualLayerParams('conv256_down_out')\n\n const fc = weightMap['fc']\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' })\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n out = tf.add(out, x)\n out = tf.relu(out)\n return out\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D\n const zeros = tf.zeros(pooled.shape)\n const isPad = pooled.shape[3] !== out.shape[3]\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number]\n padShapeX[1] = 1\n const zerosW = tf.zeros(padShapeX)\n out = tf.concat([out, zerosW], 1)\n\n const padShapeY = [...out.shape] as [number, number, number, number]\n padShapeY[2] = 1\n const zerosH = tf.zeros(padShapeY)\n out = tf.concat([out, zerosH], 2)\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled\n out = tf.add(pooled, out) as tf.Tensor4D\n\n out = tf.relu(out)\n return out\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n out = tf.add(out, x)\n out = tf.relu(out)\n return out\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D\n const zeros = tf.zeros(pooled.shape)\n const isPad = pooled.shape[3] !== out.shape[3]\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number]\n padShapeX[1] = 1\n const zerosW = tf.zeros(padShapeX)\n out = tf.concat([out, zerosW], 1)\n\n const padShapeY = [...out.shape] as [number, number, number, number]\n padShapeY[2] = 1\n const zerosH = tf.zeros(padShapeY)\n out = tf.concat([out, zerosH], 2)\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled\n out = tf.add(pooled, out) as tf.Tensor4D\n\n out = tf.relu(out)\n return out\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n\n constructor() {\n super('FaceRecognitionNet')\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = convDown(normalized, params.conv32_down)\n out = tf.maxPool(out, 3, 2, 'valid')\n\n out = residual(out, params.conv32_1)\n out = residual(out, params.conv32_2)\n out = residual(out, params.conv32_3)\n\n out = residualDown(out, params.conv64_down)\n out = residual(out, params.conv64_1)\n out = residual(out, params.conv64_2)\n out = residual(out, params.conv64_3)\n\n out = residualDown(out, params.conv128_down)\n out = residual(out, params.conv128_1)\n out = residual(out, params.conv128_2)\n\n out = residualDown(out, params.conv256_down)\n out = residual(out, params.conv256_1)\n out = residual(out, params.conv256_2)\n out = residualDown(out, params.conv256_down_out)\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D\n const fullyConnected = tf.matMul(globalAvg, params.fc)\n\n return fullyConnected\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n t => t.data()\n )) as Float32Array[]\n\n faceDescriptorTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet()\n net.extractWeights(weights)\n return net\n}", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n> (\n sourceObj: TSource,\n descriptor: Float32Array\n): WithFaceDescriptor {\n\n const extension = { descriptor }\n return Object.assign({}, sourceObj, extension)\n}\n\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj['age'] === 'number'\n}\n\nexport function extendWithAge<\n TSource\n> (\n sourceObj: TSource,\n age: number\n): WithAge {\n\n const extension = { age }\n return Object.assign({}, sourceObj, extension)\n}", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj['gender'] === Gender.MALE || obj['gender'] === Gender.FEMALE)\n && isValidProbablitiy(obj['genderProbability'])\n}\n\nexport function extendWithGender<\n TSource\n> (\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number\n): WithGender {\n\n const extension = { gender, genderProbability }\n return Object.assign({}, sourceObj, extension)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n\n constructor() {\n super('SsdMobilenetv1')\n }\n\n public forwardInput(input: NetInput) {\n\n const { params } = this\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D\n const features = mobileNetV1(x, params.mobilenetv1)\n\n const {\n boxPredictions,\n classPredictions\n } = predictionLayer(features.out, features.conv11, params.prediction_layer)\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer)\n })\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {}\n ): Promise {\n\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options)\n\n const netInput = await toNetInput(input)\n\n const {\n boxes: _boxes,\n scores: _scores\n } = this.forwardInput(netInput)\n\n\n // TODO batches\n const boxes = _boxes[0]\n const scores = _scores[0]\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose()\n _scores[i].dispose()\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data())\n\n const iouThreshold = 0.5\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence\n )\n\n const reshapedDims = netInput.getReshapedInputDimensions(0)\n const inputSize = netInput.inputSize as number\n const padX = inputSize / reshapedDims.width\n const padY = inputSize / reshapedDims.height\n\n const boxesData = boxes.arraySync()\n const results = indices\n .map(idx => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2])\n ].map(val => val * padY)\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3])\n ].map(val => val * padX)\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0)\n }\n )\n })\n\n boxes.dispose()\n scores.dispose()\n\n return results\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common/index';\nimport { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1])\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` }\n )\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n }\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }\n )\n\n return { filters, bias }\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): PointwiseConvParams {\n\n const {\n filters,\n bias\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true)\n\n return {\n filters,\n batch_norm_offset: bias\n }\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): MobileNetV1.ConvPairParams {\n\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`)\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`)\n\n return { depthwise_conv, pointwise_conv }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0')\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1')\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2')\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3')\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4')\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5')\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6')\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7')\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8')\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9')\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10')\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11')\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12')\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13')\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13\n }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0')\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1')\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2')\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3')\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4')\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5')\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6')\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7')\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor')\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor')\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor')\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor')\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor')\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor')\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor')\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor')\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor')\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor')\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor')\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor')\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0\n }\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1\n }\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2\n }\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3\n }\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4\n }\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5\n }\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const mobilenetv1 = extractMobilenetV1Params()\n const prediction_layer = extractPredictionLayerParams()\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4]\n )\n const output_layer = {\n extra_dim\n }\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer\n },\n paramMappings\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common/index';\nimport { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1])\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` }\n )\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n }\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }\n )\n\n return { filters, bias }\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): PointwiseConvParams {\n\n const {\n filters,\n bias\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true)\n\n return {\n filters,\n batch_norm_offset: bias\n }\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): MobileNetV1.ConvPairParams {\n\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`)\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`)\n\n return { depthwise_conv, pointwise_conv }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0')\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1')\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2')\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3')\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4')\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5')\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6')\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7')\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8')\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9')\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10')\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11')\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12')\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13')\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13\n }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0')\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1')\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2')\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3')\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4')\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5')\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6')\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7')\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor')\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor')\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor')\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor')\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor')\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor')\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor')\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor')\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor')\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor')\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor')\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor')\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0\n }\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1\n }\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2\n }\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3\n }\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4\n }\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5\n }\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const mobilenetv1 = extractMobilenetV1Params()\n const prediction_layer = extractPredictionLayerParams()\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4]\n )\n const output_layer = {\n extra_dim\n }\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer\n },\n paramMappings\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport { BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`)\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`)\n\n return { filters, batch_norm_offset }\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n\n const mappedPrefix = `mobilenetv1/conv_${idx}`\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`)\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`)\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`)\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`)\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`)\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv)\n }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13)\n }\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`)\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`)\n\n return { filters, bias }\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`\n )\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`\n )\n\n return { box_encoding_predictor, class_predictor }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5)\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const extra_dim = weightMap['Output/extra_dim']\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' })\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`)\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same')\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon\n )\n return tf.clipByValue(out, 0, 6)\n\n })\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1]\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2])\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13\n ]\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx)\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides)\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1])\n if (layerIdx === 11) {\n conv11 = out\n }\n })\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null')\n }\n\n return {\n out,\n conv11: conv11 as any\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.conv2d(x, params.filters, strides, 'same')\n out = tf.add(out, params.batch_norm_offset)\n return tf.clipByValue(out, 0, 6)\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same')\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon\n )\n return tf.clipByValue(out, 0, 6)\n\n })\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1]\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2])\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13\n ]\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx)\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides)\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1])\n if (layerIdx === 11) {\n conv11 = out\n }\n })\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null')\n }\n\n return {\n out,\n conv11: conv11 as any\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number\n): number[] {\n\n const numBoxes = boxes.shape[0]\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes\n )\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter(c => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score)\n\n const suppressFunc = (x: number) => x <= iouThreshold ? 1 : 0\n\n const selected: number[] = []\n\n candidates.forEach(c => {\n if (selected.length >= outputSize) {\n return\n }\n const originalScore = c.score\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j])\n if (iou === 0.0) {\n continue\n }\n c.score *= suppressFunc(iou)\n if (c.score <= scoreThreshold) {\n break\n }\n }\n\n if (originalScore === c.score) {\n selected.push(c.boxIndex)\n }\n })\n\n return selected\n}\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync()\n const yminI = Math.min(boxesData[i][0], boxesData[i][2])\n const xminI = Math.min(boxesData[i][1], boxesData[i][3])\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2])\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3])\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2])\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3])\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2])\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3])\n const areaI = (ymaxI - yminI) * (xmaxI - xminI)\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ)\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0\n }\n const intersectionYmin = Math.max(yminI, yminJ)\n const intersectionXmin = Math.max(xminI, xminJ)\n const intersectionYmax = Math.min(ymaxI, ymaxJ)\n const intersectionXmax = Math.min(xmaxI, xmaxJ)\n const intersectionArea =\n Math.max(intersectionYmax - intersectionYmin, 0.0) *\n Math.max(intersectionXmax - intersectionXmin, 0.0)\n return intersectionArea / (areaI + areaJ - intersectionArea)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]))\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1])\n ]\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2)))\n ]\n\n return {\n sizes,\n centers\n }\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers\n } = getCenterCoordinatesAndSizesLayer(x0)\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]))\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2))\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0])\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2))\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1])\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out)\n ]),\n [1, 0]\n )\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams\n) {\n return tf.tidy(() => {\n\n const batchSize = boxPredictions.shape[0]\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D\n )\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4]\n )\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]))\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number]\n )\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[]\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[]\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams\n) {\n return tf.tidy(() => {\n\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1])\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2])\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1])\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2])\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1])\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2])\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1])\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2])\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0)\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1)\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2)\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3)\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4)\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5)\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding\n ], 1) as tf.Tensor4D\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction\n ], 1) as tf.Tensor4D\n\n return {\n boxPredictions,\n classPredictions\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams\n) {\n return tf.tidy(() => {\n\n const batchSize = x.shape[0]\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4]\n )\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3]\n )\n\n return {\n boxPredictionEncoding,\n classPrediction\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams\n) {\n return tf.tidy(() => {\n\n const batchSize = x.shape[0]\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4]\n )\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3]\n )\n\n return {\n boxPredictionEncoding,\n classPrediction\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams\n) {\n return tf.tidy(() => {\n\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1])\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2])\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1])\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2])\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1])\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2])\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1])\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2])\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0)\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1)\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2)\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3)\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4)\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5)\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding\n ], 1) as tf.Tensor4D\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction\n ], 1) as tf.Tensor4D\n\n return {\n boxPredictions,\n classPredictions\n }\n })\n}", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5\n this._maxResults = maxResults || 100\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`)\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`)\n }\n }\n\n get minConfidence(): number { return this._minConfidence }\n get maxResults(): number { return this._maxResults }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n\n constructor() {\n super('SsdMobilenetv1')\n }\n\n public forwardInput(input: NetInput) {\n\n const { params } = this\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D\n const features = mobileNetV1(x, params.mobilenetv1)\n\n const {\n boxPredictions,\n classPredictions\n } = predictionLayer(features.out, features.conv11, params.prediction_layer)\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer)\n })\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {}\n ): Promise {\n\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options)\n\n const netInput = await toNetInput(input)\n\n const {\n boxes: _boxes,\n scores: _scores\n } = this.forwardInput(netInput)\n\n\n // TODO batches\n const boxes = _boxes[0]\n const scores = _scores[0]\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose()\n _scores[i].dispose()\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data())\n\n const iouThreshold = 0.5\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence\n )\n\n const reshapedDims = netInput.getReshapedInputDimensions(0)\n const inputSize = netInput.inputSize as number\n const padX = inputSize / reshapedDims.width\n const padY = inputSize / reshapedDims.height\n\n const boxesData = boxes.arraySync()\n const results = indices\n .map(idx => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2])\n ].map(val => val * padY)\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3])\n ].map(val => val * padX)\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0)\n }\n )\n })\n\n boxes.dispose()\n scores.dispose()\n\n return results\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1()\n net.extractWeights(weights)\n return net\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights)\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741)\n]\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404]\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model'\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model'", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2')\n validateConfig(config)\n this._config = config\n }\n\n public get config(): TinyYolov2Config {\n return this._config\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0)\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n\n let out = convWithBatchNorm(x, params.conv0)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = convWithBatchNorm(out, params.conv6)\n out = convWithBatchNorm(out, params.conv7)\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference')\n }\n\n return tf.tidy(() => {\n\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams)\n })\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return await this.forwardInput(await toNetInput(input), inputSize)\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams)\n\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput, inputSize)\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0)\n }\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold)\n out.dispose()\n out0.dispose()\n\n const boxes = results.map(res => res.box)\n const scores = results.map(res => res.score)\n const classScores = results.map(res => res.classScore)\n const classNames = results.map(res => this.config.classes[res.label])\n\n const indices = nonMaxSuppression(\n boxes.map(box => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true\n )\n\n const detections = indices.map(idx =>\n new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions\n )\n )\n\n return detections\n }\n\n protected getDefaultModelName(): string {\n return ''\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config)\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES\n\n const numFilters = filterSizes ? filterSizes.length : undefined\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`)\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes)\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number\n ) {\n\n const { width, height } = inputBlobDimensions\n const inputSize = Math.max(width, height)\n const correctionFactorX = inputSize / width\n const correctionFactorY = inputSize / height\n\n const numCells = outputTensor.shape[1]\n const numBoxes = this.config.anchors.length\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize])\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4])\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1])\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0)\n return [boxes, scores, classScores]\n })\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array()\n const boxesData = await boxesTensor.array()\n for (let row = 0; row < numCells; row ++) {\n for (let col = 0; col < numCells; col ++) {\n for (let anchor = 0; anchor < numBoxes; anchor ++) {\n\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY\n const width = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX\n const height = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY\n\n const x = (ctX - (width / 2))\n const y = (ctY - (height / 2))\n\n const pos = { row, col, anchor }\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 }\n\n results.push({\n box: new BoundingBox(x, y, x + width, y + height),\n score: score,\n classScore: score * classScore,\n label,\n ...pos\n })\n }\n }\n }\n }\n\n boxesTensor.dispose()\n scoresTensor.dispose()\n classScoresTensor.dispose()\n\n return results\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number },) {\n const { row, col, anchor } = pos\n const classesData = await classesTensor.array()\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label\n }))\n .reduce((max, curr) => max.classScore > curr.classScore ? max : curr)\n }\n}", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number'\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`)\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`)\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`)\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`)\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`)\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid')\n out = tf.sub(out, params.bn.sub)\n out = tf.mul(out, params.bn.truediv)\n out = tf.add(out, params.conv.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612))\n return tf.add(tf.relu(tf.sub(x, min)), min)\n //return tf.maximum(x, min)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid')\n out = tf.sub(out, params.bn.sub)\n out = tf.mul(out, params.bn.truediv)\n out = tf.add(out, params.conv.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid')\n out = tf.add(out, params.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid')\n out = tf.add(out, params.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n\n const sub = tf.tensor1d(extractWeights(size))\n const truediv = tf.tensor1d(extractWeights(size))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` }\n )\n\n return { sub, truediv }\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`)\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`)\n\n return { conv, bn }\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[]\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0')\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1')\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2')\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3')\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4')\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5')\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0',)\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1')\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2')\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3')\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4')\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5')\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6')\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7')\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n\n const sub = tf.tensor1d(extractWeights(size))\n const truediv = tf.tensor1d(extractWeights(size))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` }\n )\n\n return { sub, truediv }\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`)\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`)\n\n return { conv, bn }\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[]\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0')\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1')\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2')\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3')\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4')\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5')\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0',)\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1')\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2')\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3')\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4')\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5')\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6')\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7')\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1)\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1)\n return { sub, truediv }\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { filters, bias }\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`)\n const bn = extractBatchNormParams(`${prefix}/bn`)\n return { conv, bn }\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(weightMap, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const numFilters = (config.filterSizes && config.filterSizes.length || 9)\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8')\n }\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "export enum TinyYolov2SizeType {\n XS = 224,\n SM = 320,\n MD = 416,\n LG = 608\n}\n\nexport interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416\n this._scoreThreshold = scoreThreshold || 0.5\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`)\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)\n }\n }\n\n get inputSize(): number { return this._inputSize }\n get scoreThreshold(): number { return this._scoreThreshold }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2')\n validateConfig(config)\n this._config = config\n }\n\n public get config(): TinyYolov2Config {\n return this._config\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0)\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n\n let out = convWithBatchNorm(x, params.conv0)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = convWithBatchNorm(out, params.conv6)\n out = convWithBatchNorm(out, params.conv7)\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference')\n }\n\n return tf.tidy(() => {\n\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams)\n })\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return await this.forwardInput(await toNetInput(input), inputSize)\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams)\n\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput, inputSize)\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0)\n }\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold)\n out.dispose()\n out0.dispose()\n\n const boxes = results.map(res => res.box)\n const scores = results.map(res => res.score)\n const classScores = results.map(res => res.classScore)\n const classNames = results.map(res => this.config.classes[res.label])\n\n const indices = nonMaxSuppression(\n boxes.map(box => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true\n )\n\n const detections = indices.map(idx =>\n new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions\n )\n )\n\n return detections\n }\n\n protected getDefaultModelName(): string {\n return ''\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config)\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES\n\n const numFilters = filterSizes ? filterSizes.length : undefined\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`)\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes)\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number\n ) {\n\n const { width, height } = inputBlobDimensions\n const inputSize = Math.max(width, height)\n const correctionFactorX = inputSize / width\n const correctionFactorY = inputSize / height\n\n const numCells = outputTensor.shape[1]\n const numBoxes = this.config.anchors.length\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize])\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4])\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1])\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0)\n return [boxes, scores, classScores]\n })\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array()\n const boxesData = await boxesTensor.array()\n for (let row = 0; row < numCells; row ++) {\n for (let col = 0; col < numCells; col ++) {\n for (let anchor = 0; anchor < numBoxes; anchor ++) {\n\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY\n const width = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX\n const height = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY\n\n const x = (ctX - (width / 2))\n const y = (ctY - (height / 2))\n\n const pos = { row, col, anchor }\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 }\n\n results.push({\n box: new BoundingBox(x, y, x + width, y + height),\n score: score,\n classScore: score * classScore,\n label,\n ...pos\n })\n }\n }\n }\n }\n\n boxesTensor.dispose()\n scoresTensor.dispose()\n classScoresTensor.dispose()\n\n return results\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number },) {\n const { row, col, anchor } = pos\n const classesData = await classesTensor.array()\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label\n }))\n .reduce((max, curr) => max.classScore > curr.classScore ? max : curr)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n\n constructor(withSeparableConvs: boolean = true) {\n const config = Object.assign({}, {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face']\n },\n withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true\n }\n )\n\n super(config)\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config'\nexport * from './types'\n\nexport { TinyYolov2 }\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs)\n net.extractWeights(weights)\n return net\n}", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}", "export class ComposableTask {\n\n public async then(\n onfulfilled: (value: T) => T | PromiseLike\n ): Promise {\n return onfulfilled(await this.run())\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented')\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected useTinyLandmarkNet: boolean\n ) {\n super()\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n const detections = parentResults.map(res => res.detection)\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections)\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n face => this.landmarkNet.detectLandmarks(face)\n )) as FaceLandmarks68[]\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return parentResults.map((parentResult, i) =>\n extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i])\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection])\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return extendWithFaceLandmarks(parentResult, landmarks)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect\n) {\n const faceBoxes = parentResults.map(parentResult =>\n isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection\n )\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n )\n\n const results = await computeResults(faces)\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return results\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async faces => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment\n )\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect\n) {\n const faceBoxes = parentResults.map(parentResult =>\n isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection\n )\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n )\n\n const results = await computeResults(faces)\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return results\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async faces => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment\n )\n}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404]", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512]\n }\n\n super(config)\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks5 } from '../classes/FaceLandmarks5';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet()\n}\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise =>\n nets.ssdMobilenetv1.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise =>\n nets.tinyFaceDetector.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise =>\n nets.tinyYolov2.locateFaces(input, options)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise =>\n nets.faceLandmark68Net.detectLandmarks(input)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise =>\n nets.faceLandmark68TinyNet.detectLandmarks(input)\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise =>\n nets.faceRecognitionNet.computeFaceDescriptor(input)\n\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise =>\n nets.faceExpressionNet.predictExpressions(input)\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise =>\n nets.ageGenderNet.predictAgeAndGender(input)\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url)\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url)\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url)\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url)\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url)\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url)\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url)\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url)\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model\nexport const locateFaces = ssdMobilenetv1\nexport const detectLandmarks = detectFaceLandmarks", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.faceExpressionNet.predictExpressions(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i])\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithFaceExpressions(parentResult, faceExpressions)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n\n public async run(): Promise>[]> {\n\n const parentResults = await this.parentTask\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i]\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n })\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n\n public async run(): Promise> | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput\n ) {\n super()\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n faces => Promise.all(faces.map(face =>\n nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise\n )),\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor))\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return extendWithFaceDescriptor(parentResult, descriptor)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected useTinyLandmarkNet: boolean\n ) {\n super()\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n const detections = parentResults.map(res => res.detection)\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections)\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n face => this.landmarkNet.detectLandmarks(face)\n )) as FaceLandmarks68[]\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return parentResults.map((parentResult, i) =>\n extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i])\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection])\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return extendWithFaceLandmarks(parentResult, landmarks)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n protected input: TNetInput,\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options()\n ) {\n super()\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n\n const { input, options } = this\n\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n options instanceof SsdMobilenetv1Options\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n )\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options')\n }\n\n return faceDetectionFunction(input)\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n return new Promise[]>(async res => {\n const detections = await this.run()\n return res(detections.map(detection => extendWithFaceDetection({}, detection)))\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask (\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach(faceDetection => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n return new Promise | undefined>(async res => {\n const detection = await this.run()\n return res(detection ? extendWithFaceDetection<{}>({}, detection) : undefined)\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n}", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options)\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options)\n}", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number\n): Promise>>[]> {\n console.warn('allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {}\n): Promise>>[]> {\n console.warn('allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport const allFaces = allFacesSsdMobilenetv1\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n\n private _labeledDescriptors: LabeledFaceDescriptors[]\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6\n ) {\n\n this._distanceThreshold = distanceThreshold\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs]\n\n if (!inputArray.length) {\n throw new Error(`FaceRecognizer.constructor - expected atleast one input`)\n }\n\n let count = 1\n const createUniqueLabel = () => `person ${count++}`\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc])\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor])\n }\n\n throw new Error(`FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>`)\n })\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors }\n public get distanceThreshold(): number { return this._distanceThreshold }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map(d => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1)\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors)\n ))\n .reduce((best, curr) => best.distance < curr.distance ? best : curr)\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor)\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance)\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON())\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n\n}", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector()\n net.extractWeights(weights)\n return net\n}", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n"], - "mappings": "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", + "sources": ["../src/tfjs/tf-browser.js", "../src/env/isNodejs.ts", "../src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/NetInput.ts", "../src/dom/imageToSquare.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/dom/loadWeightMap.ts", "../src/common/getModelUris.ts", "../src/dom/matchDimensions.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/NeuralNetwork.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/depthwiseSeparableConv.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/types.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/xception/TinyXception.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts"], + "sourcesContent": ["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable node/no-unpublished-import */\n\n// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\nexport * from '@tensorflow/tfjs/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n/*\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n*/\n", "export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}"], + "mappings": "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", "names": [] } diff --git a/dist/face-api.esm-nobundle.json b/dist/face-api.esm-nobundle.json index 0c50447..e802518 100644 --- a/dist/face-api.esm-nobundle.json +++ b/dist/face-api.esm-nobundle.json @@ -5,11 +5,11 @@ "imports": [] }, "src/draw/drawContour.ts": { - "bytes": 526, + "bytes": 539, "imports": [] }, "src/classes/Dimensions.ts": { - "bytes": 737, + "bytes": 745, "imports": [ { "path": "src/utils/index.ts" @@ -17,7 +17,7 @@ ] }, "src/utils/index.ts": { - "bytes": 1776, + "bytes": 1845, "imports": [ { "path": "dist/tfjs.esm.js" @@ -31,11 +31,11 @@ ] }, "src/classes/Point.ts": { - "bytes": 923, + "bytes": 925, "imports": [] }, "src/classes/Box.ts": { - "bytes": 5477, + "bytes": 5690, "imports": [ { "path": "src/utils/index.ts" @@ -46,7 +46,7 @@ ] }, "src/classes/BoundingBox.ts": { - "bytes": 389, + "bytes": 402, "imports": [ { "path": "src/classes/Box.ts" @@ -54,7 +54,7 @@ ] }, "src/classes/ObjectDetection.ts": { - "bytes": 1395, + "bytes": 1424, "imports": [ { "path": "src/classes/Box.ts" @@ -65,7 +65,7 @@ ] }, "src/classes/FaceDetection.ts": { - "bytes": 651, + "bytes": 656, "imports": [ { "path": "src/classes/ObjectDetection.ts" @@ -73,11 +73,11 @@ ] }, "src/ops/iou.ts": { - "bytes": 468, + "bytes": 473, "imports": [] }, "src/ops/minBbox.ts": { - "bytes": 479, + "bytes": 498, "imports": [ { "path": "src/classes/index.ts" @@ -85,7 +85,7 @@ ] }, "src/ops/nonMaxSuppression.ts": { - "bytes": 908, + "bytes": 924, "imports": [ { "path": "src/ops/iou.ts" @@ -93,7 +93,7 @@ ] }, "src/ops/normalize.ts": { - "bytes": 478, + "bytes": 486, "imports": [ { "path": "dist/tfjs.esm.js" @@ -101,7 +101,7 @@ ] }, "src/ops/padToSquare.ts": { - "bytes": 1659, + "bytes": 1687, "imports": [ { "path": "dist/tfjs.esm.js" @@ -109,11 +109,11 @@ ] }, "src/ops/shuffleArray.ts": { - "bytes": 274, + "bytes": 273, "imports": [] }, "src/ops/index.ts": { - "bytes": 322, + "bytes": 331, "imports": [ { "path": "src/ops/iou.ts" @@ -136,7 +136,7 @@ ] }, "src/classes/Rect.ts": { - "bytes": 346, + "bytes": 359, "imports": [ { "path": "src/classes/Box.ts" @@ -144,7 +144,7 @@ ] }, "src/classes/FaceLandmarks.ts": { - "bytes": 4167, + "bytes": 4199, "imports": [ { "path": "src/ops/index.ts" @@ -170,7 +170,7 @@ ] }, "src/classes/FaceLandmarks5.ts": { - "bytes": 358, + "bytes": 360, "imports": [ { "path": "src/utils/index.ts" @@ -181,7 +181,7 @@ ] }, "src/classes/FaceLandmarks68.ts": { - "bytes": 905, + "bytes": 915, "imports": [ { "path": "src/utils/index.ts" @@ -192,7 +192,7 @@ ] }, "src/classes/FaceMatch.ts": { - "bytes": 570, + "bytes": 578, "imports": [ { "path": "src/utils/index.ts" @@ -200,7 +200,7 @@ ] }, "src/classes/LabeledBox.ts": { - "bytes": 641, + "bytes": 645, "imports": [ { "path": "src/utils/index.ts" @@ -211,11 +211,11 @@ ] }, "src/classes/LabeledFaceDescriptors.ts": { - "bytes": 1083, + "bytes": 1072, "imports": [] }, "src/classes/PredictedBox.ts": { - "bytes": 944, + "bytes": 952, "imports": [ { "path": "src/utils/index.ts" @@ -226,7 +226,7 @@ ] }, "src/classes/index.ts": { - "bytes": 427, + "bytes": 436, "imports": [ { "path": "src/classes/BoundingBox.ts" @@ -273,7 +273,7 @@ ] }, "src/factories/WithFaceDetection.ts": { - "bytes": 496, + "bytes": 486, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -281,15 +281,15 @@ ] }, "src/env/createBrowserEnv.ts": { - "bytes": 685, + "bytes": 636, "imports": [] }, "src/env/createFileSystem.ts": { - "bytes": 650, + "bytes": 654, "imports": [] }, "src/env/createNodejsEnv.ts": { - "bytes": 1170, + "bytes": 1202, "imports": [ { "path": "src/env/createFileSystem.ts" @@ -297,19 +297,19 @@ ] }, "src/env/isBrowser.ts": { - "bytes": 352, + "bytes": 354, "imports": [] }, "src/env/isNodejs.ts": { - "bytes": 293, + "bytes": 295, "imports": [] }, "src/env/types.ts": { - "bytes": 470, + "bytes": 570, "imports": [] }, "src/env/index.ts": { - "bytes": 1801, + "bytes": 1817, "imports": [ { "path": "src/env/createBrowserEnv.ts" @@ -332,7 +332,7 @@ ] }, "src/dom/resolveInput.ts": { - "bytes": 197, + "bytes": 200, "imports": [ { "path": "src/env/index.ts" @@ -340,7 +340,7 @@ ] }, "src/dom/getContext2dOrThrow.ts": { - "bytes": 666, + "bytes": 673, "imports": [ { "path": "src/env/index.ts" @@ -351,7 +351,7 @@ ] }, "src/draw/DrawTextField.ts": { - "bytes": 3710, + "bytes": 4094, "imports": [ { "path": "src/dom/getContext2dOrThrow.ts" @@ -362,7 +362,7 @@ ] }, "src/draw/DrawBox.ts": { - "bytes": 1750, + "bytes": 1831, "imports": [ { "path": "src/classes/index.ts" @@ -376,7 +376,7 @@ ] }, "src/draw/drawDetections.ts": { - "bytes": 1018, + "bytes": 1128, "imports": [ { "path": "src/classes/index.ts" @@ -396,7 +396,7 @@ ] }, "src/dom/isMediaLoaded.ts": { - "bytes": 276, + "bytes": 277, "imports": [ { "path": "src/env/index.ts" @@ -404,7 +404,7 @@ ] }, "src/dom/awaitMediaLoaded.ts": { - "bytes": 848, + "bytes": 963, "imports": [ { "path": "src/env/index.ts" @@ -415,7 +415,7 @@ ] }, "src/dom/bufferToImage.ts": { - "bytes": 691, + "bytes": 687, "imports": [ { "path": "src/env/index.ts" @@ -423,7 +423,7 @@ ] }, "src/dom/getMediaDimensions.ts": { - "bytes": 526, + "bytes": 529, "imports": [ { "path": "src/classes/Dimensions.ts" @@ -434,7 +434,7 @@ ] }, "src/dom/createCanvas.ts": { - "bytes": 1128, + "bytes": 1139, "imports": [ { "path": "src/env/index.ts" @@ -451,7 +451,7 @@ ] }, "src/dom/imageTensorToCanvas.ts": { - "bytes": 611, + "bytes": 618, "imports": [ { "path": "dist/tfjs.esm.js" @@ -465,7 +465,7 @@ ] }, "src/dom/isMediaElement.ts": { - "bytes": 226, + "bytes": 228, "imports": [ { "path": "src/env/index.ts" @@ -473,7 +473,7 @@ ] }, "src/dom/imageToSquare.ts": { - "bytes": 1162, + "bytes": 1175, "imports": [ { "path": "src/env/index.ts" @@ -490,7 +490,7 @@ ] }, "src/dom/NetInput.ts": { - "bytes": 5465, + "bytes": 5511, "imports": [ { "path": "dist/tfjs.esm.js" @@ -513,7 +513,7 @@ ] }, "src/dom/toNetInput.ts": { - "bytes": 2100, + "bytes": 2115, "imports": [ { "path": "src/utils/index.ts" @@ -533,7 +533,7 @@ ] }, "src/dom/extractFaces.ts": { - "bytes": 1755, + "bytes": 1782, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -556,7 +556,7 @@ ] }, "src/dom/extractFaceTensors.ts": { - "bytes": 1718, + "bytes": 1733, "imports": [ { "path": "dist/tfjs.esm.js" @@ -570,7 +570,7 @@ ] }, "src/dom/fetchOrThrow.ts": { - "bytes": 348, + "bytes": 390, "imports": [ { "path": "src/env/index.ts" @@ -578,7 +578,7 @@ ] }, "src/dom/fetchImage.ts": { - "bytes": 447, + "bytes": 451, "imports": [ { "path": "src/dom/bufferToImage.ts" @@ -589,7 +589,7 @@ ] }, "src/dom/fetchJson.ts": { - "bytes": 154, + "bytes": 155, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -597,7 +597,7 @@ ] }, "src/dom/fetchNetWeights.ts": { - "bytes": 199, + "bytes": 200, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -605,11 +605,11 @@ ] }, "src/common/getModelUris.ts": { - "bytes": 990, + "bytes": 1052, "imports": [] }, "src/dom/loadWeightMap.ts": { - "bytes": 549, + "bytes": 555, "imports": [ { "path": "dist/tfjs.esm.js" @@ -623,7 +623,7 @@ ] }, "src/dom/matchDimensions.ts": { - "bytes": 396, + "bytes": 401, "imports": [ { "path": "src/dom/getMediaDimensions.ts" @@ -631,11 +631,11 @@ ] }, "src/dom/types.ts": { - "bytes": 385, + "bytes": 386, "imports": [] }, "src/dom/index.ts": { - "bytes": 674, + "bytes": 696, "imports": [ { "path": "src/dom/awaitMediaLoaded.ts" @@ -720,7 +720,7 @@ ] }, "src/common/depthwiseSeparableConv.ts": { - "bytes": 411, + "bytes": 417, "imports": [ { "path": "dist/tfjs.esm.js" @@ -728,7 +728,7 @@ ] }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytes": 2021, + "bytes": 2041, "imports": [ { "path": "dist/tfjs.esm.js" @@ -739,7 +739,7 @@ ] }, "src/common/convLayer.ts": { - "bytes": 425, + "bytes": 431, "imports": [ { "path": "dist/tfjs.esm.js" @@ -747,11 +747,11 @@ ] }, "src/common/disposeUnusedWeightTensors.ts": { - "bytes": 284, + "bytes": 290, "imports": [] }, "src/common/extractConvParamsFactory.ts": { - "bytes": 768, + "bytes": 769, "imports": [ { "path": "dist/tfjs.esm.js" @@ -767,11 +767,11 @@ ] }, "src/common/types.ts": { - "bytes": 513, + "bytes": 800, "imports": [] }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytes": 1490, + "bytes": 1536, "imports": [ { "path": "dist/tfjs.esm.js" @@ -782,7 +782,7 @@ ] }, "src/common/extractWeightEntryFactory.ts": { - "bytes": 587, + "bytes": 579, "imports": [ { "path": "src/utils/index.ts" @@ -790,11 +790,11 @@ ] }, "src/common/extractWeightsFactory.ts": { - "bytes": 433, + "bytes": 441, "imports": [] }, "src/common/index.ts": { - "bytes": 388, + "bytes": 399, "imports": [ { "path": "src/common/convLayer.ts" @@ -829,7 +829,7 @@ ] }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytes": 1568, + "bytes": 1587, "imports": [ { "path": "src/common/index.ts" @@ -837,7 +837,7 @@ ] }, "src/faceFeatureExtractor/extractParams.ts": { - "bytes": 1008, + "bytes": 1030, "imports": [ { "path": "src/common/index.ts" @@ -848,11 +848,11 @@ ] }, "src/common/loadConvParamsFactory.ts": { - "bytes": 426, + "bytes": 469, "imports": [] }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytes": 1522, + "bytes": 1547, "imports": [ { "path": "src/common/index.ts" @@ -863,7 +863,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytes": 833, + "bytes": 841, "imports": [ { "path": "src/common/index.ts" @@ -874,7 +874,7 @@ ] }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytes": 1794, + "bytes": 1809, "imports": [ { "path": "dist/tfjs.esm.js" @@ -900,7 +900,7 @@ ] }, "src/common/fullyConnectedLayer.ts": { - "bytes": 275, + "bytes": 266, "imports": [ { "path": "dist/tfjs.esm.js" @@ -908,7 +908,7 @@ ] }, "src/faceProcessor/extractParams.ts": { - "bytes": 751, + "bytes": 759, "imports": [ { "path": "src/common/index.ts" @@ -916,7 +916,7 @@ ] }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytes": 839, + "bytes": 826, "imports": [ { "path": "src/common/index.ts" @@ -924,11 +924,11 @@ ] }, "src/faceProcessor/util.ts": { - "bytes": 417, + "bytes": 424, "imports": [] }, "src/faceProcessor/FaceProcessor.ts": { - "bytes": 3015, + "bytes": 3037, "imports": [ { "path": "dist/tfjs.esm.js" @@ -954,11 +954,11 @@ ] }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytes": 855, + "bytes": 869, "imports": [] }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytes": 1648, + "bytes": 1667, "imports": [ { "path": "dist/tfjs.esm.js" @@ -978,7 +978,7 @@ ] }, "src/faceExpressionNet/index.ts": { - "bytes": 71, + "bytes": 72, "imports": [ { "path": "src/faceExpressionNet/FaceExpressionNet.ts" @@ -989,7 +989,7 @@ ] }, "src/factories/WithFaceExpressions.ts": { - "bytes": 533, + "bytes": 524, "imports": [ { "path": "src/faceExpressionNet/FaceExpressions.ts" @@ -997,7 +997,7 @@ ] }, "src/draw/drawFaceExpressions.ts": { - "bytes": 1519, + "bytes": 1612, "imports": [ { "path": "src/classes/index.ts" @@ -1020,7 +1020,7 @@ ] }, "src/factories/WithFaceLandmarks.ts": { - "bytes": 1507, + "bytes": 1643, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -1034,7 +1034,7 @@ ] }, "src/draw/DrawFaceLandmarks.ts": { - "bytes": 3371, + "bytes": 3528, "imports": [ { "path": "src/classes/FaceLandmarks.ts" @@ -1054,7 +1054,7 @@ ] }, "src/draw/index.ts": { - "bytes": 194, + "bytes": 201, "imports": [ { "path": "src/draw/drawContour.ts" @@ -1076,8 +1076,12 @@ } ] }, + "package.json": { + "bytes": 1719, + "imports": [] + }, "src/xception/extractParams.ts": { - "bytes": 3412, + "bytes": 3440, "imports": [ { "path": "src/common/index.ts" @@ -1088,7 +1092,7 @@ ] }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytes": 3105, + "bytes": 3133, "imports": [ { "path": "src/common/index.ts" @@ -1102,7 +1106,7 @@ ] }, "src/xception/TinyXception.ts": { - "bytes": 3123, + "bytes": 3151, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1131,7 +1135,7 @@ ] }, "src/ageGenderNet/extractParams.ts": { - "bytes": 769, + "bytes": 778, "imports": [ { "path": "src/common/index.ts" @@ -1139,7 +1143,7 @@ ] }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytes": 906, + "bytes": 894, "imports": [ { "path": "src/common/index.ts" @@ -1147,11 +1151,11 @@ ] }, "src/ageGenderNet/types.ts": { - "bytes": 399, + "bytes": 528, "imports": [] }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytes": 4223, + "bytes": 4272, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1183,7 +1187,7 @@ ] }, "src/ageGenderNet/index.ts": { - "bytes": 56, + "bytes": 57, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1194,7 +1198,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytes": 3695, + "bytes": 3720, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1217,7 +1221,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytes": 619, + "bytes": 622, "imports": [ { "path": "src/faceFeatureExtractor/FaceFeatureExtractor.ts" @@ -1228,7 +1232,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytes": 797, + "bytes": 805, "imports": [ { "path": "src/common/index.ts" @@ -1239,7 +1243,7 @@ ] }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytes": 951, + "bytes": 960, "imports": [ { "path": "src/common/index.ts" @@ -1250,7 +1254,7 @@ ] }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytes": 1805, + "bytes": 1819, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1276,7 +1280,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytes": 656, + "bytes": 659, "imports": [ { "path": "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts" @@ -1287,7 +1291,7 @@ ] }, "src/faceLandmarkNet/index.ts": { - "bytes": 194, + "bytes": 195, "imports": [ { "path": "src/faceLandmarkNet/FaceLandmark68Net.ts" @@ -1301,7 +1305,7 @@ ] }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytes": 231, + "bytes": 232, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1309,7 +1313,7 @@ ] }, "src/faceRecognitionNet/convLayer.ts": { - "bytes": 844, + "bytes": 853, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1320,7 +1324,7 @@ ] }, "src/faceRecognitionNet/extractParams.ts": { - "bytes": 4855, + "bytes": 4910, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1334,7 +1338,7 @@ ] }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytes": 3121, + "bytes": 3104, "imports": [ { "path": "src/common/index.ts" @@ -1345,7 +1349,7 @@ ] }, "src/faceRecognitionNet/residualLayer.ts": { - "bytes": 1321, + "bytes": 1345, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1356,7 +1360,7 @@ ] }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytes": 2946, + "bytes": 2984, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1385,7 +1389,7 @@ ] }, "src/faceRecognitionNet/index.ts": { - "bytes": 248, + "bytes": 252, "imports": [ { "path": "src/faceRecognitionNet/FaceRecognitionNet.ts" @@ -1396,15 +1400,15 @@ ] }, "src/factories/WithFaceDescriptor.ts": { - "bytes": 310, + "bytes": 301, "imports": [] }, "src/factories/WithAge.ts": { - "bytes": 343, + "bytes": 334, "imports": [] }, "src/factories/WithGender.ts": { - "bytes": 633, + "bytes": 618, "imports": [ { "path": "src/ageGenderNet/types.ts" @@ -1415,7 +1419,7 @@ ] }, "src/factories/index.ts": { - "bytes": 201, + "bytes": 208, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1438,7 +1442,7 @@ ] }, "src/ssdMobilenetv1/extractParams.ts": { - "bytes": 8250, + "bytes": 8342, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1449,7 +1453,7 @@ ] }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytes": 5858, + "bytes": 5785, "imports": [ { "path": "src/common/index.ts" @@ -1460,7 +1464,7 @@ ] }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytes": 390, + "bytes": 394, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1468,7 +1472,7 @@ ] }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytes": 1794, + "bytes": 1814, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1479,11 +1483,11 @@ ] }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytes": 2193, + "bytes": 2190, "imports": [] }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytes": 2160, + "bytes": 2190, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1491,7 +1495,7 @@ ] }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytes": 612, + "bytes": 620, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1502,7 +1506,7 @@ ] }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytes": 2036, + "bytes": 2058, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1516,11 +1520,11 @@ ] }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytes": 872, + "bytes": 881, "imports": [] }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytes": 3784, + "bytes": 3829, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1561,7 +1565,7 @@ ] }, "src/ssdMobilenetv1/index.ts": { - "bytes": 466, + "bytes": 471, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1.ts" @@ -1575,7 +1579,7 @@ ] }, "src/tinyYolov2/const.ts": { - "bytes": 695, + "bytes": 704, "imports": [ { "path": "src/classes/index.ts" @@ -1583,11 +1587,11 @@ ] }, "src/tinyYolov2/config.ts": { - "bytes": 1696, + "bytes": 1701, "imports": [] }, "src/tinyYolov2/leaky.ts": { - "bytes": 269, + "bytes": 274, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1595,7 +1599,7 @@ ] }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytes": 528, + "bytes": 535, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1606,7 +1610,7 @@ ] }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytes": 500, + "bytes": 505, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1617,7 +1621,7 @@ ] }, "src/tinyYolov2/extractParams.ts": { - "bytes": 3862, + "bytes": 3921, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1634,7 +1638,7 @@ ] }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytes": 3265, + "bytes": 3287, "imports": [ { "path": "src/common/disposeUnusedWeightTensors.ts" @@ -1648,11 +1652,11 @@ ] }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytes": 987, + "bytes": 913, "imports": [] }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytes": 9605, + "bytes": 9703, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1705,7 +1709,7 @@ ] }, "src/tinyYolov2/TinyYolov2.ts": { - "bytes": 1792, + "bytes": 1804, "imports": [ { "path": "src/classes/index.ts" @@ -1719,11 +1723,11 @@ ] }, "src/tinyYolov2/types.ts": { - "bytes": 954, + "bytes": 955, "imports": [] }, "src/tinyYolov2/index.ts": { - "bytes": 342, + "bytes": 349, "imports": [ { "path": "src/tinyYolov2/TinyYolov2.ts" @@ -1740,7 +1744,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytes": 271, + "bytes": 272, "imports": [ { "path": "src/tinyYolov2/index.ts" @@ -1748,11 +1752,11 @@ ] }, "src/globalApi/ComposableTask.ts": { - "bytes": 273, + "bytes": 322, "imports": [] }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytes": 1848, + "bytes": 2040, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1766,7 +1770,7 @@ ] }, "src/tinyFaceDetector/const.ts": { - "bytes": 349, + "bytes": 354, "imports": [ { "path": "src/classes/index.ts" @@ -1774,7 +1778,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytes": 1463, + "bytes": 1473, "imports": [ { "path": "src/classes/index.ts" @@ -1788,7 +1792,7 @@ ] }, "src/globalApi/nets.ts": { - "bytes": 6529, + "bytes": 6336, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1817,7 +1821,7 @@ ] }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytes": 3635, + "bytes": 3830, "imports": [ { "path": "src/factories/WithFaceExpressions.ts" @@ -1840,7 +1844,7 @@ ] }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytes": 3815, + "bytes": 4011, "imports": [ { "path": "src/factories/WithAge.ts" @@ -1866,7 +1870,7 @@ ] }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytes": 3029, + "bytes": 3215, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1889,7 +1893,7 @@ ] }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytes": 3807, + "bytes": 4005, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1918,7 +1922,7 @@ ] }, "src/globalApi/DetectFacesTasks.ts": { - "bytes": 4073, + "bytes": 4604, "imports": [ { "path": "src/factories/WithFaceDetection.ts" @@ -1950,7 +1954,7 @@ ] }, "src/globalApi/detectFaces.ts": { - "bytes": 633, + "bytes": 638, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1Options.ts" @@ -1961,7 +1965,7 @@ ] }, "src/globalApi/allFaces.ts": { - "bytes": 1283, + "bytes": 1056, "imports": [ { "path": "src/ssdMobilenetv1/index.ts" @@ -1979,7 +1983,7 @@ "imports": [] }, "src/globalApi/FaceMatcher.ts": { - "bytes": 2973, + "bytes": 2992, "imports": [ { "path": "src/classes/FaceMatch.ts" @@ -1993,11 +1997,11 @@ ] }, "src/globalApi/types.ts": { - "bytes": 512, + "bytes": 556, "imports": [] }, "src/globalApi/index.ts": { - "bytes": 292, + "bytes": 300, "imports": [ { "path": "src/globalApi/allFaces.ts" @@ -2029,7 +2033,7 @@ ] }, "src/tinyFaceDetector/index.ts": { - "bytes": 281, + "bytes": 285, "imports": [ { "path": "src/tinyFaceDetector/TinyFaceDetector.ts" @@ -2062,12 +2066,8 @@ } ] }, - "package.json": { - "bytes": 1363, - "imports": [] - }, "src/index.ts": { - "bytes": 988, + "bytes": 1027, "imports": [ { "path": "dist/tfjs.esm.js" @@ -2078,6 +2078,9 @@ { "path": "src/utils/index.ts" }, + { + "path": "package.json" + }, { "path": "src/ageGenderNet/index.ts" }, @@ -2125,9 +2128,6 @@ }, { "path": "src/resizeResults.ts" - }, - { - "path": "package.json" } ] } @@ -2136,7 +2136,7 @@ "dist/face-api.esm-nobundle.js.map": { "imports": [], "inputs": {}, - "bytes": 392773 + "bytes": 305578 }, "dist/face-api.esm-nobundle.js": { "imports": [], @@ -2184,7 +2184,6 @@ "TinyFaceDetectorOptions", "TinyYolov2", "TinyYolov2Options", - "TinyYolov2SizeType", "allFaces", "allFacesSsdMobilenetv1", "allFacesTinyYolov2", @@ -2271,7 +2270,7 @@ "bytesInOutput": 224 }, "src/index.ts": { - "bytesInOutput": 197 + "bytesInOutput": 201 }, "src/draw/index.ts": { "bytesInOutput": 447 @@ -2280,13 +2279,13 @@ "bytesInOutput": 313 }, "src/utils/index.ts": { - "bytesInOutput": 1563 + "bytesInOutput": 1561 }, "src/classes/Dimensions.ts": { "bytesInOutput": 394 }, "src/classes/Point.ts": { - "bytesInOutput": 490 + "bytesInOutput": 472 }, "src/classes/Box.ts": { "bytesInOutput": 3300 @@ -2319,7 +2318,7 @@ "bytesInOutput": 341 }, "src/ops/padToSquare.ts": { - "bytesInOutput": 880 + "bytesInOutput": 888 }, "src/ops/shuffleArray.ts": { "bytesInOutput": 188 @@ -2328,7 +2327,7 @@ "bytesInOutput": 135 }, "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1899 + "bytesInOutput": 1884 }, "src/classes/FaceLandmarks5.ts": { "bytesInOutput": 153 @@ -2349,22 +2348,22 @@ "bytesInOutput": 508 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 205 + "bytesInOutput": 194 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 483 + "bytesInOutput": 478 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 398 + "bytesInOutput": 374 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 818 + "bytesInOutput": 714 }, "src/env/isBrowser.ts": { "bytesInOutput": 274 }, "src/env/index.ts": { - "bytesInOutput": 1154 + "bytesInOutput": 1146 }, "src/dom/resolveInput.ts": { "bytesInOutput": 104 @@ -2376,7 +2375,7 @@ "bytesInOutput": 2254 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 831 + "bytesInOutput": 821 }, "src/draw/drawDetections.ts": { "bytesInOutput": 424 @@ -2394,7 +2393,7 @@ "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 481 + "bytesInOutput": 482 }, "src/dom/getMediaDimensions.ts": { "bytesInOutput": 265 @@ -2424,7 +2423,7 @@ "bytesInOutput": 769 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 217 + "bytesInOutput": 212 }, "src/dom/fetchImage.ts": { "bytesInOutput": 269 @@ -2466,19 +2465,19 @@ "bytesInOutput": 175 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 467 + "bytesInOutput": 460 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 435 + "bytesInOutput": 428 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 960 + "bytesInOutput": 945 }, "src/common/types.ts": { "bytesInOutput": 173 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 373 + "bytesInOutput": 366 }, "src/common/extractWeightsFactory.ts": { "bytesInOutput": 311 @@ -2490,7 +2489,7 @@ "bytesInOutput": 570 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 195 + "bytesInOutput": 187 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { "bytesInOutput": 984 @@ -2520,19 +2519,22 @@ "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 217 + "bytesInOutput": 206 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 783 + "bytesInOutput": 803 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 603 + "bytesInOutput": 592 }, "src/draw/DrawFaceLandmarks.ts": { "bytesInOutput": 1763 }, + "package.json": { + "bytesInOutput": 19 + }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytesInOutput": 2558 + "bytesInOutput": 2554 }, "src/xception/TinyXception.ts": { "bytesInOutput": 1917 @@ -2589,7 +2591,7 @@ "bytesInOutput": 3416 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2100 + "bytesInOutput": 2099 }, "src/faceRecognitionNet/residualLayer.ts": { "bytesInOutput": 806 @@ -2598,16 +2600,16 @@ "bytesInOutput": 113 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 128 + "bytesInOutput": 117 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 159 + "bytesInOutput": 148 }, "src/factories/WithGender.ts": { - "bytesInOutput": 279 + "bytesInOutput": 268 }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { "bytesInOutput": 1928 @@ -2646,7 +2648,7 @@ "bytesInOutput": 485 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5910 + "bytesInOutput": 5928 }, "src/tinyYolov2/config.ts": { "bytesInOutput": 1186 @@ -2667,10 +2669,10 @@ "bytesInOutput": 2042 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 901 + "bytesInOutput": 588 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 833 + "bytesInOutput": 818 }, "src/tinyYolov2/index.ts": { "bytesInOutput": 139 @@ -2697,22 +2699,22 @@ "bytesInOutput": 1516 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1701 + "bytesInOutput": 1695 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1795 + "bytesInOutput": 1789 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { "bytesInOutput": 1417 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2219 + "bytesInOutput": 2221 }, "src/globalApi/detectFaces.ts": { "bytesInOutput": 224 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 620 + "bytesInOutput": 392 }, "src/globalApi/index.ts": { "bytesInOutput": 0 @@ -2728,12 +2730,9 @@ }, "src/resizeResults.ts": { "bytesInOutput": 824 - }, - "package.json": { - "bytesInOutput": 19 } }, - "bytes": 130970 + "bytes": 130130 } } } diff --git a/dist/face-api.esm.js b/dist/face-api.esm.js index 5409643..090db7d 100644 --- a/dist/face-api.esm.js +++ b/dist/face-api.esm.js @@ -4045,7 +4045,7 @@ return a / b;`,DIV_PACKED=` } setOutput(${returnValue}); } - `}};function unsortedSegmentSum3(args){let{inputs,backend:backend3,attrs}=args,{x,segmentIds}=inputs,{numSegments}=attrs,xRank=x.shape.length,toDispose=[],axis=0,permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!=null&&(permutedX=transpose10({inputs:{x},backend:backend3,attrs:{perm:permutation}}),toDispose.push(permutedX),axis=backend_util_exports.getInnerMostAxes(1,xRank)[0]);let outShape=backend_util_exports.segment_util.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=reshape76({inputs:{x:permutedX},backend:backend3,attrs:{shape:[-1,inSize]}});toDispose.push(a2D);let outputDType=sumOutType(x.dtype),segOpCompute=(x2,segOpType,segmentIds2,dtype,numSegments2)=>{let batchSize=x2.shape[0],inSize2=x2.shape[1],windowSize=backend_util_exports.segment_util.segOpComputeOptimalWindowSize(inSize2,numSegments2),segOpInfo={windowSize,inSize:inSize2,batchSize,numSegments:numSegments2},program=new SegmentOpProgram(segOpInfo,segOpType),output=backend3.compileAndRun(program,[x2,segmentIds2],dtype);if(toDispose.push(output),output.shape[1]===numSegments2)return output;let rangeInfo=range5({backend:backend3,attrs:{start:0,stop:numSegments2,step:1,dtype:"float32"}}),tileInfo=tile8({inputs:{x:rangeInfo},backend:backend3,attrs:{reps:[inSize2/windowSize]}});toDispose.push(rangeInfo),toDispose.push(tileInfo);let result2=segOpCompute(output,segOpType,tileInfo,dtype,numSegments2);return result2},segOpResult=segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments),reshaped=reshape76({inputs:{x:segOpResult},backend:backend3,attrs:{shape:outShape}}),result=reshaped;if(permutation!=null){toDispose.push(reshaped);let perm=backend_util_exports.getUndoAxesPermutation(permutation);result=transpose10({inputs:{x:result},backend:backend3,attrs:{perm}})}return toDispose.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig2={kernelName:UnsortedSegmentSum,backendName:"webgl",kernelFunc:unsortedSegmentSum3},kernelConfigs2=[LRNConfig,LRNGradConfig,_fusedMatMulConfig2,absConfig2,acosConfig2,acoshConfig2,addConfig2,addNConfig2,allConfig2,anyConfig2,argMaxConfig2,argMinConfig2,asinConfig2,asinhConfig2,atan2Config2,atanConfig2,atanhConfig2,avgPool3DConfig2,avgPoolConfig2,avgPoolGrad3DConfig,avgPoolGradConfig3,batchMatMulConfig2,batchNormConfig2,batchToSpaceNDConfig2,bincountConfig2,castConfig2,ceilConfig2,clipByValueConfig,complexAbsConfig2,complexConfig2,concatConfig2,conv2DBackpropFilterConfig2,conv2DBackpropInputConfig2,conv2DConfig2,conv3DBackpropFilterV2Config2,conv3DBackpropInputConfig,conv3DConfig2,cosConfig2,coshConfig2,cropAndResizeConfig2,cumsumConfig2,denseBincountConfig2,depthToSpaceConfig2,depthwiseConv2dNativeBackpropFilterConfig2,depthwiseConv2dNativeBackpropInputConfig2,depthwiseConv2dNativeConfig2,diagConfig2,dilation2DConfig,eluConfig2,eluGradConfig3,equalConfig2,erfConfig2,expConfig2,expandDimsConfig2,expm1Config2,fftConfig2,fillConfig2,flipLeftRightConfig2,floorConfig2,floorDivConfig2,fromPixelsConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig2,gatherV2Config2,greaterConfig2,greaterEqualConfig2,identityConfig2,ifftConfig2,imagConfig2,isFiniteConfig2,isInfConfig2,isNaNConfig2,leakyReluConfig2,lessConfig2,lessEqualConfig2,linSpaceConfig2,log1pConfig2,logConfig2,logicalAndConfig2,logicalNotConfig2,logicalOrConfig2,maxConfig2,maxPool3DConfig2,maxPoolConfig2,maxPoolGrad3DConfig,maxPoolGradConfig3,maxPoolWithArgmaxConfig2,maximumConfig2,meanConfig2,minConfig2,minimumConfig2,mirrorPadConfig2,modConfig2,multinomialConfig2,multiplyConfig2,negConfig2,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config2,nonMaxSuppressionV5Config2,notEqualConfig2,oneHotConfig2,onesLikeConfig2,packConfig2,padV2Config2,powConfig2,preluConfig2,prodConfig2,rangeConfig2,realConfig2,realDivConfig2,reciprocalConfig2,relu6Config2,reluConfig2,reshapeConfig2,resizeBilinearConfig2,resizeBilinearGradConfig3,resizeNearestNeighborConfig2,resizeNearestNeighborGradConfig3,reverseConfig2,rotateWithOffsetConfig2,roundConfig2,rsqrtConfig2,scatterNdConfig2,selectConfig2,seluConfig2,sigmoidConfig2,signConfig2,sinConfig2,sinhConfig2,sliceConfig2,softmaxConfig2,softplusConfig2,spaceToBatchNDConfig2,sparseToDenseConfig2,splitVConfig2,sqrtConfig2,squareConfig2,squaredDifferenceConfig2,stepConfig2,stridedSliceConfig2,subConfig2,sumConfig2,tanConfig2,tanhConfig2,tileConfig2,topKConfig2,transposeConfig2,uniqueConfig2,unpackConfig2,unsortedSegmentSumConfig2,zerosLikeConfig2];for(let kernelConfig of kernelConfigs2)registerKernel(kernelConfig);var version12="2.8.1",version14={"tfjs-core":version,"tfjs-backend-cpu":version10,"tfjs-backend-webgl":version11,"tfjs-data":version8,"tfjs-layers":version2,"tfjs-converter":version6,tfjs:version12},CppDType;(function(CppDType2){CppDType2[CppDType2.float32=0]="float32",CppDType2[CppDType2.int32=1]="int32",CppDType2[CppDType2.bool=2]="bool",CppDType2[CppDType2.string=3]="string",CppDType2[CppDType2.complex64=4]="complex64"})(CppDType||(CppDType={}));var FusableActivation;(function(FusableActivation2){FusableActivation2[FusableActivation2.linear=0]="linear",FusableActivation2[FusableActivation2.relu=1]="relu",FusableActivation2[FusableActivation2.relu6=2]="relu6",FusableActivation2[FusableActivation2.prelu=3]="prelu",FusableActivation2[FusableActivation2.leakyrelu=4]="leakyrelu"})(FusableActivation||(FusableActivation={}));var wasmFusedMatMul;function setup(backend3){wasmFusedMatMul=backend3.wasm.cwrap(_FusedMatMul,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function fusedBatchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b,bias,preluActivationWeights}=inputs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs,aId=backend3.dataIdMap.get(a.dataId).id,bId=backend3.dataIdMap.get(b.dataId).id,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${biasData.shape.length}.`);biasId=biasData.id}let preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id,fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let leftDim=transposeA?a.shape[2]:a.shape[1],rightDim=transposeB?b.shape[1]:b.shape[2],batchDim=a.shape[0],out=backend3.makeOutput([batchDim,leftDim,rightDim],a.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer);return wasmFusedMatMul(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,transposeA,transposeB,fusedActivation,biasId,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedMatMulConfig={kernelName:_FusedMatMul,backendName:"wasm",setupFunc:setup,kernelFunc:fusedBatchMatMul};function createUnaryKernelConfig(kernelName){let wasmFunc9;function setupFunc3(backend3){wasmFunc9=backend3.wasm.cwrap(kernelName,null,["number","number"])}function kernelFunc3(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc9(xId,outId),out}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var absConfig3=createUnaryKernelConfig(Abs);function createBinaryKernelConfig(kernelName,supportsFullBroadcast17,dtype){let wasmFunc9;function setupFunc3(backend3){wasmFunc9=backend3.wasm.cwrap(kernelName,null,["number","array","number","number","array","number","number","number"])}function kernelFunc3(args){let{backend:backend3,inputs}=args,{a,b}=inputs,aId=backend3.dataIdMap.get(a.dataId).id,bId=backend3.dataIdMap.get(b.dataId).id,outputType=dtype!=null?dtype:a.dtype,newShape=backend_util_exports.assertAndGetBroadcastShape(a.shape,b.shape),out=backend3.makeOutput(newShape,outputType);if(util_exports.sizeFromShape(newShape)===0)return out;let aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer),outId=backend3.dataIdMap.get(out.dataId).id,kernelFunc4=()=>wasmFunc9(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig3={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity4},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose11(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose11,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape77},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul3(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape77({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape77({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig3={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul3};function cast47(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast47},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig2={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat17(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),$inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity4({inputs:{x:$inputs[0]},backend:backend3});let out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose11({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse13?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose11({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig3={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum7},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace4(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig3={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace4},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d5(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig3={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d5},supportsFullBroadcast2=!1,equalConfig3=createBinaryKernelConfig(Equal,supportsFullBroadcast2,"bool"),expConfig3=createUnaryKernelConfig(Exp);function expandDims5(args){let{inputs,attrs,backend:backend3}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape77({inputs:{x:input2},backend:backend3,attrs:{shape:newShape}})}var expandDimsConfig3={kernelName:ExpandDims,backendName:"wasm",kernelFunc:expandDims5};function fill6(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig3={kernelName:Fill,backendName:"wasm",kernelFunc:fill6},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},floorConfig3=createUnaryKernelConfig(Floor),supportsFullBroadcast3=!1,floorDivConfig3=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast3),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean8,variance,offset,scale:scale22}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean8.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale22!=null?backend3.dataIdMap.get(scale22.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d2(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedConv2DConfig3={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d2},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedDepthwiseConv2DConfig3={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd3(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig3={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd3},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV23(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis,batchDims}=attrs,parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis,batchDims),flattenX=reshape77({inputs:{x},attrs:{shape:[shapeInfo.batchSize,shapeInfo.outerSize,shapeInfo.dimSize,shapeInfo.sliceSize]},backend:backend3}),indicesSize=util_exports.sizeFromShape(indices.shape),flattenIndex=reshape77({inputs:{x:indices},attrs:{shape:[shapeInfo.batchSize,indicesSize/shapeInfo.batchSize]},backend:backend3}),flattenOutputShape=[shapeInfo.batchSize,shapeInfo.outerSize,indicesSize/shapeInfo.batchSize,shapeInfo.sliceSize],out=backend3.makeOutput(flattenOutputShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let stridesSize=flattenX.shape.length-1,xData=backend3.dataIdMap.get(flattenX.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(flattenIndex.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenX.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenOutputShape)).buffer);return wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,shapeInfo.batchSize,outStridesBytes,outId),out.shape=shapeInfo.outputShape,out}var gatherV2Config3={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV23},supportsFullBroadcast4=!1,greaterConfig3=createBinaryKernelConfig(Greater,supportsFullBroadcast4,"bool"),supportsFullBroadcast5=!1,greaterEqualConfig3=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast5,"bool"),wasmFunc3;function setupFunc2(backend3){wasmFunc3=backend3.wasm.cwrap(LeakyRelu,null,["number","number","number"])}function leakyRelu4(args){let{inputs:{x},attrs:{alpha},backend:backend3}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmFunc3(xId,alpha,outId)}return out}var leakyReluConfig3={kernelName:LeakyRelu,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:leakyRelu4},supportsFullBroadcast6=!1,lessConfig3=createBinaryKernelConfig(Less,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessEqualConfig3=createBinaryKernelConfig(LessEqual,supportsFullBroadcast7,"bool"),logConfig3=createUnaryKernelConfig(Log),supportsFullBroadcast8=!1,logicalAndConfig3=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast8,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max10(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max10},supportsFullBroadcast9=!1,maximumConfig3=createBinaryKernelConfig(Maximum,supportsFullBroadcast9),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMean;function setup21(backend3){wasmMean=backend3.wasm.cwrap(Mean,null,["number, number, number"])}function mean7(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("mean",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),castedInput=input2;input2.dtype!=="float32"&&(castedInput=cast47({backend:backend3,inputs:{x:input2},attrs:{dtype:"float32"}}),inputId=backend3.dataIdMap.get(castedInput.dataId).id);let out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMean(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return input2.dtype!=="float32"&&backend3.disposeData(castedInput.dataId),out}var meanConfig3={kernelName:Mean,backendName:"wasm",setupFunc:setup21,kernelFunc:mean7},wasmMin;function setup22(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min8(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig3={kernelName:Min,backendName:"wasm",setupFunc:setup22,kernelFunc:min8},supportsFullBroadcast10=!1,minimumConfig3=createBinaryKernelConfig(Minimum,supportsFullBroadcast10),supportsFullBroadcast11=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast11),negConfig3=createUnaryKernelConfig(Neg);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config3={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup23,kernelFunc},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV43(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup24,kernelFunc:nonMaxSuppressionV43},wasmFunc6;function setup25(backend3){wasmFunc6=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc6(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup25,kernelFunc:kernelFunc2},supportsFullBroadcast12=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast12,"bool"),wasmOneHot;function setup26(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot4(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig3={kernelName:OneHot,backendName:"wasm",setupFunc:setup26,kernelFunc:oneHot4};function onesLike4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig3={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike4};function pack3(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims5({inputs:{input:inputs[0]},backend:backend3,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=inputs.map(t=>expandDims5({inputs:{input:t},backend:backend3,attrs:{dim:axis}}));return concat17({inputs:expandedTensors,backend:backend3,attrs:{axis}})}var packConfig3={kernelName:Pack,backendName:"wasm",kernelFunc:pack3},wasmPadV2;function setup27(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad9(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config3={kernelName:PadV2,backendName:"wasm",kernelFunc:pad9,setupFunc:setup27},supportsFullBroadcast13=!1,powConfig3=createBinaryKernelConfig(Pow,supportsFullBroadcast13),wasmPrelu;function setup28(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu8(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig3={kernelName:Prelu,backendName:"wasm",setupFunc:setup28,kernelFunc:prelu8},wasmProd;function setup29(backend3){wasmProd=backend3.wasm.cwrap(Prod,null,["number","number","number","number"])}function prod6(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("prod",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmProd(inputId,reduceSize,CppDType[out.dtype],outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var prodConfig3={kernelName:Prod,backendName:"wasm",setupFunc:setup29,kernelFunc:prod6},range6=args=>{let{backend:backend3,attrs}=args,{start,stop,step:step9,dtype}=attrs,values=rangeImpl(start,stop,step9,dtype),out=backend3.makeOutput([values.length],dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.set(values),out},rangeConfig3={kernelName:Range,backendName:"wasm",kernelFunc:range6},supportsFullBroadcast14=!0,realDivConfig3=createBinaryKernelConfig(RealDiv,supportsFullBroadcast14),reluConfig3=createUnaryKernelConfig(Relu),relu6Config3=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup30(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number","number"])}function resizeBilinear4(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast47({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,halfPixelCenters?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig3={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup30,kernelFunc:resizeBilinear4},wasmReverse;function setup31(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse12(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity4({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape77({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig3={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse12,setupFunc:setup31},wasmRotate;function setup32(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup32},rsqrtConfig3=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup33(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd3(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig3={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup33,kernelFunc:scatterNd3},wasmSelect;function setup34(backend3){wasmSelect=backend3.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function select3(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectConfig3={kernelName:Select,backendName:"wasm",kernelFunc:select3,setupFunc:setup34},wasmFunc7;function setup35(backend3){wasmFunc7=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid8(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId),out}var sigmoidConfig3={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup35,kernelFunc:sigmoid8},sinConfig3=createUnaryKernelConfig(Sin);function slice18(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.readSync(x.dataId),out=backend3.makeOutput(size_,x.dtype),xStrides=util_exports.computeStrides(x.shape),outData=backend3.dataIdMap.get(out.dataId);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);if(x.dtype==="string")outData.stringBytes=xVals.slice(flatOffset,flatOffset+util_exports.sizeFromShape(size_));else{let outVals2=backend3.typedArrayFromHeap(out);outVals2.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_)))}return out}if(x.dtype==="string"){let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);return outData.stringBytes=res,out}let outVals=backend3.typedArrayFromHeap(out),rank=x.shape.length;if(rank===2)slice2d2(xVals,xStrides[0],outVals,begin_,size_);else if(rank===3)slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_);else if(rank===4)slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_);else{let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);outVals.set(res)}return out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;i{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice18({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig3={kernelName:SplitV,backendName:"wasm",kernelFunc:splitV3},sqrtConfig3=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup37(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice4(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape77({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice18({inputs:{x},attrs:{begin,size},backend:backend3});return reshape77({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape77({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig3={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup37,kernelFunc:stridedSlice4},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup38(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum28(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig3={kernelName:Sum,backendName:"wasm",setupFunc:setup38,kernelFunc:sum28},tanhConfig3=createUnaryKernelConfig(Tanh),wasmTile;function setup39(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile9(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i{let{x}=inputs,{k,sorted}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),outputShape=x.shape.slice();outputShape[outputShape.length-1]=k;let outValues=backend3.makeOutput(outputShape,x.dtype),outValuesId=backend3.dataIdMap.get(outValues.dataId).id,outIndices=backend3.makeOutput(outputShape,"int32"),outIndicesId=backend3.dataIdMap.get(outIndices.dataId).id;return wasmTopK(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],k,sorted,outValuesId,outIndicesId),[outValues,outIndices]},topKConfig3={kernelName:TopK,backendName:"wasm",setupFunc:setup40,kernelFunc:topk4};function unpack3(args){let{inputs,backend:backend3,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let numOutputs=value.shape[axis],rank=value.shape.length,outShape=new Array(rank-1),outIndex=0;for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig3={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack3};function zerosLike4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig3={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike4},kernelConfigs3=[absConfig3,addConfig3,addNConfig3,argMaxConfig3,avgPoolConfig3,batchMatMulConfig3,castConfig3,clipByValueConfig2,concatConfig3,conv2DConfig3,conv2DBackpropInputConfig3,cosConfig3,cropAndResizeConfig3,cumsumConfig3,depthToSpaceConfig3,depthwiseConv2dNativeConfig3,equalConfig3,expConfig3,expandDimsConfig3,fillConfig3,flipLeftRightConfig3,floorConfig3,floorDivConfig3,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig3,fusedDepthwiseConv2DConfig3,gatherNdConfig3,gatherV2Config3,greaterConfig3,greaterEqualConfig3,identityConfig3,leakyReluConfig3,lessConfig3,lessEqualConfig3,logConfig3,logicalAndConfig3,maxConfig3,maximumConfig3,maxPoolConfig3,meanConfig3,minConfig3,minimumConfig3,multiplyConfig3,negConfig3,nonMaxSuppressionV3Config3,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig3,onesLikeConfig3,packConfig3,padV2Config3,powConfig3,preluConfig3,prodConfig3,rangeConfig3,realDivConfig3,reluConfig3,relu6Config3,reshapeConfig3,resizeBilinearConfig3,reverseConfig3,rotateWithOffsetConfig3,rsqrtConfig3,scatterNdConfig3,selectConfig3,sigmoidConfig3,sinConfig3,sliceConfig3,softmaxConfig3,splitVConfig3,sqrtConfig3,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig3,subConfig3,sumConfig3,tanhConfig3,tileConfig3,topKConfig3,transposeConfig3,unpackConfig3,zerosLikeConfig3];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data=this.dataIdMap.get(dataId);this.wasm._free(data.memoryOffset),this.wasm.tfjs.disposeData(data.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer9=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer9,memoryOffset,size);case"int32":return new Int32Array(buffer9,memoryOffset,size);case"bool":return new Uint8Array(buffer9,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer9,dtype){switch(dtype){case"float32":return new Float32Array(buffer9);case"int32":return new Int32Array(buffer9);case"bool":return new Uint8Array(buffer9);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version15="2.8.1",WASM_PRIORITY=2;registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);var draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven2,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range2,round:()=>round3});var Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor,dim){return tensor instanceof Tensor&&tensor.shape.length===dim}function isTensor1D(tensor){return isTensor(tensor,1)}function isTensor2D(tensor){return isTensor(tensor,2)}function isTensor3D(tensor){return isTensor(tensor,3)}function isTensor4D(tensor){return isTensor(tensor,4)}function isFloat(num){return num%1!==0}function isEven2(num){return num%2===0}function round3(num,prec=2){let f=Math.pow(10,prec);return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale3=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale3),Math.round(height*scale3))}function getCenterPoint(pts){return pts.reduce((sum3,pt)=>sum3.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range2(num,start,step2){return Array(num).fill(0).map((_,i)=>start+i*step2)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&0<=num&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min2,x)=>xymax2max2({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}function normalize(x,meanRgb){return tidy(()=>{let[r,g,b]=meanRgb,avg_r=fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=concat([avg_r,avg_g,avg_b],3);return sub(x,avg_rgb)})}function padToSquare(imgTensor,isCenterImage=!1){return tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmount2=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmount2,fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>cast(t,"float32"));return concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array2=inputArray.slice();for(let i=array2.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array2[i];array2[i]=array2[j],array2[j]=x}return array2}function sigmoid2(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},options);return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round3(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json18){let descriptors=json18.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json18.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return Object.assign({},sourceObj,extension)}function createBrowserEnv(){let fetch3=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")},readFile=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:fetch3,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?function(filePath){return new Promise((res,rej)=>{fs.readFile(filePath,function(err,buffer2){return err?rej(err):res(buffer2)})})}:function(){throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=function(){if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=function(){if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch3=global.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch:fetch3,...fileSystem}}function isBrowser2(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env17){environment=env17}function initialize(){if(isBrowser2())return setEnv(createBrowserEnv());if(isNodejs.isNodejs())return setEnv(createNodejsEnv())}function monkeyPatch(env17){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env17;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env17.createCanvasElement||(()=>new Canvas),environment.createImageElement=env17.createImageElement||(()=>new Image),environment.ImageData=env17.ImageData||environment.ImageData,environment.Video=env17.Video||environment.Video,environment.fetch=env17.fetch||environment.fetch,environment.readFile=env17.readFile||environment.readFile}var env2={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser:isBrowser2,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env2.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env2.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions(Object.assign({},defaultDrawLabelOptions,drawLabelOptions))}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round3(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}function isMediaLoaded(media){let{Image,Video}=env2.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env2.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{if(!(buf instanceof Blob))return reject("bufferToImage - expected buf to be of type: Blob");let reader=new FileReader;reader.onload=()=>{if(typeof reader.result!="string")return reject("bufferToImage - expected reader.result to be a string, in onload");let img=env2.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input2){let{Image,Video}=env2.getEnv();return input2 instanceof Image?new Dimensions(input2.naturalWidth,input2.naturalHeight):input2 instanceof Video?new Dimensions(input2.videoWidth,input2.videoHeight):new Dimensions(input2.width,input2.height)}function createCanvas2({width,height}){let{createCanvasElement}=env2.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env2.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas2({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env2.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await browser_exports.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input2){let{Image,Canvas,Video}=env2.getEnv();return input2 instanceof Image||input2 instanceof Canvas||input2 instanceof Video}function imageToSquare(input2,inputSize,centerImage=!1){let{Image,Canvas}=env2.getEnv();if(!(input2 instanceof Image||input2 instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input2),scale3=inputSize/Math.max(dims.height,dims.width),width=scale3*dims.width,height=scale3*dims.height,targetCanvas=createCanvas2({width:inputSize,height:inputSize}),inputCanvas=input2 instanceof Canvas?input2:createCanvasFromMedia(input2),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input2)){this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape;return}if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape.slice(1);return}let canvas=input2 instanceof env2.getEnv().Canvas?input2:createCanvasFromMedia(input2);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range2(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tidy(()=>{let inputTensors=range2(this.batchSize,0,1).map(batchIdx=>{let input2=this.getInput(batchIdx);if(input2 instanceof Tensor){let imgTensor=isTensor4D(input2)?input2:input2.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input2 instanceof env2.getEnv().Canvas)return browser_exports.fromPixels(imageToSquare(input2,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input2}`)}),batchTensor=stack(inputTensors.map(t=>cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input2,i)=>{if(!isMediaElement(input2)&&!isTensor3D(input2)&&!isTensor4D(input2))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input2=>isMediaElement(input2)&&awaitMediaLoaded(input2))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input2,detections){let{Canvas}=env2.getEnv(),canvas=input2;if(!(input2 instanceof Canvas)){let netInput=await toNetInput(input2);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas2({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init2){let fetch3=env2.getEnv().fetch,res=await fetch3(url,init2);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return io_exports.loadWeights(manifest,modelBaseUri)}function matchDimensions(input2,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input2.width=width,input2.height=height,{width,height}}var NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof Variable))}variable(){this.getFrozenParams().forEach(({path,tensor})=>{this.reassignParamFromPath(path,tensor.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable2})=>{let tensor=tensor4(variable2.dataSync());variable2.dispose(),this.reassignParamFromPath(path,tensor)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor})=>Array.from(tensor.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env2.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights2=io_exports.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights2(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}};function depthwiseSeparableConv(x,params,stride){return tidy(()=>{let out=separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=add2(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return relu(add2(out1,add2(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=relu(add2(out1,add2(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return relu(add2(out1,add2(out2,add2(out3,out4))))})}function convLayer(x,params,padding="same",withRelu=!1){return tidy(()=>{let out=add2(conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}function extractConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,filterSize,mappedPrefix){let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}function extractFCParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let fc_weights=tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let depthwise_filter=tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return function(prefix){let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return function(originalPath,paramRank,mappedPath){let tensor=weightMap[originalPath];if(!isTensor(tensor,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return function(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}};function fullyConnectedLayer(x,params){return tidy(()=>add2(matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input2){return tidy(()=>softmax(this.runNet(input2)))}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictExpressions(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return Object.assign({},sourceObj,extension)}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(expr2=>expr2.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(expr2=>`${expr2.expression} (${round3(expr2.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return Object.assign({},sourceObj,extension)}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range2(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range2(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return add2(conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=maxPool(out,[3,3],[2,2],"same"),out=add2(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv2,[1,1]),out=add2(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(256)),out=relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range2(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2,pooled=avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input2){return tidy(()=>{let{age,gender}=this.runNet(input2);return{age,gender:softmax(gender)}})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictAgeAndGender(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),ages=unstack(out.age),genders=unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale3=inputSize/Math.max(height,width);return{width:width*scale3,height:height*scale3}}),batchSize=inputDimensions.length;return tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>stack([fill([68],fillX,"float32"),fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding2=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding2(batchIdx,(w,h)=>wgetPadding2(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input2){return tidy(()=>{let out=this.runNet(input2);return this.postProcess(out,input2.inputSize,input2.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async detectLandmarks(input2){let netInput=await toNetInput(input2),landmarkTensors=tidy(()=>unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven2(i)),yCoords=landmarksArray.filter((_,i)=>!isEven2(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};function scale2(x,params){return add2(mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=conv2d(x,filters,strides,padding);return out=add2(out,bias),out=scale2(out,params.scale),withRelu?relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tidy(()=>transpose(tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tensor1d(extractWeights(numWeights)),biases=tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale3=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale3}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tidy(()=>transpose(tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale3=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale3}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),fc=weightMap.fc;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=add2(out,x),out=relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=avgPool(x,2,2,"valid"),zeros2=zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=zeros(padShapeX);out=concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=zeros(padShapeY);out=concat([out,zerosH],2)}return pooled=isPad?concat([pooled,zeros2],3):pooled,out=add2(pooled,out),out=relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(256)),out=convDown(normalized,params.conv32_down);out=maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=matMul(globalAvg,params.fc);return fullyConnected})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async computeFaceDescriptor(input2){let netInput=await toNetInput(input2),faceDescriptorTensors=tidy(()=>unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return Object.assign({},sourceObj,extension)}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return Object.assign({},sourceObj,extension)}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return Object.assign({},sourceObj,extension)}function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tensor1d(extractWeights(numChannels)),batch_norm_offset=tensor1d(extractWeights(numChannels)),batch_norm_mean=tensor1d(extractWeights(numChannels)),batch_norm_variance=tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function pointwiseConvLayer(x,params,strides){return tidy(()=>{let out=conv2d(x,params.filters,strides,"same");return out=add2(out,params.batch_norm_offset),clipByValue(out,0,6)})}var epsilon3=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tidy(()=>{let out=depthwiseConv2d(x,params.filters,strides,"same");return out=batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon3),clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function nonMaxSuppression3(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function getCenterCoordinatesAndSizesLayer(x){let vec=unstack(transpose(x,[1,0])),sizes=[sub(vec[2],vec[0]),sub(vec[3],vec[1])],centers=[add2(vec[0],div(sizes[0],scalar(2))),add2(vec[1],div(sizes[1],scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=unstack(transpose(x1,[1,0])),div0_out=div(mul(exp(div(vec[2],scalar(5))),sizes[0]),scalar(2)),add0_out=add2(mul(div(vec[0],scalar(10)),sizes[0]),centers[0]),div1_out=div(mul(exp(div(vec[3],scalar(5))),sizes[1]),scalar(2)),add1_out=add2(mul(div(vec[1],scalar(10)),sizes[1]),centers[1]);return transpose(stack([sub(add0_out,div0_out),sub(add1_out,div1_out),add2(add0_out,div0_out),add2(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(reshape(tile(params.extra_dim,[batchSize,1,1]),[-1,4]),reshape(boxPredictions,[-1,4]));boxes=reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=sigmoid(slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=unstack(boxes),scoresByBatch=unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}function boxPredictionLayer(x,params){return tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input2){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(512,!1),"float32"),x=sub(mul(batchTensor,scalar(.007843137718737125)),scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async locateFaces(input2,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input2),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression3(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME2="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",isNumber2=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber2(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber2(a.x)&&isNumber2(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber2)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}function leaky(x){return tidy(()=>{let min2=mul(x,scalar(.10000000149011612));return add2(relu(sub(x,min2)),min2)})}function convWithBatchNorm(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=conv2d(out,params.conv.filters,[1,1],"valid"),out=sub(out,params.bn.sub),out=mul(out,params.bn.truediv),out=add2(out,params.conv.bias),leaky(out)})}function depthwiseSeparableConv3(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=add2(out,params.bias),leaky(out)})}function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub2=tensor1d(extractWeights(size)),truediv=tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub2,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub2=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub2,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2SizeType;(function(TinyYolov2SizeType2){TinyYolov2SizeType2[TinyYolov2SizeType2.XS=224]="XS",TinyYolov2SizeType2[TinyYolov2SizeType2.SM=320]="SM",TinyYolov2SizeType2[TinyYolov2SizeType2.MD=416]="MD",TinyYolov2SizeType2[TinyYolov2SizeType2.LG=608]="LG"})(TinyYolov2SizeType||(TinyYolov2SizeType={}));var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input2,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input2,inputSize){return await this.forwardInput(await toNetInput(input2),inputSize)}async detect(input2,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input2),out=await this.forwardInput(netInput,inputSize),out0=tidy(()=>unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression2(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid2(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid2(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,width2=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,height2=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-width2/2,y=ctY-height2/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+width2,y+height2),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max2,curr)=>max2.classScore>curr.classScore?max2:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2=Object.assign({},{withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"]},withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0});super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){let objectDetections=await this.detect(input2,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME2}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};async function extractAllFacesAndComputeResults(parentResults,input2,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input2 instanceof Tensor?await extractFaceTensors(input2,faceBoxes):await extractFaces(input2,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input2,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input2,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){let objectDetections=await this.detect(input2,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input2,options)=>nets.ssdMobilenetv1.locateFaces(input2,options),tinyFaceDetector=(input2,options)=>nets.tinyFaceDetector.locateFaces(input2,options),tinyYolov23=(input2,options)=>nets.tinyYolov2.locateFaces(input2,options),detectFaceLandmarks=input2=>nets.faceLandmark68Net.detectLandmarks(input2),detectFaceLandmarksTiny=input2=>nets.faceLandmark68TinyNet.detectLandmarks(input2),computeFaceDescriptor=input2=>nets.faceRecognitionNet.computeFaceDescriptor(input2),recognizeFaceExpressions=input2=>nets.faceExpressionNet.predictExpressions(input2),predictAgeAndGender=input2=>nets.ageGenderNet.predictAgeAndGender(input2),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input2){super();this.parentTask=parentTask;this.input=input2}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input2,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input2;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input2,options=new SsdMobilenetv1Options){super();this.input=input2;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input:input2,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input3=>nets.tinyFaceDetector.locateFaces(input3,options):options instanceof SsdMobilenetv1Options?input3=>nets.ssdMobilenetv1.locateFaces(input3,options):options instanceof TinyYolov2Options?input3=>nets.tinyYolov2.locateFaces(input3,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input2)}runAndExtendWithFaceDetections(){return new Promise(async res=>{let detections=await this.run();return res(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async res=>{let detection=await this.run();return res(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input2,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input2,options)}function detectAllFaces(input2,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input2,options)}async function allFacesSsdMobilenetv1(input2,minConfidence){return console.warn("allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input2,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input2,forwardParams={}){return console.warn("allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input2,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count2=1,createUniqueLabel=()=>`person ${count2++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json18){let labeledDescriptors=json18.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json18.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var version3="0.9.5",node=typeof process!="undefined",browser=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version4={faceapi:version3,node,browser};export{AgeGenderNet,BoundingBox,Box,ComposableTask,ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask,DetectAllFacesTask,DetectFaceLandmarksTaskBase,DetectFacesTaskBase,DetectSingleFaceLandmarksTask,DetectSingleFaceTask,Dimensions,FACE_EXPRESSION_LABELS,FaceDetection,FaceDetectionNet,FaceExpressionNet,FaceExpressions,FaceLandmark68Net,FaceLandmark68TinyNet,FaceLandmarkNet,FaceLandmarks,FaceLandmarks5,FaceLandmarks68,FaceMatch,FaceMatcher,FaceRecognitionNet,Gender,LabeledBox,LabeledFaceDescriptors,NetInput,NeuralNetwork,ObjectDetection,Point,PredictedBox,Rect,SsdMobilenetv1,SsdMobilenetv1Options,TinyFaceDetector,TinyFaceDetectorOptions,TinyYolov2,TinyYolov2Options,TinyYolov2SizeType,allFaces,allFacesSsdMobilenetv1,allFacesTinyYolov2,awaitMediaLoaded,bufferToImage,computeFaceDescriptor,createCanvas2 as createCanvas,createCanvasFromMedia,createFaceDetectionNet,createFaceRecognitionNet,createSsdMobilenetv1,createTinyFaceDetector,createTinyYolov2,detectAllFaces,detectFaceLandmarks,detectFaceLandmarksTiny,detectLandmarks,detectSingleFace,draw_exports as draw,env2 as env,euclideanDistance,extendWithAge,extendWithFaceDescriptor,extendWithFaceDetection,extendWithFaceExpressions,extendWithFaceLandmarks,extendWithGender,extractFaceTensors,extractFaces,fetchImage,fetchJson,fetchNetWeights,fetchOrThrow,getContext2dOrThrow,getMediaDimensions,imageTensorToCanvas,imageToSquare,inverseSigmoid,iou,isMediaElement,isMediaLoaded,isWithAge,isWithFaceDetection,isWithFaceExpressions,isWithFaceLandmarks,isWithGender,loadAgeGenderModel,loadFaceDetectionModel,loadFaceExpressionModel,loadFaceLandmarkModel,loadFaceLandmarkTinyModel,loadFaceRecognitionModel,loadSsdMobilenetv1Model,loadTinyFaceDetectorModel,loadTinyYolov2Model,loadWeightMap,locateFaces,matchDimensions,minBbox,nets,nonMaxSuppression2 as nonMaxSuppression,normalize,padToSquare,predictAgeAndGender,recognizeFaceExpressions,resizeResults,resolveInput,shuffleArray,sigmoid2 as sigmoid,ssdMobilenetv1,tfjs_esm_exports as tf,tinyFaceDetector,tinyYolov23 as tinyYolov2,toNetInput,utils_exports as utils,validateConfig,version4 as version}; + `}};function unsortedSegmentSum3(args){let{inputs,backend:backend3,attrs}=args,{x,segmentIds}=inputs,{numSegments}=attrs,xRank=x.shape.length,toDispose=[],axis=0,permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!=null&&(permutedX=transpose10({inputs:{x},backend:backend3,attrs:{perm:permutation}}),toDispose.push(permutedX),axis=backend_util_exports.getInnerMostAxes(1,xRank)[0]);let outShape=backend_util_exports.segment_util.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=reshape76({inputs:{x:permutedX},backend:backend3,attrs:{shape:[-1,inSize]}});toDispose.push(a2D);let outputDType=sumOutType(x.dtype),segOpCompute=(x2,segOpType,segmentIds2,dtype,numSegments2)=>{let batchSize=x2.shape[0],inSize2=x2.shape[1],windowSize=backend_util_exports.segment_util.segOpComputeOptimalWindowSize(inSize2,numSegments2),segOpInfo={windowSize,inSize:inSize2,batchSize,numSegments:numSegments2},program=new SegmentOpProgram(segOpInfo,segOpType),output=backend3.compileAndRun(program,[x2,segmentIds2],dtype);if(toDispose.push(output),output.shape[1]===numSegments2)return output;let rangeInfo=range5({backend:backend3,attrs:{start:0,stop:numSegments2,step:1,dtype:"float32"}}),tileInfo=tile8({inputs:{x:rangeInfo},backend:backend3,attrs:{reps:[inSize2/windowSize]}});toDispose.push(rangeInfo),toDispose.push(tileInfo);let result2=segOpCompute(output,segOpType,tileInfo,dtype,numSegments2);return result2},segOpResult=segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments),reshaped=reshape76({inputs:{x:segOpResult},backend:backend3,attrs:{shape:outShape}}),result=reshaped;if(permutation!=null){toDispose.push(reshaped);let perm=backend_util_exports.getUndoAxesPermutation(permutation);result=transpose10({inputs:{x:result},backend:backend3,attrs:{perm}})}return toDispose.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig2={kernelName:UnsortedSegmentSum,backendName:"webgl",kernelFunc:unsortedSegmentSum3},kernelConfigs2=[LRNConfig,LRNGradConfig,_fusedMatMulConfig2,absConfig2,acosConfig2,acoshConfig2,addConfig2,addNConfig2,allConfig2,anyConfig2,argMaxConfig2,argMinConfig2,asinConfig2,asinhConfig2,atan2Config2,atanConfig2,atanhConfig2,avgPool3DConfig2,avgPoolConfig2,avgPoolGrad3DConfig,avgPoolGradConfig3,batchMatMulConfig2,batchNormConfig2,batchToSpaceNDConfig2,bincountConfig2,castConfig2,ceilConfig2,clipByValueConfig,complexAbsConfig2,complexConfig2,concatConfig2,conv2DBackpropFilterConfig2,conv2DBackpropInputConfig2,conv2DConfig2,conv3DBackpropFilterV2Config2,conv3DBackpropInputConfig,conv3DConfig2,cosConfig2,coshConfig2,cropAndResizeConfig2,cumsumConfig2,denseBincountConfig2,depthToSpaceConfig2,depthwiseConv2dNativeBackpropFilterConfig2,depthwiseConv2dNativeBackpropInputConfig2,depthwiseConv2dNativeConfig2,diagConfig2,dilation2DConfig,eluConfig2,eluGradConfig3,equalConfig2,erfConfig2,expConfig2,expandDimsConfig2,expm1Config2,fftConfig2,fillConfig2,flipLeftRightConfig2,floorConfig2,floorDivConfig2,fromPixelsConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig2,gatherV2Config2,greaterConfig2,greaterEqualConfig2,identityConfig2,ifftConfig2,imagConfig2,isFiniteConfig2,isInfConfig2,isNaNConfig2,leakyReluConfig2,lessConfig2,lessEqualConfig2,linSpaceConfig2,log1pConfig2,logConfig2,logicalAndConfig2,logicalNotConfig2,logicalOrConfig2,maxConfig2,maxPool3DConfig2,maxPoolConfig2,maxPoolGrad3DConfig,maxPoolGradConfig3,maxPoolWithArgmaxConfig2,maximumConfig2,meanConfig2,minConfig2,minimumConfig2,mirrorPadConfig2,modConfig2,multinomialConfig2,multiplyConfig2,negConfig2,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config2,nonMaxSuppressionV5Config2,notEqualConfig2,oneHotConfig2,onesLikeConfig2,packConfig2,padV2Config2,powConfig2,preluConfig2,prodConfig2,rangeConfig2,realConfig2,realDivConfig2,reciprocalConfig2,relu6Config2,reluConfig2,reshapeConfig2,resizeBilinearConfig2,resizeBilinearGradConfig3,resizeNearestNeighborConfig2,resizeNearestNeighborGradConfig3,reverseConfig2,rotateWithOffsetConfig2,roundConfig2,rsqrtConfig2,scatterNdConfig2,selectConfig2,seluConfig2,sigmoidConfig2,signConfig2,sinConfig2,sinhConfig2,sliceConfig2,softmaxConfig2,softplusConfig2,spaceToBatchNDConfig2,sparseToDenseConfig2,splitVConfig2,sqrtConfig2,squareConfig2,squaredDifferenceConfig2,stepConfig2,stridedSliceConfig2,subConfig2,sumConfig2,tanConfig2,tanhConfig2,tileConfig2,topKConfig2,transposeConfig2,uniqueConfig2,unpackConfig2,unsortedSegmentSumConfig2,zerosLikeConfig2];for(let kernelConfig of kernelConfigs2)registerKernel(kernelConfig);var version12="2.8.1",version14={"tfjs-core":version,"tfjs-backend-cpu":version10,"tfjs-backend-webgl":version11,"tfjs-data":version8,"tfjs-layers":version2,"tfjs-converter":version6,tfjs:version12},CppDType;(function(CppDType2){CppDType2[CppDType2.float32=0]="float32",CppDType2[CppDType2.int32=1]="int32",CppDType2[CppDType2.bool=2]="bool",CppDType2[CppDType2.string=3]="string",CppDType2[CppDType2.complex64=4]="complex64"})(CppDType||(CppDType={}));var FusableActivation;(function(FusableActivation2){FusableActivation2[FusableActivation2.linear=0]="linear",FusableActivation2[FusableActivation2.relu=1]="relu",FusableActivation2[FusableActivation2.relu6=2]="relu6",FusableActivation2[FusableActivation2.prelu=3]="prelu",FusableActivation2[FusableActivation2.leakyrelu=4]="leakyrelu"})(FusableActivation||(FusableActivation={}));var wasmFusedMatMul;function setup(backend3){wasmFusedMatMul=backend3.wasm.cwrap(_FusedMatMul,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function fusedBatchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b,bias,preluActivationWeights}=inputs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs,aId=backend3.dataIdMap.get(a.dataId).id,bId=backend3.dataIdMap.get(b.dataId).id,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${biasData.shape.length}.`);biasId=biasData.id}let preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id,fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let leftDim=transposeA?a.shape[2]:a.shape[1],rightDim=transposeB?b.shape[1]:b.shape[2],batchDim=a.shape[0],out=backend3.makeOutput([batchDim,leftDim,rightDim],a.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer);return wasmFusedMatMul(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,transposeA,transposeB,fusedActivation,biasId,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedMatMulConfig={kernelName:_FusedMatMul,backendName:"wasm",setupFunc:setup,kernelFunc:fusedBatchMatMul};function createUnaryKernelConfig(kernelName){let wasmFunc9;function setupFunc3(backend3){wasmFunc9=backend3.wasm.cwrap(kernelName,null,["number","number"])}function kernelFunc3(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc9(xId,outId),out}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var absConfig3=createUnaryKernelConfig(Abs);function createBinaryKernelConfig(kernelName,supportsFullBroadcast17,dtype){let wasmFunc9;function setupFunc3(backend3){wasmFunc9=backend3.wasm.cwrap(kernelName,null,["number","array","number","number","array","number","number","number"])}function kernelFunc3(args){let{backend:backend3,inputs}=args,{a,b}=inputs,aId=backend3.dataIdMap.get(a.dataId).id,bId=backend3.dataIdMap.get(b.dataId).id,outputType=dtype!=null?dtype:a.dtype,newShape=backend_util_exports.assertAndGetBroadcastShape(a.shape,b.shape),out=backend3.makeOutput(newShape,outputType);if(util_exports.sizeFromShape(newShape)===0)return out;let aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer),outId=backend3.dataIdMap.get(out.dataId).id,kernelFunc4=()=>wasmFunc9(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig3={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity4},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose11(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose11,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape77},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul3(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape77({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape77({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig3={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul3};function cast47(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast47},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig2={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat17(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),$inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity4({inputs:{x:$inputs[0]},backend:backend3});let out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose11({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse13?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose11({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig3={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum7},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace4(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig3={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace4},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d5(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig3={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d5},supportsFullBroadcast2=!1,equalConfig3=createBinaryKernelConfig(Equal,supportsFullBroadcast2,"bool"),expConfig3=createUnaryKernelConfig(Exp);function expandDims5(args){let{inputs,attrs,backend:backend3}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape77({inputs:{x:input2},backend:backend3,attrs:{shape:newShape}})}var expandDimsConfig3={kernelName:ExpandDims,backendName:"wasm",kernelFunc:expandDims5};function fill6(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig3={kernelName:Fill,backendName:"wasm",kernelFunc:fill6},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},floorConfig3=createUnaryKernelConfig(Floor),supportsFullBroadcast3=!1,floorDivConfig3=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast3),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean8,variance,offset,scale:scale22}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean8.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale22!=null?backend3.dataIdMap.get(scale22.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d2(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedConv2DConfig3={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d2},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedDepthwiseConv2DConfig3={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd3(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig3={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd3},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV23(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis,batchDims}=attrs,parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis,batchDims),flattenX=reshape77({inputs:{x},attrs:{shape:[shapeInfo.batchSize,shapeInfo.outerSize,shapeInfo.dimSize,shapeInfo.sliceSize]},backend:backend3}),indicesSize=util_exports.sizeFromShape(indices.shape),flattenIndex=reshape77({inputs:{x:indices},attrs:{shape:[shapeInfo.batchSize,indicesSize/shapeInfo.batchSize]},backend:backend3}),flattenOutputShape=[shapeInfo.batchSize,shapeInfo.outerSize,indicesSize/shapeInfo.batchSize,shapeInfo.sliceSize],out=backend3.makeOutput(flattenOutputShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let stridesSize=flattenX.shape.length-1,xData=backend3.dataIdMap.get(flattenX.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(flattenIndex.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenX.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenOutputShape)).buffer);return wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,shapeInfo.batchSize,outStridesBytes,outId),out.shape=shapeInfo.outputShape,out}var gatherV2Config3={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV23},supportsFullBroadcast4=!1,greaterConfig3=createBinaryKernelConfig(Greater,supportsFullBroadcast4,"bool"),supportsFullBroadcast5=!1,greaterEqualConfig3=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast5,"bool"),wasmFunc3;function setupFunc2(backend3){wasmFunc3=backend3.wasm.cwrap(LeakyRelu,null,["number","number","number"])}function leakyRelu4(args){let{inputs:{x},attrs:{alpha},backend:backend3}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmFunc3(xId,alpha,outId)}return out}var leakyReluConfig3={kernelName:LeakyRelu,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:leakyRelu4},supportsFullBroadcast6=!1,lessConfig3=createBinaryKernelConfig(Less,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessEqualConfig3=createBinaryKernelConfig(LessEqual,supportsFullBroadcast7,"bool"),logConfig3=createUnaryKernelConfig(Log),supportsFullBroadcast8=!1,logicalAndConfig3=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast8,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max10(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max10},supportsFullBroadcast9=!1,maximumConfig3=createBinaryKernelConfig(Maximum,supportsFullBroadcast9),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMean;function setup21(backend3){wasmMean=backend3.wasm.cwrap(Mean,null,["number, number, number"])}function mean7(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("mean",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),castedInput=input2;input2.dtype!=="float32"&&(castedInput=cast47({backend:backend3,inputs:{x:input2},attrs:{dtype:"float32"}}),inputId=backend3.dataIdMap.get(castedInput.dataId).id);let out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMean(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return input2.dtype!=="float32"&&backend3.disposeData(castedInput.dataId),out}var meanConfig3={kernelName:Mean,backendName:"wasm",setupFunc:setup21,kernelFunc:mean7},wasmMin;function setup22(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min8(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig3={kernelName:Min,backendName:"wasm",setupFunc:setup22,kernelFunc:min8},supportsFullBroadcast10=!1,minimumConfig3=createBinaryKernelConfig(Minimum,supportsFullBroadcast10),supportsFullBroadcast11=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast11),negConfig3=createUnaryKernelConfig(Neg);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config3={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup23,kernelFunc},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV43(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup24,kernelFunc:nonMaxSuppressionV43},wasmFunc6;function setup25(backend3){wasmFunc6=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc6(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup25,kernelFunc:kernelFunc2},supportsFullBroadcast12=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast12,"bool"),wasmOneHot;function setup26(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot4(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig3={kernelName:OneHot,backendName:"wasm",setupFunc:setup26,kernelFunc:oneHot4};function onesLike4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig3={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike4};function pack3(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims5({inputs:{input:inputs[0]},backend:backend3,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=inputs.map(t=>expandDims5({inputs:{input:t},backend:backend3,attrs:{dim:axis}}));return concat17({inputs:expandedTensors,backend:backend3,attrs:{axis}})}var packConfig3={kernelName:Pack,backendName:"wasm",kernelFunc:pack3},wasmPadV2;function setup27(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad9(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config3={kernelName:PadV2,backendName:"wasm",kernelFunc:pad9,setupFunc:setup27},supportsFullBroadcast13=!1,powConfig3=createBinaryKernelConfig(Pow,supportsFullBroadcast13),wasmPrelu;function setup28(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu8(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig3={kernelName:Prelu,backendName:"wasm",setupFunc:setup28,kernelFunc:prelu8},wasmProd;function setup29(backend3){wasmProd=backend3.wasm.cwrap(Prod,null,["number","number","number","number"])}function prod6(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("prod",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmProd(inputId,reduceSize,CppDType[out.dtype],outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var prodConfig3={kernelName:Prod,backendName:"wasm",setupFunc:setup29,kernelFunc:prod6},range6=args=>{let{backend:backend3,attrs}=args,{start,stop,step:step9,dtype}=attrs,values=rangeImpl(start,stop,step9,dtype),out=backend3.makeOutput([values.length],dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.set(values),out},rangeConfig3={kernelName:Range,backendName:"wasm",kernelFunc:range6},supportsFullBroadcast14=!0,realDivConfig3=createBinaryKernelConfig(RealDiv,supportsFullBroadcast14),reluConfig3=createUnaryKernelConfig(Relu),relu6Config3=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup30(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number","number"])}function resizeBilinear4(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast47({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,halfPixelCenters?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig3={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup30,kernelFunc:resizeBilinear4},wasmReverse;function setup31(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse12(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity4({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape77({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig3={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse12,setupFunc:setup31},wasmRotate;function setup32(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup32},rsqrtConfig3=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup33(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd3(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig3={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup33,kernelFunc:scatterNd3},wasmSelect;function setup34(backend3){wasmSelect=backend3.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function select3(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectConfig3={kernelName:Select,backendName:"wasm",kernelFunc:select3,setupFunc:setup34},wasmFunc7;function setup35(backend3){wasmFunc7=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid8(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId),out}var sigmoidConfig3={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup35,kernelFunc:sigmoid8},sinConfig3=createUnaryKernelConfig(Sin);function slice18(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.readSync(x.dataId),out=backend3.makeOutput(size_,x.dtype),xStrides=util_exports.computeStrides(x.shape),outData=backend3.dataIdMap.get(out.dataId);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);if(x.dtype==="string")outData.stringBytes=xVals.slice(flatOffset,flatOffset+util_exports.sizeFromShape(size_));else{let outVals2=backend3.typedArrayFromHeap(out);outVals2.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_)))}return out}if(x.dtype==="string"){let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);return outData.stringBytes=res,out}let outVals=backend3.typedArrayFromHeap(out),rank=x.shape.length;if(rank===2)slice2d2(xVals,xStrides[0],outVals,begin_,size_);else if(rank===3)slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_);else if(rank===4)slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_);else{let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);outVals.set(res)}return out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;i{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice18({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig3={kernelName:SplitV,backendName:"wasm",kernelFunc:splitV3},sqrtConfig3=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup37(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice4(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape77({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice18({inputs:{x},attrs:{begin,size},backend:backend3});return reshape77({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape77({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig3={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup37,kernelFunc:stridedSlice4},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup38(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum28(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig3={kernelName:Sum,backendName:"wasm",setupFunc:setup38,kernelFunc:sum28},tanhConfig3=createUnaryKernelConfig(Tanh),wasmTile;function setup39(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile9(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i{let{x}=inputs,{k,sorted}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),outputShape=x.shape.slice();outputShape[outputShape.length-1]=k;let outValues=backend3.makeOutput(outputShape,x.dtype),outValuesId=backend3.dataIdMap.get(outValues.dataId).id,outIndices=backend3.makeOutput(outputShape,"int32"),outIndicesId=backend3.dataIdMap.get(outIndices.dataId).id;return wasmTopK(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],k,sorted,outValuesId,outIndicesId),[outValues,outIndices]},topKConfig3={kernelName:TopK,backendName:"wasm",setupFunc:setup40,kernelFunc:topk4};function unpack3(args){let{inputs,backend:backend3,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let numOutputs=value.shape[axis],rank=value.shape.length,outShape=new Array(rank-1),outIndex=0;for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig3={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack3};function zerosLike4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig3={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike4},kernelConfigs3=[absConfig3,addConfig3,addNConfig3,argMaxConfig3,avgPoolConfig3,batchMatMulConfig3,castConfig3,clipByValueConfig2,concatConfig3,conv2DConfig3,conv2DBackpropInputConfig3,cosConfig3,cropAndResizeConfig3,cumsumConfig3,depthToSpaceConfig3,depthwiseConv2dNativeConfig3,equalConfig3,expConfig3,expandDimsConfig3,fillConfig3,flipLeftRightConfig3,floorConfig3,floorDivConfig3,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig3,fusedDepthwiseConv2DConfig3,gatherNdConfig3,gatherV2Config3,greaterConfig3,greaterEqualConfig3,identityConfig3,leakyReluConfig3,lessConfig3,lessEqualConfig3,logConfig3,logicalAndConfig3,maxConfig3,maximumConfig3,maxPoolConfig3,meanConfig3,minConfig3,minimumConfig3,multiplyConfig3,negConfig3,nonMaxSuppressionV3Config3,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig3,onesLikeConfig3,packConfig3,padV2Config3,powConfig3,preluConfig3,prodConfig3,rangeConfig3,realDivConfig3,reluConfig3,relu6Config3,reshapeConfig3,resizeBilinearConfig3,reverseConfig3,rotateWithOffsetConfig3,rsqrtConfig3,scatterNdConfig3,selectConfig3,sigmoidConfig3,sinConfig3,sliceConfig3,softmaxConfig3,splitVConfig3,sqrtConfig3,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig3,subConfig3,sumConfig3,tanhConfig3,tileConfig3,topKConfig3,transposeConfig3,unpackConfig3,zerosLikeConfig3];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data=this.dataIdMap.get(dataId);this.wasm._free(data.memoryOffset),this.wasm.tfjs.disposeData(data.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer9=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer9,memoryOffset,size);case"int32":return new Int32Array(buffer9,memoryOffset,size);case"bool":return new Uint8Array(buffer9,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer9,dtype){switch(dtype){case"float32":return new Float32Array(buffer9);case"int32":return new Int32Array(buffer9);case"bool":return new Uint8Array(buffer9);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version15="2.8.1",WASM_PRIORITY=2;registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);var draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven2,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range2,round:()=>round3});var Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor,dim){return tensor instanceof Tensor&&tensor.shape.length===dim}function isTensor1D(tensor){return isTensor(tensor,1)}function isTensor2D(tensor){return isTensor(tensor,2)}function isTensor3D(tensor){return isTensor(tensor,3)}function isTensor4D(tensor){return isTensor(tensor,4)}function isFloat(num){return num%1!==0}function isEven2(num){return num%2===0}function round3(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale3=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale3),Math.round(height*scale3))}function getCenterPoint(pts){return pts.reduce((sum3,pt)=>sum3.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range2(num,start,step2){return Array(num).fill(0).map((_,i)=>start+i*step2)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min2,x)=>xymax2max2({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}function normalize(x,meanRgb){return tidy(()=>{let[r,g,b]=meanRgb,avg_r=fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=concat([avg_r,avg_g,avg_b],3);return sub(x,avg_rgb)})}function padToSquare(imgTensor,isCenterImage=!1){return tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>cast(t,"float32"));return concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array2=inputArray.slice();for(let i=array2.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array2[i];array2[i]=array2[j],array2[j]=x}return array2}function sigmoid2(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round3(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json18){let descriptors=json18.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json18.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return{...sourceObj,...extension}}function createBrowserEnv(){let fetch3=window.fetch;if(!fetch3)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:fetch3,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer2)=>err?reject(err):resolve(buffer2))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch3=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch:fetch3,...fileSystem}}function isBrowser2(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env17){environment=env17}function initialize(){return isBrowser2()?setEnv(createBrowserEnv()):isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env17){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env17;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env17.createCanvasElement||(()=>new Canvas),environment.createImageElement=env17.createImageElement||(()=>new Image),environment.ImageData=env17.ImageData||environment.ImageData,environment.Video=env17.Video||environment.Video,environment.fetch=env17.fetch||environment.fetch,environment.readFile=env17.readFile||environment.readFile}var env2={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser:isBrowser2,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env2.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env2.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round3(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}function isMediaLoaded(media){let{Image,Video}=env2.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env2.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env2.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input2){let{Image,Video}=env2.getEnv();return input2 instanceof Image?new Dimensions(input2.naturalWidth,input2.naturalHeight):input2 instanceof Video?new Dimensions(input2.videoWidth,input2.videoHeight):new Dimensions(input2.width,input2.height)}function createCanvas2({width,height}){let{createCanvasElement}=env2.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env2.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas2({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env2.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await browser_exports.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input2){let{Image,Canvas,Video}=env2.getEnv();return input2 instanceof Image||input2 instanceof Canvas||input2 instanceof Video}function imageToSquare(input2,inputSize,centerImage=!1){let{Image,Canvas}=env2.getEnv();if(!(input2 instanceof Image||input2 instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input2),scale3=inputSize/Math.max(dims.height,dims.width),width=scale3*dims.width,height=scale3*dims.height,targetCanvas=createCanvas2({width:inputSize,height:inputSize}),inputCanvas=input2 instanceof Canvas?input2:createCanvasFromMedia(input2),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input2)){this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape;return}if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape.slice(1);return}let canvas=input2 instanceof env2.getEnv().Canvas?input2:createCanvasFromMedia(input2);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range2(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tidy(()=>{let inputTensors=range2(this.batchSize,0,1).map(batchIdx=>{let input2=this.getInput(batchIdx);if(input2 instanceof Tensor){let imgTensor=isTensor4D(input2)?input2:input2.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input2 instanceof env2.getEnv().Canvas)return browser_exports.fromPixels(imageToSquare(input2,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input2}`)}),batchTensor=stack(inputTensors.map(t=>cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input2,i)=>{if(!isMediaElement(input2)&&!isTensor3D(input2)&&!isTensor4D(input2))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input2=>isMediaElement(input2)&&awaitMediaLoaded(input2))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input2,detections){let{Canvas}=env2.getEnv(),canvas=input2;if(!(input2 instanceof Canvas)){let netInput=await toNetInput(input2);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas2({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init2){let{fetch:fetch3}=env2.getEnv(),res=await fetch3(url,init2);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return io_exports.loadWeights(manifest,modelBaseUri)}function matchDimensions(input2,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input2.width=width,input2.height=height,{width,height}}var NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof Variable))}variable(){this.getFrozenParams().forEach(({path,tensor})=>{this.reassignParamFromPath(path,tensor.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable2})=>{let tensor=tensor4(variable2.dataSync());variable2.dispose(),this.reassignParamFromPath(path,tensor)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor})=>Array.from(tensor.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env2.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights2=io_exports.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights2(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}};function depthwiseSeparableConv(x,params,stride){return tidy(()=>{let out=separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=add2(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return relu(add2(out1,add2(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=relu(add2(out1,add2(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return relu(add2(out1,add2(out2,add2(out3,out4))))})}function convLayer(x,params,padding="same",withRelu=!1){return tidy(()=>{let out=add2(conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor=weightMap[originalPath];if(!isTensor(tensor,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}};function fullyConnectedLayer(x,params){return tidy(()=>add2(matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input2){return tidy(()=>softmax(this.runNet(input2)))}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictExpressions(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return{...sourceObj,...extension}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round3(exprLocal.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return{...sourceObj,...extension}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version3="0.9.5";function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range2(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range2(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return add2(conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=maxPool(out,[3,3],[2,2],"same"),out=add2(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv2,[1,1]),out=add2(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(256)),out=relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range2(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2,pooled=avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input2){return tidy(()=>{let{age,gender}=this.runNet(input2);return{age,gender:softmax(gender)}})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictAgeAndGender(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),ages=unstack(out.age),genders=unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale3=inputSize/Math.max(height,width);return{width:width*scale3,height:height*scale3}}),batchSize=inputDimensions.length;return tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>stack([fill([68],fillX,"float32"),fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding2=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding2(batchIdx,(w,h)=>wgetPadding2(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input2){return tidy(()=>{let out=this.runNet(input2);return this.postProcess(out,input2.inputSize,input2.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async detectLandmarks(input2){let netInput=await toNetInput(input2),landmarkTensors=tidy(()=>unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven2(i)),yCoords=landmarksArray.filter((_,i)=>!isEven2(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};function scale2(x,params){return add2(mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=conv2d(x,filters,strides,padding);return out=add2(out,bias),out=scale2(out,params.scale),withRelu?relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tidy(()=>transpose(tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tensor1d(extractWeights(numWeights)),biases=tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale3=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale3}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tidy(()=>transpose(tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale3=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale3}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=add2(out,x),out=relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=avgPool(x,2,2,"valid"),zeros2=zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=zeros(padShapeX);out=concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=zeros(padShapeY);out=concat([out,zerosH],2)}return pooled=isPad?concat([pooled,zeros2],3):pooled,out=add2(pooled,out),out=relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(256)),out=convDown(normalized,params.conv32_down);out=maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=matMul(globalAvg,params.fc);return fullyConnected})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async computeFaceDescriptor(input2){let netInput=await toNetInput(input2),faceDescriptorTensors=tidy(()=>unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return{...sourceObj,...extension}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return{...sourceObj,...extension}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return{...sourceObj,...extension}}function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tensor1d(extractWeights(numChannels)),batch_norm_offset=tensor1d(extractWeights(numChannels)),batch_norm_mean=tensor1d(extractWeights(numChannels)),batch_norm_variance=tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function pointwiseConvLayer(x,params,strides){return tidy(()=>{let out=conv2d(x,params.filters,strides,"same");return out=add2(out,params.batch_norm_offset),clipByValue(out,0,6)})}var epsilon3=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tidy(()=>{let out=depthwiseConv2d(x,params.filters,strides,"same");return out=batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon3),clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression3(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}function getCenterCoordinatesAndSizesLayer(x){let vec=unstack(transpose(x,[1,0])),sizes=[sub(vec[2],vec[0]),sub(vec[3],vec[1])],centers=[add2(vec[0],div(sizes[0],scalar(2))),add2(vec[1],div(sizes[1],scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=unstack(transpose(x1,[1,0])),div0_out=div(mul(exp(div(vec[2],scalar(5))),sizes[0]),scalar(2)),add0_out=add2(mul(div(vec[0],scalar(10)),sizes[0]),centers[0]),div1_out=div(mul(exp(div(vec[3],scalar(5))),sizes[1]),scalar(2)),add1_out=add2(mul(div(vec[1],scalar(10)),sizes[1]),centers[1]);return transpose(stack([sub(add0_out,div0_out),sub(add1_out,div1_out),add2(add0_out,div0_out),add2(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(reshape(tile(params.extra_dim,[batchSize,1,1]),[-1,4]),reshape(boxPredictions,[-1,4]));boxes=reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=sigmoid(slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=unstack(boxes),scoresByBatch=unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}function boxPredictionLayer(x,params){return tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input2){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(512,!1),"float32"),x=sub(mul(batchTensor,scalar(.007843137718737125)),scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async locateFaces(input2,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input2),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression3(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME2="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",isNumber2=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber2(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber2(a.x)&&isNumber2(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber2)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}function leaky(x){return tidy(()=>{let min2=mul(x,scalar(.10000000149011612));return add2(relu(sub(x,min2)),min2)})}function convWithBatchNorm(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=conv2d(out,params.conv.filters,[1,1],"valid"),out=sub(out,params.bn.sub),out=mul(out,params.bn.truediv),out=add2(out,params.conv.bias),leaky(out)})}function depthwiseSeparableConv3(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=add2(out,params.bias),leaky(out)})}function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub2=tensor1d(extractWeights(size)),truediv=tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub2,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub2=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub2,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input2,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input2,inputSize){return this.forwardInput(await toNetInput(input2),inputSize)}async detect(input2,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input2),out=await this.forwardInput(netInput,inputSize),out0=tidy(()=>unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression2(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid2(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid2(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max2,curr)=>max2.classScore>curr.classScore?max2:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){let objectDetections=await this.detect(input2,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME2}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};async function extractAllFacesAndComputeResults(parentResults,input2,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input2 instanceof Tensor?await extractFaceTensors(input2,faceBoxes):await extractFaces(input2,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input2,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input2,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){let objectDetections=await this.detect(input2,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input2,options)=>nets.ssdMobilenetv1.locateFaces(input2,options),tinyFaceDetector=(input2,options)=>nets.tinyFaceDetector.locateFaces(input2,options),tinyYolov23=(input2,options)=>nets.tinyYolov2.locateFaces(input2,options),detectFaceLandmarks=input2=>nets.faceLandmark68Net.detectLandmarks(input2),detectFaceLandmarksTiny=input2=>nets.faceLandmark68TinyNet.detectLandmarks(input2),computeFaceDescriptor=input2=>nets.faceRecognitionNet.computeFaceDescriptor(input2),recognizeFaceExpressions=input2=>nets.faceExpressionNet.predictExpressions(input2),predictAgeAndGender=input2=>nets.ageGenderNet.predictAgeAndGender(input2),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input2){super();this.parentTask=parentTask;this.input=input2}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input2,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input2;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input2,options=new SsdMobilenetv1Options){super();this.input=input2;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input:input2,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input3=>nets.tinyFaceDetector.locateFaces(input3,options):options instanceof SsdMobilenetv1Options?input3=>nets.ssdMobilenetv1.locateFaces(input3,options):options instanceof TinyYolov2Options?input3=>nets.tinyYolov2.locateFaces(input3,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input2)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input2,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input2,options)}function detectAllFaces(input2,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input2,options)}async function allFacesSsdMobilenetv1(input2,minConfidence){return detectAllFaces(input2,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input2,forwardParams={}){return detectAllFaces(input2,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count2=1,createUniqueLabel=()=>`person ${count2++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json18){let labeledDescriptors=json18.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json18.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version4={faceapi:version3,node,browser};export{AgeGenderNet,BoundingBox,Box,ComposableTask,ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask,DetectAllFacesTask,DetectFaceLandmarksTaskBase,DetectFacesTaskBase,DetectSingleFaceLandmarksTask,DetectSingleFaceTask,Dimensions,FACE_EXPRESSION_LABELS,FaceDetection,FaceDetectionNet,FaceExpressionNet,FaceExpressions,FaceLandmark68Net,FaceLandmark68TinyNet,FaceLandmarkNet,FaceLandmarks,FaceLandmarks5,FaceLandmarks68,FaceMatch,FaceMatcher,FaceRecognitionNet,Gender,LabeledBox,LabeledFaceDescriptors,NetInput,NeuralNetwork,ObjectDetection,Point,PredictedBox,Rect,SsdMobilenetv1,SsdMobilenetv1Options,TinyFaceDetector,TinyFaceDetectorOptions,TinyYolov2,TinyYolov2Options,allFaces,allFacesSsdMobilenetv1,allFacesTinyYolov2,awaitMediaLoaded,bufferToImage,computeFaceDescriptor,createCanvas2 as createCanvas,createCanvasFromMedia,createFaceDetectionNet,createFaceRecognitionNet,createSsdMobilenetv1,createTinyFaceDetector,createTinyYolov2,detectAllFaces,detectFaceLandmarks,detectFaceLandmarksTiny,detectLandmarks,detectSingleFace,draw_exports as draw,env2 as env,euclideanDistance,extendWithAge,extendWithFaceDescriptor,extendWithFaceDetection,extendWithFaceExpressions,extendWithFaceLandmarks,extendWithGender,extractFaceTensors,extractFaces,fetchImage,fetchJson,fetchNetWeights,fetchOrThrow,getContext2dOrThrow,getMediaDimensions,imageTensorToCanvas,imageToSquare,inverseSigmoid,iou,isMediaElement,isMediaLoaded,isWithAge,isWithFaceDetection,isWithFaceExpressions,isWithFaceLandmarks,isWithGender,loadAgeGenderModel,loadFaceDetectionModel,loadFaceExpressionModel,loadFaceLandmarkModel,loadFaceLandmarkTinyModel,loadFaceRecognitionModel,loadSsdMobilenetv1Model,loadTinyFaceDetectorModel,loadTinyYolov2Model,loadWeightMap,locateFaces,matchDimensions,minBbox,nets,nonMaxSuppression2 as nonMaxSuppression,normalize,padToSquare,predictAgeAndGender,recognizeFaceExpressions,resizeResults,resolveInput,shuffleArray,sigmoid2 as sigmoid,ssdMobilenetv1,tfjs_esm_exports as tf,tinyFaceDetector,tinyYolov23 as tinyYolov2,toNetInput,utils_exports as utils,validateConfig,version4 as version}; /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/face-api.esm.js.map b/dist/face-api.esm.js.map index da67de3..2cb642e 100644 --- a/dist/face-api.esm.js.map +++ b/dist/face-api.esm.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/env/isNodejs.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/utils/index.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/imageToSquare.ts", "../src/dom/NetInput.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/common/getModelUris.ts", "../src/dom/loadWeightMap.ts", "../src/dom/matchDimensions.ts", "../src/NeuralNetwork.ts", "../src/common/depthwiseSeparableConv.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/types.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/xception/TinyXception.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts", "../src/index.ts"], - "sourcesContent": ["export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version\n}", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, "export * from './drawContour'\nexport * from './drawDetections'\nexport * from './drawFaceExpressions'\nexport * from './DrawBox'\nexport * from './DrawFaceLandmarks'\nexport * from './DrawTextField'", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false\n) {\n ctx.beginPath()\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx]\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(x, y)\n })\n\n if (isClosed) {\n const from = points[points.length - 1]\n const to = points[0]\n if (!from || !to) {\n return\n }\n\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(to.x, to.y)\n }\n\n ctx.stroke()\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n\n private _width: number\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`)\n }\n\n this._width = width\n this._height = height\n }\n\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x\n this._y = y\n }\n\n get x(): number { return this._x }\n get y(): number { return this._y }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y)\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y)\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y)\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y)\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y))\n }\n\n public magnitude(): number {\n return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2))\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y))\n }\n}", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber)\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`)\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)\n }\n }\n\n private _x: number\n private _y: number\n private _width: number\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber)\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber)\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`)\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top]\n\n Box.assertIsValidBox({ x, y, width, height }, 'Box.constructor', allowNegativeDimensions)\n\n this._x = x\n this._y = y\n this._width = width\n this._height = height\n }\n\n public get x(): number { return this._x }\n public get y(): number { return this._y }\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n public get left(): number { return this.x }\n public get top(): number { return this.y }\n public get right(): number { return this.x + this.width }\n public get bottom(): number { return this.y + this.height }\n public get area(): number { return this.width * this.height }\n public get topLeft(): Point { return new Point(this.left, this.top) }\n public get topRight(): Point { return new Point(this.right, this.top) }\n public get bottomLeft(): Point { return new Point(this.left, this.bottom) }\n public get bottomRight(): Point { return new Point(this.right, this.bottom) }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.round(val))\n return new Box({ x, y, width, height })\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.floor(val))\n return new Box({ x, y, width, height })\n }\n\n public toSquare(): Box {\n let { x, y, width, height } = this\n const diff = Math.abs(width - height)\n if (width < height) {\n x -= (diff / 2)\n width += diff\n }\n if (height < width) {\n y -= (diff / 2)\n height += diff\n }\n\n return new Box({ x, y, width, height })\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY\n })\n }\n\n public pad(padX: number, padY: number): Box {\n let [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY\n ]\n return new Box({ x, y, width, height })\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const { x, y, right, bottom } = this\n const clippedX = Math.max(x, 0)\n const clippedY = Math.max(y, 0)\n\n const newWidth = right - clippedX\n const newHeight = bottom - clippedY\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX)\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY)\n\n return (new Box({ x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight})).floor()\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this\n const x = this.x + sx\n const y = this.y + sy\n\n return new Box({ x, y, width, height })\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1\n const h = this.height + 1\n\n let dx = 1\n let dy = 1\n let edx = w\n let edy = h\n\n let x = this.left\n let y = this.top\n let ex = this.right\n let ey = this.bottom\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w\n ex = imageWidth\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h\n ey = imageHeight\n }\n if (x < 1) {\n edy = 2 - x\n x = 1\n }\n if (y < 1) {\n edy = 2 - y\n y = 1\n }\n\n return { dy, edy, dx, edx, y, ey, x, ex, w, h }\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height)\n }).toSquare().round()\n }\n}", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({ left, top, right, bottom }, allowNegativeDimensions)\n }\n}", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n private _classScore: number\n private _className: string\n private _box: Rect\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height)\n this._score = score\n this._classScore = classScore\n this._className = className\n this._box = new Box(relativeBox).rescale(this._imageDims)\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n public get className(): string { return this._className }\n public get box(): Box { return this._box }\n public get imageDims(): Dimensions { return this._imageDims }\n public get imageWidth(): number { return this.imageDims.width }\n public get imageHeight(): number { return this.imageDims.height }\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()) }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height}\n )\n }\n}", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions\n ) {\n super(score, score, '', relativeBox, imageDims)\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height)\n return new FaceDetection(score, relativeBox, imageDims)\n }\n}", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left))\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top))\n const interSection = width * height\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area)\n}", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map(pt => pt.x)\n const ys = pts.map(pt => pt.y)\n const minX = xs.reduce((min, x) => x < min ? x : min, Infinity)\n const minY = ys.reduce((min, y) => y < min ? y : min, Infinity)\n const maxX = xs.reduce((max, x) => max < x ? x : max, 0)\n const maxY = ys.reduce((max, y) => max < y ? y : max, 0)\n\n return new BoundingBox(minX, minY, maxX, maxY)\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true\n): number[] {\n\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map(c => c.boxIndex)\n\n const pick: number[] = []\n\n while(indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number\n pick.push(curr)\n\n const indices = indicesSortedByScore\n\n const outputs: number[] = []\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i]\n\n const currBox = boxes[curr]\n const idxBox = boxes[idx]\n\n outputs.push(iou(currBox, idxBox, isIOU))\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold\n )\n }\n\n return pick\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32')\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32')\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32')\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3)\n\n return tf.sub(x, avg_rgb)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n\n const [height, width] = imgTensor.shape.slice(1)\n if (height === width) {\n return imgTensor\n }\n\n const dimDiff = Math.abs(height - width)\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1))\n const paddingAxis = height > width ? 2 : 1\n\n const createPaddingTensor = (paddingAmount: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice()\n paddingTensorShape[paddingAxis] = paddingAmount\n return tf.fill(paddingTensorShape, 0, 'float32')\n }\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount)\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number)\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend\n ]\n .filter(t => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[]\n return tf.concat(tensorsToStack, paddingAxis)\n\n })\n}", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice()\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n const x = array[i]\n array[i] = array[j]\n array[j] = x\n }\n return array\n}", "export * from './iou'\nexport * from './minBbox'\nexport * from './nonMaxSuppression'\nexport * from './normalize'\nexport * from './padToSquare'\nexport * from './shuffleArray'\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x))\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x))\n}", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({ x, y, width, height }, allowNegativeDimensions)\n }\n}", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5\nconst relY = 0.43\nconst relScale = 0.45\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n protected _positions: Point[]\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0)\n ) {\n const { width, height } = imgDims\n this._imgDims = new Dimensions(width, height)\n this._shift = shift\n this._positions = relativeFaceLandmarkPositions.map(\n pt => pt.mul(new Point(width, height)).add(shift)\n )\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y) }\n public get imageWidth(): number { return this._imgDims.width }\n public get imageHeight(): number { return this._imgDims.height }\n public get positions(): Point[] { return this._positions }\n public get relativePositions(): Point[] {\n return this._positions.map(\n pt => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight))\n )\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height }\n )\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y)\n )\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y)\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { }\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection)\n\n return this.shiftBy(box.x, box.y).align(null, options)\n }\n\n const { useDlibAlignment, minBoxPadding } = Object.assign({}, { useDlibAlignment: false, minBoxPadding: 0.2 }, options)\n\n if (useDlibAlignment) {\n return this.alignDlib()\n }\n\n return this.alignMinBbox(minBoxPadding)\n }\n\n private alignDlib(): Box {\n\n const centers = this.getRefPointsForAlignment()\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude()\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2\n\n const size = Math.floor(eyeToMouthDist / relScale)\n\n const refPoint = getCenterPoint(centers)\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)))\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)))\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y))\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions)\n return box.pad(box.width * padding, box.height * padding)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class')\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]])\n ]\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17)\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22)\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27)\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36)\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42)\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48)\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth()\n ].map(getCenterPoint)\n }\n}", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label\n this._distance = distance\n }\n\n public get label(): string { return this._label }\n public get distance(): number { return this._distance }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`\n }\n}", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee)\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`)\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box)\n this._label = label\n }\n\n public get label(): number { return this._label }\n\n}", "export class LabeledFaceDescriptors {\n private _label: string\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string')\n }\n\n if (!Array.isArray(descriptors) || descriptors.some(desc => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array')\n }\n\n this._label = label\n this._descriptors = descriptors\n }\n\n public get label(): string { return this._label }\n public get descriptors(): Float32Array[] { return this._descriptors }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d))\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => {\n return new Float32Array(d);\n });\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n\n}", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee)\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)\n }\n }\n\n private _score: number\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label)\n this._score = score\n this._classScore = classScore\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n\n}", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj['detection'] instanceof FaceDetection\n}\n\nexport function extendWithFaceDetection<\n TSource\n> (\n sourceObj: TSource,\n detection: FaceDetection\n): WithFaceDetection {\n\n const extension = { detection }\n return Object.assign({}, sourceObj, extension)\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n\n const fetch = window['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for browser environment')\n }\n\n const readFile = function() {\n throw new Error('readFile - filesystem not available for browser environment')\n }\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D: CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData: ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile\n }\n}", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n\n let requireFsError = ''\n\n if (!fs) {\n try {\n fs = require('fs')\n } catch (err) {\n requireFsError = err.toString()\n }\n }\n\n const readFile = fs\n ? function(filePath: string) {\n return new Promise((res, rej) => {\n fs.readFile(filePath, function(err: any, buffer: Buffer) {\n return err ? rej(err) : res(buffer)\n })\n })\n }\n : function() {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)\n }\n\n return {\n readFile\n }\n}", "import { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n\n const Canvas = global['Canvas'] || global['HTMLCanvasElement']\n const Image = global['Image'] || global['HTMLImageElement']\n\n const createCanvasElement = function() {\n if (Canvas) {\n return new Canvas()\n }\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment')\n }\n\n const createImageElement = function() {\n if (Image) {\n return new Image()\n }\n throw new Error('createImageElement - missing Image implementation for nodejs environment')\n }\n\n const fetch = global['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for nodejs environment')\n }\n\n const fileSystem = createFileSystem()\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global['CanvasRenderingContext2D'] || class {},\n Image: Image || class {},\n ImageData: global['ImageData'] || class {},\n Video: global['HTMLVideoElement'] || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem\n }\n}", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined'\n}", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()')\n }\n return environment\n}\n\nfunction setEnv(env: Environment) {\n environment = env\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) {\n return setEnv(createBrowserEnv())\n }\n if (isNodejs()) {\n return setEnv(createNodejsEnv())\n }\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize()\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()')\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env\n environment.Canvas = Canvas\n environment.Image = Image\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas())\n environment.createImageElement = env.createImageElement || (() => new Image())\n\n environment.ImageData = env.ImageData || environment.ImageData\n environment.Video = env.Video || environment.Video\n environment.fetch = env.fetch || environment.fetch\n environment.readFile = env.readFile || environment.readFile\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs\n}\n\ninitialize()\n\nexport * from './types'\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg)\n }\n return arg\n}", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n\n const { Canvas, CanvasRenderingContext2D } = env.getEnv()\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg\n }\n\n const canvas = resolveInput(canvasArg)\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas')\n }\n\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null')\n }\n\n return ctx\n}", "import { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\nexport enum AnchorPosition {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n public backgroundColor: string\n public fontColor: string\n public fontSize: number\n public fontStyle: string\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const { anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding } = options\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)'\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)'\n this.fontSize = fontSize || 14\n this.fontStyle = fontStyle || 'Georgia'\n this.padding = padding || 4\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n public anchor : IPoint\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {}\n ) {\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text)\n this.anchor = anchor\n this.options = new DrawTextFieldOptions(options)\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options\n return this.text.map(l => ctx.measureText(l).width).reduce((w0, w1) => w0 < w1 ? w1 : w0, 0) + (2 * padding)\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options\n return this.text.length * fontSize + (2 * padding)\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT\n\n const textFieldWidth = this.measureWidth(ctx)\n const textFieldHeight = this.measureHeight()\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x)\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0)\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0)\n return { x: newX, y: newY }\n }\n return { x, y }\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg)\n const ctx = getContext2dOrThrow(canvas)\n\n const { backgroundColor, fontColor, fontSize, fontStyle, padding } = this.options\n\n ctx.font = `${fontSize}px ${fontStyle}`\n const maxTextWidth = this.measureWidth(ctx)\n const textHeight = this.measureHeight()\n\n ctx.fillStyle = backgroundColor\n const upperLeft = this.getUpperLeft(ctx, canvas)\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight)\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x\n const y = padding + upperLeft.y + ((i + 1) * fontSize)\n ctx.fillText(textLine, x, y)\n })\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions } from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n public lineWidth: number\n public drawLabelOptions: DrawTextFieldOptions\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const { boxColor, lineWidth, label, drawLabelOptions } = options\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)'\n this.lineWidth = lineWidth || 2\n this.label = label\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor\n }\n this.drawLabelOptions = new DrawTextFieldOptions(Object.assign({}, defaultDrawLabelOptions, drawLabelOptions))\n }\n}\n\nexport class DrawBox {\n public box: Box\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {}\n ) {\n this.box = new Box(box)\n this.options = new DrawBoxOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { boxColor, lineWidth } = this.options\n\n const { x, y, width, height } = this.box\n ctx.strokeStyle = boxColor\n ctx.lineWidth = lineWidth\n ctx.strokeRect(x, y, width, height)\n\n const { label } = this.options\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg)\n }\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections]\n\n detectionsArray.forEach(det => {\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined)\n\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det))\n\n const label = score ? `${round(score)}` : undefined\n new DrawBox(box, { label }).draw(canvasArg)\n })\n}", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n\n const { Image, Video } = env.getEnv()\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3)\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null)\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n resolve(e)\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n reject(e)\n }\n\n media.addEventListener('load', onLoad)\n media.addEventListener('error', onError)\n })\n}", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) {\n return reject('bufferToImage - expected buf to be of type: Blob')\n }\n\n const reader = new FileReader()\n reader.onload = () => {\n if (typeof reader.result !== 'string') {\n return reject('bufferToImage - expected reader.result to be a string, in onload')\n }\n\n const img = env.getEnv().createImageElement()\n img.onload = () => resolve(img)\n img.onerror = reject\n img.src = reader.result\n }\n reader.onerror = reject\n reader.readAsDataURL(buf)\n })\n}", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n\n const { Image, Video } = env.getEnv()\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight)\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight)\n }\n return new Dimensions(input.width, input.height)\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n\n const { createCanvasElement } = env.getEnv()\n const canvas = createCanvasElement()\n canvas.width = width\n canvas.height = height\n return canvas\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n\n const { ImageData } = env.getEnv()\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet')\n }\n\n const { width, height } = dims || getMediaDimensions(media)\n const canvas = createCanvas({ width, height })\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0)\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height)\n }\n return canvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement\n): Promise {\n\n const targetCanvas = canvas || env.getEnv().createCanvasElement()\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0)\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt())\n await tf.browser.toPixels(imgTensor3D, targetCanvas)\n\n imgTensor3D.dispose()\n\n return targetCanvas\n}", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n\n const { Image, Canvas, Video } = env.getEnv()\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video\n}", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n\n const { Image, Canvas } = env.getEnv()\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement')\n }\n\n const dims = getMediaDimensions(input)\n const scale = inputSize / Math.max(dims.height, dims.width)\n const width = scale * dims.width\n const height = scale * dims.height\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize })\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input)\n\n const offset = Math.abs(width - height) / 2\n const dx = centerImage && width < height ? offset : 0\n const dy = centerImage && height < width ? offset : 0\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height)\n\n return targetCanvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport { computeReshapedDimensions, isTensor3D, isTensor4D, range } from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n private _canvases: HTMLCanvasElement[] = []\n private _batchSize: number\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`)\n }\n\n this._treatAsBatchInput = treatAsBatchInput\n this._batchSize = inputs.length\n\n inputs.forEach((input, idx) => {\n\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = input.shape\n return\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0]\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = (input as any).shape.slice(1)\n return\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input)\n this._canvases[idx] = canvas\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3]\n })\n }\n\n public get imageTensors(): Array {\n return this._imageTensors\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput\n }\n\n public get batchSize(): number {\n return this._batchSize\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx)\n )\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx]\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx]\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0]\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1]\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet')\n }\n\n const width = this.getInputWidth(batchIdx)\n const height = this.getInputHeight(batchIdx)\n return computeReshapedDimensions({ width, height }, this.inputSize)\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n\n this._inputSize = inputSize\n\n return tf.tidy(() => {\n\n const inputTensors = range(this.batchSize, 0, 1).map(batchIdx => {\n const input = this.getInput(batchIdx)\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims()\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs)\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize])\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3)\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs))\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)\n })\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map(t => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3)\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n \n return batchTensor\n })\n }\n}", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs\n }\n\n let inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs]\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input')\n }\n\n const getIdxHint = (idx: number) => Array.isArray(inputs) ? ` at input index ${idx}:` : ''\n\n const inputArray = inputArgArray.map(resolveInput)\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`)\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`)\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0]\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n }\n })\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map(input => isMediaElement(input) && awaitMediaLoaded(input))\n )\n\n return new NetInput(inputArray, Array.isArray(inputs))\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array\n): Promise {\n\n const { Canvas } = env.getEnv()\n\n let canvas = input as HTMLCanvasElement\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input)\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported')\n }\n\n const tensorOrCanvas = netInput.getInput(0)\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas)\n }\n\n const ctx = getContext2dOrThrow(canvas)\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det\n )\n .map(box => box.clipAtImageBorders(canvas.width, canvas.height))\n\n return boxes.map(({ x, y, width, height }) => {\n const faceImg = createCanvas({ width, height })\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0)\n return faceImg\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array\n): Promise {\n\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D')\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported')\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0)\n\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det\n )\n .map(box => box.clipAtImageBorders(imgWidth, imgHeight))\n\n const faceTensors = boxes.map(({ x, y, width, height }) =>\n tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels])\n )\n\n return faceTensors\n })\n}", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n init?: RequestInit\n): Promise {\n\n const fetch = env.getEnv().fetch\n const res = await fetch(url, init)\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`)\n }\n return res\n}", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri)\n const blob = await (res).blob()\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`)\n }\n return bufferToImage(blob)\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json()\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer())\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename\n }\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`\n }\n }\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter(s => s)\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/')\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName)\n let manifest = await fetchJson(manifestUri)\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri)\n}", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference\n input.width = width\n input.height = height\n return { width, height }\n}", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number]\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same')\n out = tf.add(out, params.bias)\n return out\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n })\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias\n ) as tf.Tensor4D\n\n return withRelu ? tf.relu(out) : out\n })\n}", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach(path => {\n if (!paramMappings.some(pm => pm.originalPath === path)) {\n weightMap[path].dispose()\n }\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): FCParams {\n\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut])\n const fc_bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return {\n weights: fc_weights,\n bias: fc_bias\n }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n constructor(\n public depthwise_filter: tf.Tensor4D,\n public pointwise_filter: tf.Tensor4D,\n public bias: tf.Tensor1D\n ) {}\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1])\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut])\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n\nexport function loadSeparableConvParamsFactory(\n extractWeightEntry: (originalPath: string, paramRank: number) => T\n) {\n\n return function (prefix: string): SeparableConvParams {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4)\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n return function (originalPath: string, paramRank: number, mappedPath?: string): T {\n const tensor = weightMap[originalPath]\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`)\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath }\n )\n\n return tensor\n }\n\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights)\n remainingWeights = remainingWeights.slice(numWeights)\n return ret\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights\n }\n\n return {\n extractWeights,\n getRemainingWeights\n }\n}", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`)\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`)\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer)\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock4Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2')\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2, dense3 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return function(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return { filters, bias }\n }\n}", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock4Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('FaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock4(normalized, params.dense0, true)\n out = denseBlock4(out, params.dense1)\n out = denseBlock4(out, params.dense2)\n out = denseBlock4(out, params.dense3)\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams\n): tf.Tensor2D {\n return tf.tidy(() =>\n tf.add(\n tf.matMul(x, params.weights),\n params.bias\n )\n )\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: extractFcParams('fc')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n\n const featureExtractorMap: tf.NamedTensorMap = {}\n const classifierMap: tf.NamedTensorMap = {}\n\n Object.keys(weightMap).forEach(key => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap\n map[key] = weightMap[key]\n })\n\n return { featureExtractorMap, classifierMap }\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name)\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract getClassifierChannelsIn(): number\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut())\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const cIn = this.getClassifierChannelsIn()\n const cOut = this.getClassifierChannelsOut()\n const classifierWeightSize = (cOut * cIn ) + cOut\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised']\n\nexport class FaceExpressions {\n public neutral: number\n public happy: number\n public sad: number\n public angry: number\n public fearful: number\n public disgusted: number\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`)\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx]\n })\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map(expression => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor)\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)))\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async t => {\n const data = await t.data()\n t.dispose()\n return data\n }))\n out.dispose()\n\n const predictionsByBatch = probabilitesByBatch\n .map(probabilites => new FaceExpressions(probabilites as Float32Array))\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n\n protected getClassifierChannelsOut(): number {\n return 7\n }\n}", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj['expressions'] instanceof FaceExpressions\n}\n\nexport function extendWithFaceExpressions<\n TSource\n> (\n sourceObj: TSource,\n expressions: FaceExpressions\n): WithFaceExpressions {\n\n const extension = { expressions }\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions]\n\n faceExpressionsArray.forEach(e => {\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined)\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof')\n }\n\n const sorted = expr.asSortedArray()\n const resultsToDisplay = sorted.filter(expr => expr.probability > minConfidence)\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0))\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map(expr => `${expr.expression} (${round(expr.probability)})`),\n anchor\n )\n drawTextField.draw(canvasArg)\n })\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n}\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n && obj['landmarks'] instanceof FaceLandmarks\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n && obj['alignedRect'] instanceof FaceDetection\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> (\n sourceObj: TSource,\n unshiftedLandmarks: TFaceLandmarks\n): WithFaceLandmarks {\n\n const { box: shift } = sourceObj.detection\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y)\n\n const rect = landmarks.align()\n const { imageDims } = sourceObj.detection\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims)\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect\n }\n\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n public drawPoints: boolean\n public lineWidth: number\n public pointSize: number\n public lineColor: string\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const { drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor } = options\n this.drawLines = drawLines\n this.drawPoints = drawPoints\n this.lineWidth = lineWidth || 1\n this.pointSize = pointSize || 2\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)'\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)'\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {}\n ) {\n this.faceLandmarks = faceLandmarks\n this.options = new DrawFaceLandmarksOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor } = this.options\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor\n ctx.lineWidth = lineWidth\n drawContour(ctx, this.faceLandmarks.getJawOutline())\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow())\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow())\n drawContour(ctx, this.faceLandmarks.getNose())\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true)\n drawContour(ctx, this.faceLandmarks.getRightEye(), true)\n drawContour(ctx, this.faceLandmarks.getMouth(), true)\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor\n ctx.fillStyle = pointColor\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath()\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI)\n ctx.fill()\n }\n this.faceLandmarks.positions.forEach(drawPoint)\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks]\n faceLandmarksArray.forEach(f => {\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined)\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof')\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg)\n })\n}", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = loadParamsFactory(weightMap, paramMappings)\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias)\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = tf.maxPool(out, [3, 3], [2, 2], 'same')\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]))\n return out\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1])\n out = tf.add(out, x)\n return out\n}\n\nexport class TinyXception extends NeuralNetwork {\n\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception')\n this._numMainBlocks = numMainBlocks\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyXception - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]))\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false)\n out = reductionBlock(out, params.entry_flow.reduction_block_1)\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`])\n })\n\n out = reductionBlock(out, params.exit_flow.reduction_block)\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]))\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks)\n }\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const age = extractFCParams(512, 1, 'fc/age')\n const gender = extractFCParams(512, 2, 'fc/gender')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport enum Gender {\n FEMALE = 'female',\n MALE = 'male'\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { AgeAndGenderPrediction, Gender, NetOutput, NetParams } from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet')\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1)\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D()\n const gender = fullyConnectedLayer(pooled, params.fc.gender)\n return { age, gender }\n })\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input)\n return { age, gender: tf.softmax(gender) }\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n\n const ages = tf.unstack(out.age)\n const genders = tf.unstack(out.gender)\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i]\n }))\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0]\n const probMale = (await genderTensor.data())[0]\n const isMale = probMale > 0.5\n const gender = isMale ? Gender.MALE : Gender.FEMALE\n const genderProbability = isMale ? probMale : (1 - probMale)\n\n ageTensor.dispose()\n genderTensor.dispose()\n return { age, gender, genderProbability }\n })\n )\n out.age.dispose()\n out.gender.dispose()\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model'\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights)\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2)\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width)\n return {\n width: width * scale,\n height: height * scale\n }\n })\n\n const batchSize = inputDimensions.length\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) =>\n tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D()\n\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx]\n return cond(width, height) ? Math.abs(width - height) / 2 : 0\n }\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h)\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w)\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx)\n )\n )))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height\n )\n )))\n\n return landmarkTensors as tf.Tensor2D\n })\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input)\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width }))\n )\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data())\n const xCoords = landmarksArray.filter((_, i) => isEven(i))\n const yCoords = landmarksArray.filter((_, i) => !isEven(i))\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width : netInput.getInputWidth(batchIdx),\n }\n )\n }\n ))\n\n landmarkTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136\n }\n}", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock3Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\n\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock3Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('TinyFaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock3(normalized, params.dense0, true)\n out = denseBlock3(out, params.dense1)\n out = denseBlock3(out, params.dense2)\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights)\n }\n}", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 128\n }\n}", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases)\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same'\n): tf.Tensor4D {\n const { filters, bias } = params.conv\n\n let out = tf.conv2d(x, filters, strides, padding)\n out = tf.add(out, bias)\n out = scale(out, params.scale)\n return withRelu ? tf.relu(out) : out\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true)\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false)\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid')\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping } from '../common/index';\nimport { isFloat } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues)\n const depth = weights.length / (numFilters * filterSize * filterSize)\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`)\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0]\n )\n )\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize)\n const bias = tf.tensor1d(extractWeights(numFilters))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n\n const weights = tf.tensor1d(extractWeights(numWeights))\n const biases = tf.tensor1d(extractWeights(numWeights))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` }\n )\n\n return {\n weights,\n biases\n }\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvLayerParams {\n\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`)\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`)\n\n return { conv, scale }\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false\n ): ResidualLayerParams {\n\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`)\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`)\n\n return { conv1, conv2 }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down')\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1')\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2')\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3')\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true)\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1')\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2')\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3')\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true)\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1')\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2')\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true)\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1')\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2')\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out')\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0])\n )\n paramMappings.push({ paramPath: `fc` })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1)\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1)\n\n return { weights, biases }\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1)\n const scale = extractScaleLayerParams(prefix)\n\n return { conv: { filters, bias }, scale }\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`)\n }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const conv32_down = extractConvLayerParams('conv32_down')\n const conv32_1 = extractResidualLayerParams('conv32_1')\n const conv32_2 = extractResidualLayerParams('conv32_2')\n const conv32_3 = extractResidualLayerParams('conv32_3')\n\n const conv64_down = extractResidualLayerParams('conv64_down')\n const conv64_1 = extractResidualLayerParams('conv64_1')\n const conv64_2 = extractResidualLayerParams('conv64_2')\n const conv64_3 = extractResidualLayerParams('conv64_3')\n\n const conv128_down = extractResidualLayerParams('conv128_down')\n const conv128_1 = extractResidualLayerParams('conv128_1')\n const conv128_2 = extractResidualLayerParams('conv128_2')\n\n const conv256_down = extractResidualLayerParams('conv256_down')\n const conv256_1 = extractResidualLayerParams('conv256_1')\n const conv256_2 = extractResidualLayerParams('conv256_2')\n const conv256_down_out = extractResidualLayerParams('conv256_down_out')\n\n const fc = weightMap['fc']\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' })\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n out = tf.add(out, x)\n out = tf.relu(out)\n return out\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D\n const zeros = tf.zeros(pooled.shape)\n const isPad = pooled.shape[3] !== out.shape[3]\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number]\n padShapeX[1] = 1\n const zerosW = tf.zeros(padShapeX)\n out = tf.concat([out, zerosW], 1)\n\n const padShapeY = [...out.shape] as [number, number, number, number]\n padShapeY[2] = 1\n const zerosH = tf.zeros(padShapeY)\n out = tf.concat([out, zerosH], 2)\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled\n out = tf.add(pooled, out) as tf.Tensor4D\n\n out = tf.relu(out)\n return out\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n\n constructor() {\n super('FaceRecognitionNet')\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = convDown(normalized, params.conv32_down)\n out = tf.maxPool(out, 3, 2, 'valid')\n\n out = residual(out, params.conv32_1)\n out = residual(out, params.conv32_2)\n out = residual(out, params.conv32_3)\n\n out = residualDown(out, params.conv64_down)\n out = residual(out, params.conv64_1)\n out = residual(out, params.conv64_2)\n out = residual(out, params.conv64_3)\n\n out = residualDown(out, params.conv128_down)\n out = residual(out, params.conv128_1)\n out = residual(out, params.conv128_2)\n\n out = residualDown(out, params.conv256_down)\n out = residual(out, params.conv256_1)\n out = residual(out, params.conv256_2)\n out = residualDown(out, params.conv256_down_out)\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D\n const fullyConnected = tf.matMul(globalAvg, params.fc)\n\n return fullyConnected\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n t => t.data()\n )) as Float32Array[]\n\n faceDescriptorTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet()\n net.extractWeights(weights)\n return net\n}", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n> (\n sourceObj: TSource,\n descriptor: Float32Array\n): WithFaceDescriptor {\n\n const extension = { descriptor }\n return Object.assign({}, sourceObj, extension)\n}\n\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj['age'] === 'number'\n}\n\nexport function extendWithAge<\n TSource\n> (\n sourceObj: TSource,\n age: number\n): WithAge {\n\n const extension = { age }\n return Object.assign({}, sourceObj, extension)\n}", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj['gender'] === Gender.MALE || obj['gender'] === Gender.FEMALE)\n && isValidProbablitiy(obj['genderProbability'])\n}\n\nexport function extendWithGender<\n TSource\n> (\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number\n): WithGender {\n\n const extension = { gender, genderProbability }\n return Object.assign({}, sourceObj, extension)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common/index';\nimport { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1])\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` }\n )\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n }\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }\n )\n\n return { filters, bias }\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): PointwiseConvParams {\n\n const {\n filters,\n bias\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true)\n\n return {\n filters,\n batch_norm_offset: bias\n }\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): MobileNetV1.ConvPairParams {\n\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`)\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`)\n\n return { depthwise_conv, pointwise_conv }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0')\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1')\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2')\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3')\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4')\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5')\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6')\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7')\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8')\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9')\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10')\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11')\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12')\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13')\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13\n }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0')\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1')\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2')\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3')\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4')\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5')\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6')\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7')\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor')\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor')\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor')\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor')\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor')\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor')\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor')\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor')\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor')\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor')\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor')\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor')\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0\n }\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1\n }\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2\n }\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3\n }\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4\n }\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5\n }\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const mobilenetv1 = extractMobilenetV1Params()\n const prediction_layer = extractPredictionLayerParams()\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4]\n )\n const output_layer = {\n extra_dim\n }\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer\n },\n paramMappings\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport { BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`)\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`)\n\n return { filters, batch_norm_offset }\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n\n const mappedPrefix = `mobilenetv1/conv_${idx}`\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`)\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`)\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`)\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`)\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`)\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv)\n }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13)\n }\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`)\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`)\n\n return { filters, bias }\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`\n )\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`\n )\n\n return { box_encoding_predictor, class_predictor }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5)\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const extra_dim = weightMap['Output/extra_dim']\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' })\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`)\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.conv2d(x, params.filters, strides, 'same')\n out = tf.add(out, params.batch_norm_offset)\n return tf.clipByValue(out, 0, 6)\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same')\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon\n )\n return tf.clipByValue(out, 0, 6)\n\n })\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1]\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2])\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13\n ]\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx)\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides)\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1])\n if (layerIdx === 11) {\n conv11 = out\n }\n })\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null')\n }\n\n return {\n out,\n conv11: conv11 as any\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number\n): number[] {\n\n const numBoxes = boxes.shape[0]\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes\n )\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter(c => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score)\n\n const suppressFunc = (x: number) => x <= iouThreshold ? 1 : 0\n\n const selected: number[] = []\n\n candidates.forEach(c => {\n if (selected.length >= outputSize) {\n return\n }\n const originalScore = c.score\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j])\n if (iou === 0.0) {\n continue\n }\n c.score *= suppressFunc(iou)\n if (c.score <= scoreThreshold) {\n break\n }\n }\n\n if (originalScore === c.score) {\n selected.push(c.boxIndex)\n }\n })\n\n return selected\n}\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync()\n const yminI = Math.min(boxesData[i][0], boxesData[i][2])\n const xminI = Math.min(boxesData[i][1], boxesData[i][3])\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2])\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3])\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2])\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3])\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2])\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3])\n const areaI = (ymaxI - yminI) * (xmaxI - xminI)\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ)\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0\n }\n const intersectionYmin = Math.max(yminI, yminJ)\n const intersectionXmin = Math.max(xminI, xminJ)\n const intersectionYmax = Math.min(ymaxI, ymaxJ)\n const intersectionXmax = Math.min(xmaxI, xmaxJ)\n const intersectionArea =\n Math.max(intersectionYmax - intersectionYmin, 0.0) *\n Math.max(intersectionXmax - intersectionXmin, 0.0)\n return intersectionArea / (areaI + areaJ - intersectionArea)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]))\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1])\n ]\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2)))\n ]\n\n return {\n sizes,\n centers\n }\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers\n } = getCenterCoordinatesAndSizesLayer(x0)\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]))\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2))\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0])\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2))\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1])\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out)\n ]),\n [1, 0]\n )\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams\n) {\n return tf.tidy(() => {\n\n const batchSize = boxPredictions.shape[0]\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D\n )\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4]\n )\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]))\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number]\n )\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[]\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[]\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams\n) {\n return tf.tidy(() => {\n\n const batchSize = x.shape[0]\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4]\n )\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3]\n )\n\n return {\n boxPredictionEncoding,\n classPrediction\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams\n) {\n return tf.tidy(() => {\n\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1])\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2])\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1])\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2])\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1])\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2])\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1])\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2])\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0)\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1)\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2)\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3)\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4)\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5)\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding\n ], 1) as tf.Tensor4D\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction\n ], 1) as tf.Tensor4D\n\n return {\n boxPredictions,\n classPredictions\n }\n })\n}", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5\n this._maxResults = maxResults || 100\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`)\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`)\n }\n }\n\n get minConfidence(): number { return this._minConfidence }\n get maxResults(): number { return this._maxResults }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n\n constructor() {\n super('SsdMobilenetv1')\n }\n\n public forwardInput(input: NetInput) {\n\n const { params } = this\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D\n const features = mobileNetV1(x, params.mobilenetv1)\n\n const {\n boxPredictions,\n classPredictions\n } = predictionLayer(features.out, features.conv11, params.prediction_layer)\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer)\n })\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {}\n ): Promise {\n\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options)\n\n const netInput = await toNetInput(input)\n\n const {\n boxes: _boxes,\n scores: _scores\n } = this.forwardInput(netInput)\n\n\n // TODO batches\n const boxes = _boxes[0]\n const scores = _scores[0]\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose()\n _scores[i].dispose()\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data())\n\n const iouThreshold = 0.5\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence\n )\n\n const reshapedDims = netInput.getReshapedInputDimensions(0)\n const inputSize = netInput.inputSize as number\n const padX = inputSize / reshapedDims.width\n const padY = inputSize / reshapedDims.height\n\n const boxesData = boxes.arraySync()\n const results = indices\n .map(idx => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2])\n ].map(val => val * padY)\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3])\n ].map(val => val * padX)\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0)\n }\n )\n })\n\n boxes.dispose()\n scores.dispose()\n\n return results\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1()\n net.extractWeights(weights)\n return net\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights)\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741)\n]\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404]\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model'\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model'", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number'\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`)\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`)\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`)\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`)\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`)\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612))\n return tf.add(tf.relu(tf.sub(x, min)), min)\n //return tf.maximum(x, min)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid')\n out = tf.sub(out, params.bn.sub)\n out = tf.mul(out, params.bn.truediv)\n out = tf.add(out, params.conv.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid')\n out = tf.add(out, params.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n\n const sub = tf.tensor1d(extractWeights(size))\n const truediv = tf.tensor1d(extractWeights(size))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` }\n )\n\n return { sub, truediv }\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`)\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`)\n\n return { conv, bn }\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[]\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0')\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1')\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2')\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3')\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4')\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5')\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0',)\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1')\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2')\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3')\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4')\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5')\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6')\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7')\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1)\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1)\n return { sub, truediv }\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { filters, bias }\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`)\n const bn = extractBatchNormParams(`${prefix}/bn`)\n return { conv, bn }\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(weightMap, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const numFilters = (config.filterSizes && config.filterSizes.length || 9)\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8')\n }\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "export enum TinyYolov2SizeType {\n XS = 224,\n SM = 320,\n MD = 416,\n LG = 608\n}\n\nexport interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416\n this._scoreThreshold = scoreThreshold || 0.5\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`)\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)\n }\n }\n\n get inputSize(): number { return this._inputSize }\n get scoreThreshold(): number { return this._scoreThreshold }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2')\n validateConfig(config)\n this._config = config\n }\n\n public get config(): TinyYolov2Config {\n return this._config\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0)\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n\n let out = convWithBatchNorm(x, params.conv0)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = convWithBatchNorm(out, params.conv6)\n out = convWithBatchNorm(out, params.conv7)\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference')\n }\n\n return tf.tidy(() => {\n\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams)\n })\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return await this.forwardInput(await toNetInput(input), inputSize)\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams)\n\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput, inputSize)\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0)\n }\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold)\n out.dispose()\n out0.dispose()\n\n const boxes = results.map(res => res.box)\n const scores = results.map(res => res.score)\n const classScores = results.map(res => res.classScore)\n const classNames = results.map(res => this.config.classes[res.label])\n\n const indices = nonMaxSuppression(\n boxes.map(box => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true\n )\n\n const detections = indices.map(idx =>\n new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions\n )\n )\n\n return detections\n }\n\n protected getDefaultModelName(): string {\n return ''\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config)\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES\n\n const numFilters = filterSizes ? filterSizes.length : undefined\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`)\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes)\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number\n ) {\n\n const { width, height } = inputBlobDimensions\n const inputSize = Math.max(width, height)\n const correctionFactorX = inputSize / width\n const correctionFactorY = inputSize / height\n\n const numCells = outputTensor.shape[1]\n const numBoxes = this.config.anchors.length\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize])\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4])\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1])\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0)\n return [boxes, scores, classScores]\n })\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array()\n const boxesData = await boxesTensor.array()\n for (let row = 0; row < numCells; row ++) {\n for (let col = 0; col < numCells; col ++) {\n for (let anchor = 0; anchor < numBoxes; anchor ++) {\n\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY\n const width = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX\n const height = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY\n\n const x = (ctX - (width / 2))\n const y = (ctY - (height / 2))\n\n const pos = { row, col, anchor }\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 }\n\n results.push({\n box: new BoundingBox(x, y, x + width, y + height),\n score: score,\n classScore: score * classScore,\n label,\n ...pos\n })\n }\n }\n }\n }\n\n boxesTensor.dispose()\n scoresTensor.dispose()\n classScoresTensor.dispose()\n\n return results\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number },) {\n const { row, col, anchor } = pos\n const classesData = await classesTensor.array()\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label\n }))\n .reduce((max, curr) => max.classScore > curr.classScore ? max : curr)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n\n constructor(withSeparableConvs: boolean = true) {\n const config = Object.assign({}, {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face']\n },\n withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true\n }\n )\n\n super(config)\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config'\nexport * from './types'\n\nexport { TinyYolov2 }\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs)\n net.extractWeights(weights)\n return net\n}", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}", "export class ComposableTask {\n\n public async then(\n onfulfilled: (value: T) => T | PromiseLike\n ): Promise {\n return onfulfilled(await this.run())\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented')\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect\n) {\n const faceBoxes = parentResults.map(parentResult =>\n isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection\n )\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n )\n\n const results = await computeResults(faces)\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return results\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async faces => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment\n )\n}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404]", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512]\n }\n\n super(config)\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks5 } from '../classes/FaceLandmarks5';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet()\n}\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise =>\n nets.ssdMobilenetv1.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise =>\n nets.tinyFaceDetector.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise =>\n nets.tinyYolov2.locateFaces(input, options)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise =>\n nets.faceLandmark68Net.detectLandmarks(input)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise =>\n nets.faceLandmark68TinyNet.detectLandmarks(input)\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise =>\n nets.faceRecognitionNet.computeFaceDescriptor(input)\n\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise =>\n nets.faceExpressionNet.predictExpressions(input)\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise =>\n nets.ageGenderNet.predictAgeAndGender(input)\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url)\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url)\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url)\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url)\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url)\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url)\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url)\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url)\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model\nexport const locateFaces = ssdMobilenetv1\nexport const detectLandmarks = detectFaceLandmarks", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.faceExpressionNet.predictExpressions(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i])\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithFaceExpressions(parentResult, faceExpressions)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n\n public async run(): Promise>[]> {\n\n const parentResults = await this.parentTask\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i]\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n })\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n\n public async run(): Promise> | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput\n ) {\n super()\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n faces => Promise.all(faces.map(face =>\n nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise\n )),\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor))\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return extendWithFaceDescriptor(parentResult, descriptor)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected useTinyLandmarkNet: boolean\n ) {\n super()\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n const detections = parentResults.map(res => res.detection)\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections)\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n face => this.landmarkNet.detectLandmarks(face)\n )) as FaceLandmarks68[]\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return parentResults.map((parentResult, i) =>\n extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i])\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection])\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return extendWithFaceLandmarks(parentResult, landmarks)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n protected input: TNetInput,\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options()\n ) {\n super()\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n\n const { input, options } = this\n\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n options instanceof SsdMobilenetv1Options\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n )\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options')\n }\n\n return faceDetectionFunction(input)\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n return new Promise[]>(async res => {\n const detections = await this.run()\n return res(detections.map(detection => extendWithFaceDetection({}, detection)))\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask (\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach(faceDetection => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n return new Promise | undefined>(async res => {\n const detection = await this.run()\n return res(detection ? extendWithFaceDetection<{}>({}, detection) : undefined)\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n}", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options)\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options)\n}", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number\n): Promise>>[]> {\n console.warn('allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {}\n): Promise>>[]> {\n console.warn('allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport const allFaces = allFacesSsdMobilenetv1\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n\n private _labeledDescriptors: LabeledFaceDescriptors[]\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6\n ) {\n\n this._distanceThreshold = distanceThreshold\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs]\n\n if (!inputArray.length) {\n throw new Error(`FaceRecognizer.constructor - expected atleast one input`)\n }\n\n let count = 1\n const createUniqueLabel = () => `person ${count++}`\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc])\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor])\n }\n\n throw new Error(`FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>`)\n })\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors }\n public get distanceThreshold(): number { return this._distanceThreshold }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map(d => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1)\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors)\n ))\n .reduce((best, curr) => best.distance < curr.distance ? best : curr)\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor)\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance)\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON())\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n\n}", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector()\n net.extractWeights(weights)\n return net\n}", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n"], - "mappings": ";;;;;;;ghCAAA,0FAAO,qBACL,MAAO,OAAO,SAAW,UACpB,IACA,MAAO,SAAW,aAGlB,MAAO,UAAY,aAAe,CAAC,CAAC,QAAQ,8pYCNnD,YAAA,qBCAA,YAAA,oBA2BC,AAAA,mCAED,oBACE,OAAS,UAAa,OAEtB,GAAG,KAAO,WACR,MAAQ,QAAU,GAAG,GAAK,GAAG,EAAI,sBACjC,MAAA,IAAG,GAAK,GAAG,GACX,GAAG,GAAK,GAAG,GACJ,GAAG,GAAK,EAAK,IAAG,EAAI,EAAI,IAIjC,GAAG,EAAI,EACP,GAAG,GAAK,KAAK,KACb,GAAG,GAAK,KAAK,KACb,GAAG,GAAK,KAAK,KACb,GAAG,IAAM,KAAK,MACV,GAAG,GAAK,GAAK,IAAG,IAAM,GAC1B,GAAG,IAAM,KAAK,MACV,GAAG,GAAK,GAAK,IAAG,IAAM,GAC1B,GAAG,IAAM,KAAK,MACV,GAAG,GAAK,GAAK,IAAG,IAAM,GAC1B,KAAO,KAGT,mBACE,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACF,EAGT,yBACE,OAAS,GAAI,MAAK,aACN,MAAQ,KAAK,WACd,GAAG,KACd,MAAA,MAAK,MAAQ,WAAa,MAAQ,IAAG,OAAS,WAAe,GAC7D,KAAK,OAAS,WACZ,MAAO,QAAU,QAAS,QAAW,GAAK,uBAE5C,KAAK,MAAQ,KACT,QACE,OAAO,SAAU,UAAU,KAAK,OAAO,IAC3C,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGT,gBACE,MAAQ,gBAEG,eACT,KAAO,KAAK,WACZ,UAAa,EAAG,EAAI,KAAK,OAAQ,KAC/B,GAAK,KAAK,WAAW,GACrB,MAAQ,mBAAsB,EAC9B,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EACL,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EAAI,WAEX,MAAQ,KAAM,GAAK,uBAGrB,MAAO,MAIL,SAAU,QAAO,QACnB,QAAO,QAAU,KACR,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,KAAO,OAIZ,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,yBC9GnC,YAAA,oBAGC,AAAA,mCAED,sBACE,OAAS,aAAgB,GAEzB,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EAGP,GAAG,KAAO,WACR,MAAQ,GAAG,EAAK,GAAG,GAAK,GACxB,MAAA,IAAG,EAAI,GAAG,EACV,GAAG,EAAI,GAAG,EACV,GAAG,EAAI,GAAG,EACH,GAAG,GAAM,GAAG,IAAM,GAAM,EAAK,IAAM,GAGxC,OAAU,MAAO,GAEnB,GAAG,EAAI,KAGP,SAAW,KAIb,UAAa,EAAG,EAAI,QAAQ,OAAS,GAAI,IACvC,GAAG,GAAK,QAAQ,WAAW,GAAK,EAChC,GAAG,OAIP,mBACE,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,yBACE,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,MAAA,MAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACT,QACE,OAAO,SAAU,UAAU,KAAK,OAAO,IAC3C,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGL,SAAU,QAAO,QACnB,QAAO,QAAU,KACR,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,OAAS,OAId,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,yBC7EnC,YAAA,oBAGC,AAAA,mCAED,sBACE,OAAS,aAAgB,GAGzB,GAAG,KAAO,WACR,MAAS,GAAG,EAAK,GAAG,IAAM,EAC1B,MAAA,IAAG,EAAI,GAAG,EAAG,GAAG,EAAI,GAAG,EAAG,GAAG,EAAI,GAAG,EAAG,GAAG,EAAI,GAAG,EACzC,IAAG,EAAK,GAAG,EAAI,OAAS,GAC5B,IAAG,EAAK,GAAG,EAAK,GAAG,GAAK,EAAO,GAAK,GAAK,IAAO,GAGtD,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EAEH,OAAU,MAAO,GAEnB,GAAG,EAAI,KAGP,SAAW,KAIb,UAAa,EAAG,EAAI,QAAQ,OAAS,GAAI,IACvC,GAAG,GAAK,QAAQ,WAAW,GAAK,EAC5B,GAAK,QAAQ,QACf,IAAG,EAAI,GAAG,GAAK,GAAK,GAAG,IAAM,GAE/B,GAAG,OAIP,mBACE,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,yBACE,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,MAAA,MAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACT,QACE,OAAO,SAAU,UAAU,KAAK,OAAO,IAC3C,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGL,SAAU,QAAO,QACnB,QAAO,QAAU,KACR,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,OAAS,OAId,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,4BClFnC,YAAA,oBAKC,AAAA,mCAED,sBACE,OAAS,KAGT,GAAG,KAAO,WAER,MAAQ,GAAG,IAAO,GAAG,QACrB,MAAA,GAAI,EAAE,GAAI,GAAM,IAAM,EAAI,EAAI,EAAK,GAAK,GACxC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,GACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,EACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,GAAK,EACnC,EAAI,EAAG,EAAI,EAAK,GAAI,EAAI,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,EACtD,EAAE,GAAK,EACP,GAAG,EAAK,EAAI,EAAK,EACV,GAGT,0BACE,UAAc,GAEd,GAAI,QAAU,OAAO,GAEnB,EAAI,EAAE,GAAK,UAIX,KADA,MAAO,GAAK,MACP,EAAI,EAAG,EAAI,MAAK,OAAQ,EAAE,EAC7B,EAAE,EAAI,GAAM,EAAE,EAAI,IAAM,GACnB,MAAK,WAAW,GAAK,EAAG,EAAI,EAAK,IAAM,GAIhD,KAAO,EAAE,OAAS,GAAG,EAAE,KAAK,GAC5B,IAAK,EAAI,EAAG,EAAI,GAAK,EAAE,KAAO,EAAG,EAAE,EAAE,CAOrC,IANI,GAAK,EAAG,EAAI,EAAE,GAAK,GAAS,EAAI,EAAE,GAEtC,IAAG,EAAI,EACP,IAAG,EAAI,EAGF,EAAI,IAAK,EAAI,EAAG,EAAE,EACrB,IAAG,OAIP,MAAK,GAAI,MAGX,mBACE,MAAA,GAAE,EAAI,EAAE,EAAE,QACV,EAAE,EAAI,EAAE,EACD,EAGT,yBACM,MAAQ,MAAM,MAAO,CAAE,GAAI,OAC/B,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,MAAA,MAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACT,QACE,QAAM,GAAG,KAAK,OAAO,IACzB,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGL,SAAU,QAAO,QACnB,QAAO,QAAU,KACR,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,UAAY,OAIjB,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,0BC9FnC,YAAA,oBAyBC,AAAA,mCAED,sBACE,OAAS,KAGT,GAAG,KAAO,WACR,MAAQ,GAAG,IACH,GAAG,IAAO,GAAG,MAErB,MAAA,IAAG,EAAI,EAAK,EAAI,WAAc,EAE9B,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GAEX,EAAI,EAAE,GAAK,EAAI,EACf,GAAG,EAAI,EAEC,EAAK,GAAK,IAAM,IAAQ,GAGlC,0BACE,gBAAuB,SAAY,IAYnC,IAXI,QAAU,OAAO,GAEnB,GAAI,MACJ,MAAO,MAGP,OAAO,MAAO,KACd,EAAI,EACJ,MAAQ,KAAK,IAAI,MAAO,MAAK,SAG1B,EAAI,EAAG,EAAI,IAAK,EAAI,MAAO,EAAE,EAE5B,OAAM,IAAK,MAAK,WAAY,GAAI,IAAM,MAAK,SAE3C,IAAM,GAAG,GAAI,GACjB,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,GAAK,EACV,GAAK,IAAM,GACP,GAAK,GACP,GAAK,EAAI,WAAc,EACvB,EAAK,EAAE,EAAI,MAAS,EAAI,EACxB,EAAU,GAAL,EAAU,EAAI,EAAI,GAW3B,IAPI,GAAK,KACP,GAAG,QAAQ,MAAK,QAAU,GAAK,KAAO,IAKxC,EAAI,IACC,EAAI,EAAI,IAAK,EAAI,EAAG,EAAE,EACzB,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GACX,EAAE,GAAK,EAAI,EAGb,IAAG,EAAI,EACP,IAAG,EAAI,EACP,IAAG,EAAI,EAGT,MAAK,GAAI,MAGX,mBACE,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAGT,yBACM,MAAQ,MAAM,MAAO,CAAE,GAAI,OAC/B,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,MAAA,MAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACT,QACE,QAAM,GAAG,KAAK,OAAO,IACzB,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGL,SAAU,QAAO,QACnB,QAAO,QAAU,KACR,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,QAAU,OAIf,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,yBChJnC,YAAA,oBAIC,AAAA,mCAED,sBACE,OAAS,aAAgB,GAGzB,GAAG,KAAO,WACR,MAAQ,GAAG,IAAO,GAAG,IAAO,GAAG,IAAO,GAAG,EACzC,MAAA,GAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,GAAG,EAAI,EAAK,GAAK,GAAO,IAAM,GAAM,EACpC,GAAG,EAAI,EAAK,EAAI,EAAK,EACrB,GAAG,EAAK,GAAK,GAAO,IAAM,GAAM,EACzB,GAAG,EAAK,EAAI,EAAK,GAmB1B,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,WAAa,EACpB,GAAG,EAAI,WAEH,OAAS,KAAK,MAAM,MAEtB,IAAG,EAAK,KAAO,WAAe,EAC9B,GAAG,EAAI,KAAO,GAGd,SAAW,KAIb,UAAa,EAAG,EAAI,QAAQ,OAAS,GAAI,IACvC,GAAG,GAAK,QAAQ,WAAW,GAAK,EAChC,GAAG,OAIP,mBACE,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,yBACE,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,MAAA,MAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACT,QACE,OAAO,SAAU,UAAU,KAAK,OAAO,IAC3C,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGL,SAAU,QAAO,QACnB,QAAO,QAAU,KACR,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,OAAS,OAId,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,yBCnGnC,YAAA,2BCAA,YAAA,oBAwBC,AAAA,sBAID,YAAa,WACD,WACC,SACA,WACC,oBACG,KAAK,IAAI,MAAO,qBACd,KAAK,IAAI,EAAG,iBAChB,aAAe,OACnB,MAAQ,aAOnB,4CACE,QAAU,GACV,QAAW,SAAW,GAAQ,CAAE,QAAS,IAAU,SAAW,GAG9D,cAAgB,OAAO,SACrB,QAAQ,QAAU,CAAC,KAAM,SAAS,QACjC,MAAQ,KAAQ,WAAa,KAAM,GAAI,UAG/B,GAAI,MAAK,UAIT,WAIT,UAHQ,KAAK,EAAE,UACP,aACA,EACD,EAAI,cACT,EAAK,GAAI,GAAK,MACd,GAAK,MACL,EAAI,KAAK,EAAE,GAEb,KAAO,GAAK,UACV,GAAK,EACL,GAAK,EACL,KAAO,EAET,MAAQ,GAAI,GAAK,GAGnB,MAAA,MAAK,MAAQ,WAAa,MAAO,MAAK,EAAE,GAAK,GAC7C,KAAK,MAAQ,WAAa,MAAO,MAAK,EAAE,GAAK,YAC7C,KAAK,OAAS,KAGd,OAAO,SAAS,KAAK,GAAI,OAGjB,SAAQ,MAAQ,UACpB,0CAUE,MATI,SAEE,QAAM,GAAK,KAAK,OAAO,MAE3B,MAAK,MAAQ,WAAa,MAAO,MAAK,KAAM,MAK1C,aAAgB,MAAK,SAAW,MAAa,OAIrC,QAElB,KACA,UACA,UAAY,SAAU,QAAQ,OAAU,MAAQ,KAChD,QAAQ,OAEV,KAAK,OAAS,SAAW,YAYzB,mBACE,aAAgB,IAAI,UACX,OAAU,IAAO,GAAG,EAAI,GAAG,EAAI,IAAO,GAAG,EAAI,GAMtD,IAHK,QAAU,KAAM,CAAC,WAGf,EAAI,OACT,EAAE,GAAK,IAET,IAAK,EAAI,EAAG,EAAI,MAAO,IACrB,EAAE,GAAK,EAAE,EAAI,KAAQ,EAAI,IAAI,EAAI,QAAW,GAAI,EAAE,KAClD,EAAE,GAAK,EAIR,AAAA,IAAG,EAAI,iBAIN,aAFW,KACH,GAAG,KAAO,GAAG,KAAO,GAAG,EACxB,UACL,GAAI,GAAE,GAAI,KAAQ,GAAI,GACtB,EAAI,EAAI,MAAQ,GAAE,KAAS,IAAE,IAAK,GAAE,GAAI,KAAQ,GAAI,KAAQ,IAAE,IAAK,KAErE,MAAA,IAAG,EAAI,GAAG,GAAG,EAAI,GACV,IAIN,OAOL,mBACE,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAOT,6BACE,WAAa,OAAW,MAAO,UAC/B,GAAI,OAAS,KAAO,SAClB,IAAK,OAAQ,KACX,IAAM,OAAO,KAAK,SAAQ,IAAI,MAAO,MAAQ,cAGjD,MAAQ,QAAO,OAAS,OAAS,KAAO,SAAW,IAAM,IAAM,KAQjE,0BAEE,mBADiB,KAAO,WAAe,EAChC,EAAI,WAAW,QACpB,IAAI,KAAO,GACT,KAAS,QAAS,IAAI,KAAO,GAAK,IAAM,WAAW,WAAW,KAElE,MAAO,UAAS,KAQlB,oBACE,IACE,QACA,MAAI,aAAe,KAAM,WAAW,aAElC,IAAM,IAAI,OAEV,KAAM,GAAI,YAAW,OACpB,SAAO,QAAU,QAAO,UAAU,gBAAgB,MAE9C,SAAS,cAEhB,aAAc,QAAO,kBACP,UAAW,SAAQ,QACjC,MAAO,CAAC,CAAC,GAAI,MAAM,QAAQ,QAAS,QAAO,OAAQ,SAAS,SAQhE,qBACE,MAAO,QAAO,aAAa,MAAM,EAAG,GAgBtC,GANA,OAAO,KAAK,SAAU,OAMjB,MAAO,SAAW,UAAY,OAAO,SACxC,OAAO,QAAU,YAEjB,IACE,WAAqB,iCAEb,OAAO,SAAW,YAAc,OAAO,KACjD,OAAO,WAAa,MAAO,iBAK3B,GACA,4BCrPF,YAAA,oBAYA,UAAmB,sBAKE,wBAKA,2BAQG,4BASF,yBAOD,oBAIJ,qBAEjB,GAAG,KAAO,MACV,GAAG,OAAS,OACZ,GAAG,OAAS,OACZ,GAAG,UAAY,UACf,GAAG,QAAU,QACb,GAAG,OAAS,OAEZ,OAAO,QAAU,4BC3DjB,YAAA,qBCAA,YAAA,+BCAA,YAAA,2BCAA,YAAA,gDCAA,YAAA,oBACA,kCAAqC,WACnC,eAAiB,MAAO,WAAa,aAAe,SAAS,cAAgB,SAAS,cAAc,IAAM,OAC1G,MAAI,OAAO,aAAe,aAAa,YAAa,YAAc,YAEpE,yCACE,+BAAgC,gCAAiC,GAEnE,4BAA4B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,MAAM,4BAA4B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,OAAO,6BAA6B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,OAAO,6BAA6B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,QAAQ,6BAA6B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,QAAQ,WAAW,MAAO,iCAAgC,YAAY,+BAA8B,eAAkB,uBAA8B,OAAW,IAAI,MAAO,QAAW,OAAO,eAAe,MAAM,iBAAgB,KAAK,OAAO,MAAM,eAAe,eAAmB,uBAA2B,yBAAyB,KAAM,6BAAgC,yBAAgC,uBAA8B,wBAA+B,GAAM,mBAAmB,MAAO,SAAS,SAAS,sBAAsB,MAAO,gBAAgB,WAAW,oBAAoB,MAAO,UAAU,UAAU,MAAO,SAAQ,UAAW,UAAU,MAAO,SAAQ,SAAS,MAAO,SAAS,qBAAqB,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,sBAAsB,2BAA2B,OAAO,wBAA2B,GAAS,wBAAwB,SAAO,OAAO,OAAU,aAAa,OAAO,aAAgB,eAAe,OAAO,gBAAkB,oBAAoB,GAAG,0BAA0B,MAAG,QAAO,WAAsB,OAAO,WAAc,KAAK,iBAAwB,gBAAgB,KAAK,8DAAsE,GAAG,qBAAwB,sBAAuB,gBAAwB,eAAQ,QAAQ,iBAAiB,IAAS,gBAAgB,UAAU,IAAI,MAAM,0BAAqC,MAAI,SAAO,QAAe,eAAU,UAAS,UAAiB,gBAAQ,SAAS,SAAS,UAAa,UAAiB,OAAO,aAAgB,SAAS,OAAO,KAAK,SAAS,WAAW,mBAA8B,QAAQ,MAAM,SAAS,IAAM,MAAI,KAAI,QAAQ,KAAI,GAAI,YAAW,MAAK,QAAO,IAAI,QAAe,KAAQ,QAAQ,KAAQ,OAAO,GAAG,aAAY,QAAQ,KAAQ,GAAG,QAAQ,MAAM,MAAK,WAAW,QAAQ,KAAQ,MAAM,GAAG,QAAQ,GAAM,oBAAoB,aAAa,GAAG,CAAE,cAAc,aAAa,KAAM,MAAM,QAAQ,GAAM,qBAAqB,OAAO,MAAM,iBAAiB,QAAQ,KAAQ,SAAS,OAAO,QAAW,WAAW,MAAM,8BAA8B,sBAAsB,IAAI,kBAA0B,kCAA2B,KAAA,SAAQ,MAAM,2GAAiH,EAAE,OAAO,kBAAkB,WAAe,sBAAyB,OAAO,OAAM,aAAa,OAAM,YAAuB,MAAO,MAAK,KAAI,WAAW,YAAuB,SAAS,MAAG,OAAO,aAAa,WAAmB,GAAI,YAAW,WAAW,IAAI,MAAK,KAAK,EAAE,UAAU,QAAO,MAAO,OAAO,UAAiB,OAAS,MAAO,aAAY,YAAa,WAAW,WAAmB,MAAO,YAAW,aAAa,YAAW,WAAa,MAAO,OAAO,YAAY,OAAM,iBAAiB,KAAK,UAAY,MAAO,QAAQ,aAAgB,OAAO,UAAU,aAAY,SAAQ,IAAG,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAAQ,MAAM,MAAO,WAAW,YAAY,SAAS,QAAe,qBAAoB,wBAA0B,uBAAuB,gBAAgB,KAAK,SAAS,KAAa,SAAS,eAAe,iBAAgB,SAAS,cAAc,KAAO,aAAY,iBAAgB,aAAc,gBAAgB,QAAQ,WAAW,EAAG,gBAAgB,gBAAgB,OAAO,EAAE,gBAAgB,YAAY,KAAK,GAAQ,gBAAgB,GAAM,oBAAqB,OAAM,0BAAqC,MAAI,SAAO,QAAe,eAAU,UAAS,UAAiB,gBAAQ,SAAS,SAAS,UAAa,UAAiB,OAAO,aAAgB,SAAS,OAAO,KAAK,SAAS,WAAW,mBAA8B,QAAQ,MAAM,SAAS,IAAM,MAAI,KAAI,QAAQ,KAAI,GAAI,YAAW,MAAK,QAAO,IAAI,QAAe,MAAU,OAAM,cAAyB,QAAQ,GAAI,gBAAe,MAAA,KAAI,KAAK,MAAM,IAAI,IAAO,IAAI,KAAK,MAAa,IAAI,cAAiB,uBAAuB,YAAW,cAAyB,QAAQ,GAAI,gBAAe,MAAA,KAAI,KAAK,MAAM,IAAI,IAAO,IAAI,aAAa,cAAc,IAAI,KAAK,MAAa,GAAI,YAAW,IAAI,YAAW,UAAU,6BAAuC,QAAQ,GAAI,gBAAe,IAAI,KAAK,MAAM,IAAI,IAAM,IAAI,aAAa,cAAc,IAAI,OAAO,WAAsB,GAAG,IAAI,QAAQ,KAAK,IAAI,QAAQ,GAAG,IAAI,UAAU,OAAO,IAAI,UAAU,OAAO,WAAW,IAAI,QAAQ,QAAQ,IAAI,KAAK,QAAO,eAAe,gBAAgB,SAAS,MAAM,QAAgB,qBAAwB,MAAO,cAAc,aAAa,aAAoB,qBAAc,aAAa,QAAQ,OAAO,OAAU,QAAQ,IAAI,KAAK,aAAiB,OAAO,UAAa,QAAQ,KAAK,KAAK,SAAS,IAAI,MAAO,iBAAoB,gBAAgB,eAAe,MAAM,QAAO,KAAK,gBAAgB,MAAM,gBAAgB,KAAQ,OAAO,WAAa,YAAW,OAAO,WAAgB,OAAO,aAAe,aAAY,OAAO,aAAkB,OAAO,MAAQ,OAAM,OAAO,MAAQ,iBAAiB,QAAQ,mBAAuB,QAAQ,8BAAkC,QAAQ,2BAAkC,OAAO,YAAc,YAAW,OAAO,YAAc,kBAAqB,OAAO,eAAiB,eAAc,OAAO,eAAoB,MAAO,cAAc,UAAU,IAAI,mCAAmC,yBAA6B,GAAI,aAAY,MAAM,CAAC,QAAU,IAAI,QAAU,IAAI,EAAE,QAAU,wCAAgD,eAAmB,QAAY,cAAqB,EAAE,iCAAoC,WAAW,MAAM,qBAAqB,MAAO,yBAAyB,UAAS,OAAO,IAAI,OAAO,MAAA,SAAO,MAAK,gCAAgC,MAAM,8BAAqC,MAAK,oDAAoD,QAAQ,CAAC,OAAS,cAAc,SAAQ,EAAE,GAAG,KAAM,MAAuB,MAAM,GAAG,QAAS,KAAI,QAAQ,GAAG,EAAE,KAAI,WAAW,KAAK,aAAa,IAAI,KAAI,KAAK,MAAO,OAAK,MAAQ,cAAc,SAAQ,WAAW,IAAI,QAAQ,MAAA,oBAAmB,IAAI,MAAY,OAAM,kCAAiC,MAAG,cAAa,SAAgB,aAAa,MAAQ,aAAa,UAAiB,QAAQ,MAAY,KAAI,UAAS,SAAS,aAAiB,UAAa,EAAE,GAAG,KAAM,UAAU,EAAE,EAAE,KAAK,OAAO,KAAK,cAAc,IAAI,SAAS,IAAO,UAAc,UAAQ,GAAE,QAAM,aAAY,MAAM,GAAG,UAAU,KAAK,KAAS,MAAM,GAAG,KAAK,GAAK,QAAQ,MAAK,MAAM,KAAK,OAAO,MAAA,KAAI,mBAAmB,KAAQ,SAAQ,GAAE,aAAa,QAAc,IAAI,+CAA+C,SAAS,UAAU,GAAG,gBAAgB,SAAS,MAAM,eAAe,MAAO,QAAO,sBAA0B,aAAa,SAAS,MAAG,aAAY,aAAa,CAAC,KAAa,SAAS,OAAc,WAAW,MAAO,OAAM,MAAM,WAAW,SAAS,UAAU,OAAO,oDAA6F,eAA9B,IAAI,mBAAuB,GAAS,CAAE,MAAK,UAAS,OAAO,KAAK,OAAO,GAAG,CAAC,GAAG,MAAO,KAAI,GAAG,CAAE,IAAG,MAAM,KAAK,OAAO,aAAa,IAAI,SAAS,OAAO,KAAK,OAAO,GAAG,GAAI,IAAG,MAAM,KAAK,KAAK,OAAO,aAAc,IAAG,KAAK,EAAE,IAAI,SAAS,OAAO,KAAK,OAAO,GAA4F,GAArF,IAAG,MAAM,IAAK,GAAI,IAAG,KAAK,GAAG,IAAI,EAAE,GAAQ,GAAI,IAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,OAAO,GAAM,GAAG,MAAO,KAAK,OAAO,aAAa,SAAS,OAAO,GAAG,MAAM,KAAK,OAAO,aAAa,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,MAAO,KAAI,0CAA0C,MAAO,KAAI,kBAAkB,mBAAmB,IAAI,gBAAgB,GAAG,4DAA4D,GAAG,CAAE,iBAAgB,GAAG,MAAO,GAA0D,iBAA3C,cAAkB,OAAO,gBAAgB,IAAY,EAAE,EAAE,IAAI,OAAO,EAAE,GAAG,MAAM,IAAI,WAAW,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,OAAO,IAAI,WAAW,EAAE,GAAG,EAAE,MAAQ,IAAE,OAAO,IAAI,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,QAAQ,OAAO,MAAM,KAAK,UAAU,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,EAAE,KAAK,UAAU,IAAI,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,EAAE,GAAG,KAAK,UAAU,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,EAAE,GAAG,KAAK,UAAU,IAAI,EAAE,IAAI,MAAA,MAAK,QAAQ,EAAS,OAAO,SAAS,kDAAkD,MAAO,mBAAkB,IAAI,mBAAmB,OAAO,iBAAiB,8BAAwC,YAAF,IAAY,EAAE,EAAE,IAAI,OAAO,EAAE,GAAG,MAAM,IAAI,WAAW,GAAM,GAAG,OAAO,GAAG,OAAM,GAAE,MAAQ,IAAE,OAAO,IAAI,IAAI,WAAW,EAAE,GAAG,MAAQ,GAAG,IAAI,EAAE,IAAY,GAAG,KAAK,KAAK,EAAU,GAAG,MAAM,KAAK,EAAO,KAAK,EAAE,MAAO,KAAI,6CAA0C,mBAAmB,IAAI,OAAM,UAAQ,mBAAmB,MAAM,6BAA6B,MAAG,GAAE,SAAS,GAAG,IAAG,SAAS,EAAE,UAAgB,EAAE,uEAAsE,yCAAyC,QAAO,IAAI,OAAO,MAAS,MAAM,GAAI,WAAU,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,QAAW,QAAQ,GAAI,aAAY,KAAK,OAAO,QAAW,QAAQ,GAAI,aAAY,KAAK,OAAO,QAAW,QAAQ,GAAI,cAAa,KAAK,OAAO,QAAW,QAAQ,GAAI,cAAa,KAAK,eAAe,iBAAiB,qBAAqB,mBAAmB,uBAAuB,6BAA6D,OAAO,gBAAmB,SAAS,GAAG,uBAAwB,WAAW,OAAO,WAAc,QAAO,OAAO,eAAkB,OAAO,WAAe,WAAW,OAAO,mBAAmB,WAAW,GAAI,aAAY,OAAO,CAAC,QAAU,uBAAuB,eAAe,QAAU,WAAW,eAAe,OAAS,KAAU,CAAE,YAAW,iBAAkB,oBAAoB,KAAA,KAAI,+NAAkO,qBAAqB,QAAQ,IAAI,qHAA2H,MAAM,cAAmB,YAAY,SAAO,WAAW,QAAO,uBAAuB,QAAO,WAAW,2BAA2B,SAAY,wBAAwB,qBAAoB,gBAAgB,GAAG,cAAa,0CAAyC,KAAM,WAAU,OAAO,IAAG,aAAa,WAAU,QAAQ,GAAG,MAAO,WAAU,YAAY,SAAS,QAAQ,SAAS,UAAS,SAAS,KAAQ,MAAO,QAAO,SAAa,SAAS,MAAM,OAAW,OAAO,UAAa,OAAW,OAAO,WAAc,MAAK,SAAS,KAAW,MAAK,SAAS,MAAM,OAAU,KAAK,SAAS,MAAO,iBAAiB,cAAkB,cAAkB,cAAkB,iBAAqB,sBAA0B,GAAS,wBAAuB,oBAAmB,IAAK,kBAAkB,GAAG,uBAAuB,OAAO,GAAG,OAAO,OAAsF,IAAxE,MAAO,QAAO,QAAW,YAAW,QAAO,OAAU,CAAC,OAAO,SAAiB,OAAO,OAAU,QAAQ,YAAY,OAAO,OAAU,SAAU,qBAAqB,cAAc,uBAAuB,mBAAmB,GAAK,qBAAqB,YAAY,mBAAmB,GAAG,uBAAuB,OAAO,qBAAqB,YAAY,mBAAmB,GAAG,uBAAuB,OAAO,GAAG,OAAO,QAA0F,IAA3E,MAAO,QAAO,SAAY,YAAW,QAAO,QAAW,CAAC,OAAO,UAAkB,OAAO,QAAW,QAAQ,aAAa,OAAO,QAAW,SAAU,qBAAqB,eAAe,yBAAyB,aAAa,QAAQ,IAAI,0BAA0B,cAAc,QAAQ,IAAI,cAAc,KAAK,gBAAoB,KAAK,sBAA0B,uBAA2B,2BAA+B,KAAK,8BAA8B,QAAO,CAAC,uBAAuB,uDAAuD,kBAAqB,OAAO,wBAA2B,OAAO,uBAA0B,iBAAkB,iCAA0I,GAAzG,kBAAqB,OAAO,wBAA2B,OAAO,uBAA0B,iBAAoB,iBAAiB,GAAM,wBAAuB,MAAM,eAAc,sBAAsB,qBAAqB,MAAQ,wBAAuB,aAAa,sBAAsB,sBAAsB,KAAK,YAAa,OAAO,gBAAmB,GAAG,OAAO,gBAAmB,GAAG,qBAAqB,KAAG,QAAO,SAAY,OAAO,QAAW,MAAS,wBAAuB,QAAQ,MAAM,uBAAwB,GAAI,SAAO,OAAO,MAAM,GAAG,IAAI,MAAM,IAAI,MAAM,MAAM,GAAK,WAAW,EAAE,KAAK,SAAS,KAAK,+CAAqD,GAAI,aAAY,aAAa,MAAM,+BAA+B,MAAO,QAAO,UAAU,WAAW,IAAI,WAAW,QAAQ,IAAI,QAAQ,UAAU,EAAE,kBAAkB,wCAAwC,6BAA6B,MAAO,WAAU,SAAS,eAAe,kBAAkB,UAAU,6BAA6B,MAAO,WAAU,SAAS,eAAe,mBAAmB,uCAA2C,UAAU,iBAAiB,gBAAe,WAAW,iBAAgB,qBAAqB,IAAI,GAAG,WAAY,MAAO,IAAI,YAAW,YAAY,GAAG,WAAY,MAAO,YAAW,gBAAqB,KAAK,8DAA8D,MAAM,OAAM,4BAA4B,MAAG,CAAC,YAAa,qBAAoB,wBAAwB,MAAO,QAAQ,YAAY,CAAC,UAAU,gBAAwB,MAAM,eAAe,CAAC,YAAY,gBAAgB,KAAK,mBAAmB,GAAG,CAAC,SAAS,GAAO,KAAK,uCAAuC,eAAe,IAAI,MAAO,UAAS,gBAAmB,MAAM,WAAW,MAAO,eAAqB,GAAI,SAAQ,yBAAyB,QAAQ,eAAe,sBAAsB,SAAS,CAAC,EAAI,eAAe,2CAA0C,aAAY,SAAS,QAAgD,GAAxC,OAAO,IAAO,SAAQ,WAAW,QAAU,CAAC,wBAAwB,qBAAqB,QAAQ,cAAc,OAAO,QAAQ,cAAc,QAAQ,YAAY,QAAQ,uBAAuB,EAAE,WAAe,EAAE,kBAAiB,oBAAoB,yBAA6B,wBAAwB,iBAAiB,oBAAoB,2CAA2C,gBAAgB,OAAO,SAAY,OAAO,QAAW,0CAA0C,MAAO,oBAAmB,KAAK,iBAAiB,MAAO,aAAY,YAAY,OAAO,QAAQ,KAAK,SAAS,iBAAiB,IAAI,0CAA0C,QAAQ,MAAM,UAAU,4BAA4B,GAAG,CAAC,YAAY,MAAO,aAAY,sBAAuB,YAAY,CAAC,UAAU,iBAAiB,CAAC,UAAU,iBAAiB,MAAO,QAAQ,WAAY,MAAM,eAAe,CAAC,YAAY,gBAAgB,KAAK,mBAAmB,WAAW,YAAY,qBAAqB,SAAS,MAAM,MAAO,QAAO,KAAK,0BAA0B,iBAAiB,IAAI,kCAAkC,QAAQ,IAAI,6CAA6C,uBAAuB,mCAAoC,OAAO,wBAAuB,2BAA4B,GAAG,OAAO,gBAAoB,IAAI,aAAY,OAAO,gBAAmB,KAAK,iBAAiB,MAAO,mBAAiB,MAAA,KAAI,sDAAsD,GAAU,GAAO,MAAA,oBAAyB,GAAG,eAAe,GAAG,0BAA0B,QAAQ,cAAkB,wBAAuB,WAAW,KAAK,CAAC,KAAK,WAAW,wBAAwB,kBAAkB,mCAAuC,mCAAuC,EAAE,oFAAoF,WAAW,WAAW,EAAE,oBAAoB,oBAAoB,EAAE,oBAAoB,oBAAoB,EAAE,cAAc,WAAW,iCAAiC,oBAAoB,iCAAiC,oBAAoB,OAAO,uBAA0B,uBAAuB,gBAAgB,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,QAAQ,IAAI,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,GAAG,OAAO,GAAG,MAAM,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,GAAG,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,GAAG,KAAK,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,GAAG,UAAU,GAAG,QAAQ,IAAI,QAAQ,EAAE,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,WAAW,IAAI,aAAa,IAAI,WAAW,GAAG,QAAQ,GAAG,aAAa,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,IAAI,aAAa,GAAG,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,IAAI,aAAa,GAAG,YAAY,GAAG,SAAS,EAAE,aAAa,GAAG,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,IAAI,cAAc,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,IAAI,OAAO,IAAI,OAAO,GAAG,OAAO,GAAG,QAAQ,IAAI,UAAU,IAAI,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,gBAAgB,GAAG,WAAW,GAAG,SAAS,sCAA0C,MAAM,6CAA4C,GAAG,MAAM,GAAG,KAAK,mBAAmB,QAAQ,KAAK,IAAM,OAAM,EAAE,MAAM,IAAI,GAAG,QAAO,EAAE,MAAO,GAAK,QAAO,YAAW,QAAM,UAAS,0BAA0B,QAAQ,KAAK,oBAAoB,kCAAkC,mBAAuB,EAAE,GAAG,uBAAuB,MAAM,eAAe,QAAQ,gBAAgB,oBAAoB,kCAAkC,EAAE,sBAAsB,GAAG,GAAG,YAAY,uBAAuB,GAAE,OAAM,gBAAgB,EAAK,QAAO,GAAE,MAAO,GAAG,QAAQ,QAAQ,OAAO,oBAAoB,MAAM,EAAE,QAAO,GAAG,KAAK,EAAE,MAAO,KAAI,gBAAgB,KAAK,+CAA+C,IAAI,OAAO,uBAA0B,uBAAuB,oCAAoC,GAAG,uBAAuB,KAAK,uFAAuF,GAAG,CAAC,YAAY,KAAK,oDAAoD,oBAAoB,YAAY,IAAI,GAAG,EAAE,YAAY,QAAQ,SAAS,aAAa,QAAQ,OAAO,YAAY,QAAQ,eAAe,SAAS,QAAQ,eAAe,OAAO,QAAQ,eAAe,QAAQ,QAAQ,QAAQ,GAAG,QAAQ,OAAO,QAAQ,OAAU,sCAAsC,GAAG,uBAAuB,KAAK,yFAAyF,GAAG,CAAC,YAAY,KAAK,sDAAsD,YAAY,QAAQ,SAAS,aAAa,QAAQ,OAAO,YAAY,CAAC,IAAM,WAAW,uCAAuC,GAAG,uBAAuB,KAAK,0FAA0F,GAAG,CAAC,YAAY,KAAK,uDAAuD,oBAAoB,YAAY,IAAI,GAAG,EAAE,YAAY,QAAQ,SAAS,aAAa,GAAG,SAAS,WAAW,QAAQ,OAAO,QAAQ,mBAAmB,SAAS,YAAY,CAAC,eAAe,EAAE,eAAe,CAAC,YAAY,EAAE,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,WAAW,uBAAuB,QAAQ,gBAAgB,CAAC,sBAAsB,GAAG,4CAA4C,QAAQ,kBAAkB,oBAAoB,WAAiC,wBAAF,IAAY,EAAE,EAAE,gBAAgB,EAAE,EAAG,QAAQ,uBAAuB,QAAQ,gBAAgB,MAAM,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,QAAQ,gBAAgB,EAAE,GAAG,EAAE,oBAAoB,QAAQ,gBAAgB,IAAI,GAAG,QAAQ,gBAAgB,YAAY,QAAQ,gBAAgB,IAAI,oBAAoB,SAAS,GAAG,QAA4B,kBAAN,QAAgB,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,UAAU,EAAE,GAAG,EAAE,QAAQ,MAAM,oBAAoB,QAAQ,gBAAgB,KAAK,EAAE,WAAW,QAAQ,MAAM,oBAAoB,QAAQ,gBAAgB,IAAI,EAAE,QAAQ,iBAAiB,QAAQ,MAAM,oBAAoB,QAAQ,gBAAgB,IAAI,EAAE,KAAK,WAAW,aAAa,SAAS,GAAG,aAAa,KAAK,gBAAgB,aAAa,gBAAgB,WAAW,GAAG,QAAQ,eAAe,MAAM,KAAM,QAAQ,aAAa,OAAO,GAAG,QAAQ,aAAa,QAAQ,QAAQ,aAAa,KAAQ,wBAAwB,kBAAiB,4BAA4B,WAAW,mBAAmB,OAAO,gBAAmB,IAAI,SAAQ,MAAM,oBAAoB,GAAG,GAAG,EAAE,UAAU,QAAQ,MAAM,oBAAoB,GAAG,GAAG,EAAE,GAAG,QAAQ,MAAM,oBAAoB,GAAG,IAAI,EAAE,GAAG,QAAQ,MAAM,oBAAoB,GAAG,IAAI,EAAE,GAAG,QAAQ,kBAAkB,uBAAuB,GAAG,EAAE,YAAY,uBAAuB,EAAE,EAAE,GAAG,iBAAiB,EAAK,wBAAwB,YAAY,CAAC,IAAM,WAAY,aAAa,WAAW,QAAQ,kBAAkB,QAAQ,MAAM,oBAAoB,iBAAiB,GAAG,EAAE,IAAI,QAAQ,MAAM,oBAAoB,iBAAiB,GAAG,EAAE,GAAG,uBAAuB,iBAAiB,EAAE,YAAY,iBAAiB,aAAa,EAAE,uBAAuB,EAAE,EAAE,GAAG,YAAY,CAAC,IAAM,gBAAgB,oBAAoB,WAAW,YAAa,SAAQ,UAAU,YAAY,QAAQ,SAAS,GAAM,SAAS,QAAQ,QAAQ,QAAQ,mBAAmB,QAAQ,QAAS,QAAQ,SAAS,GAAG,UAAU,EAAE,EAAE,QAAQ,cAAc,OAAO,EAAE,GAAG,WAAW,QAAQ,cAAc,GAAG,OAAO,YAAY,QAAQ,cAAc,GAAG,UAAU,EAAE,EAAE,QAAQ,eAAe,OAAO,EAAE,GAAG,WAAW,QAAQ,eAAe,WAAe,OAAO,QAAQ,QAAQ,eAAe,SAAS,OAAO,YAAY,QAAQ,eAAe,IAAI,eAAe,kBAAkB,GAAG,CAAC,QAAQ,OAAO,GAAG,QAAQ,kBAAkB,cAAc,oBAAoB,QAAQ,iBAAiB,KAAK,GAAG,oBAAoB,QAAQ,iBAAiB,KAAK,GAAG,EAAE,MAAM,WAAW,MAAM,QAAQ,kBAAkB,QAAQ,iBAAiB,EAAK,QAAQ,mBAAmB,QAAQ,WAAU,MAAM,QAAQ,WAAW,QAAQ,UAAU,EAAK,QAAQ,QAAO,SAAQ,OAAO,QAAQ,OAAM,mBAAmB,iBAAiB,MAAO,SAAQ,SAAS,OAAO,QAAQ,QAAQ,QAAQ,cAAc,KAAK,QAAQ,QAAQ,eAAe,OAAO,QAAQ,eAAe,QAAQ,QAAQ,GAAG,QAAQ,eAAe,OAAO,SAAS,OAAO,QAAQ,QAAW,sBAAsB,iBAAiB,uBAAuB,mCAAmC,OAAO,UAAU,YAAY,MAAM,EAAE,SAAgB,EAAE,IAAqG,GAA3F,OAAO,SAAQ,SAAQ,oCAAoC,OAAO,QAAQ,kBAAoB,EAAE,cAAiB,EAAE,cAAiB,iBAAiB,WAAW,QAAQ,SAAS,EAAE,cAAiB,OAAQ,OAAO,OAAO,YAAY,EAAE,KAAK,EAAE,cAAsB,QAAQ,MAAM,0CAA0C,IAAI,uBAAuB,EAAE,aAAgB,uCAAuC,QAAQ,oCAAoC,OAAU,OAAO,GAAG,MAAM,8BAA+B,uDAAuD,MAAM,cAAe,eAAe,EAAE,cAAc,MAAM,gBAAiB,iBAAiB,EAAE,gBAAmB,MAAM,aAAc,cAAc,EAAE,gBAAmB,MAAM,eAAgB,gBAAgB,EAAE,gBAAmB,MAAM,SAAU,OAAO,OAAO,GAAQ,mBAAkB,kBAAkB,QAAW,OAAO,YAAY,QAAO,aAAa,MAAO,QAAO,oBAAoB,MAAM,QAAS,IAAI,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,MAAM,WAAY,IAAI,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,MAAM,QAAS,MAAM,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,MAAM,QAAQ,aAAa,OAAO,SAAS,QAAQ,KAAK,oBAAoB,OAAO,QAAQ,OAAO,IAAI,GAAM,UAAU,QAAQ,mBAAmB,YAAiB,OAAM,aAAc,QAAQ,mBAAmB,QAAgB,MAAM,iBAAkB,QAAQ,sBAAsB,EAAE,MAAc,EAAE,KAAK,SAAS,eAAgB,OAAO,YAAY,EAAE,MAAW,IAAI,kCAAkC,KAAK,QAAQ,oCAAoC,QAAW,OAAO,QAAQ,YAAY,IAAI,0BAA0B,EAAE,SAAS,IAAI,EAAE,OAAO,KAAK,EAAE,UAAa,qBAAqB,QAAO,GAAG,UAAU,eAAe,OAAO,UAAU,CAAC,SAAc,OAAO,GAAG,QAAQ,eAAe,OAAO,QAAQ,QAAQ,OAAO,GAAG,OAAO,eAAe,QAAQ,IAAI,qDAAoD,OAAO,YAAY,CAAC,IAAM,OAAO,UAAY,OAAO,qBAAwB,YAAW,WAAwB,WAAwB,aAA4B,kBAAmC,qBAAqB,WAAW,kBAAkB,WAAW,6CAA6C,QAAQ,cAAc,KAAK,GAAI,QAAO,iBAAiB,aAAa,WAAuI,MAAzH,SAAQ,cAAc,QAAQ,GAAG,SAAQ,uBAAuB,QAAQ,uBAAuB,QAAQ,cAAc,KAAO,QAAQ,cAAc,OAAO,EAAS,QAAQ,cAAc,MAAkB,MAAM,aAAa,gBAA8C,UAAxB,YAAY,MAAM,MAAY,YAAY,MAAM,GAAE,IAAK,gDAAgD,WAAW,SAAS,SAAS,UAAU,SAAS,aAAa,UAAU,OAAO,oBAAuB,oBAAoB,4BAA4B,MAAO,eAAc,OAAO,iBAAoB,iBAAiB,uDAAsD,MAAM,qBAAqB,aAAa,WAAW,SAAS,CAAC,SAAS,aAAa,UAAU,mBAAmB,KAAK,MAAK,aAAa,OAAM,qBAAqB,iCAAiC,eAAe,MAAM,KAAK,MAAM,wBAA2B,oBAAqB,oBAAoB,WAAW,MAAM,QAAQ,SAAY,MAAO,GAAE,GAAG,IAAI,EAAE,GAAG,KAAa,uBAAwB,oBAAoB,WAAW,MAAO,aAAY,MAAM,OAAO,+BAA0C,MAAO,UAAU,YAAa,oBAAoB,QAAa,oBAAoB,WAAW,MAAO,aAAY,OAAO,yBAAyB,MAAA,qBAAoB,qBAAqB,GAAG,MAAa,MAAM,4BAA2B,GAAG,uBAAuB,MAAO,qCAAoC,EAAE,EAAE,MAAK,KAAK,WAAW,QAAQ,CAAC,KAAK,MAAK,MAAU,uEAAuE,GAAG,gBAAgB,aAAc,YAAY,CAAC,IAAM,wCAAwC,uBAAwB,YAAY,CAAC,aAAe,eAAe,IAAM,4BAA4B,YAAY,QAAQ,SAAS,uBAA2B,SAAS,QAAQ,OAAO,GAAG,CAAC,OAAQ,OAAO,OAAO,YAAY,CAAC,IAAM,uBAAuB,MAAO,GAAE,kBAAkB,QAAQ,qFAAqF,eAAe,eAAe,EAAE,UAAU,UAAU,EAAE,kDAAkD,GAAG,MAAM,GAAG,KAAK,mBAAmB,QAAQ,KAAK,GAAK,MAAM,IAAI,GAAG,uBAAuB,QAAQ,QAAQ,KAAK,oBAAoB,MAAM,EAAE,IAAI,SAAS,GAAG,MAAM,YAAY,MAAM,IAAI,GAAG,MAAM,YAAY,MAAM,GAAG,GAAG,MAAM,KAAK,MAAO,GAAE,KAAK,6CAA6C,SAAS,cAAc,QAAQ,KAAK,oBAAoB,MAAM,GAAG,GAAG,KAAK,UAAU,MAAM,GAAG,SAAS,YAAY,WAAe,KAAK,QAAQ,QAAQ,MAAM,oBAAoB,kCAAkC,EAAE,MAA8B,uBAAL,KAAW,MAAM,iBAAuC,GAAvB,KAAK,YAAY,MAAS,KAAK,KAAM,MAAM,IAAI,+CAA+C,KAAK,QAAQ,KAAK,oBAAoB,kCAAkC,GAAG,MAAO,IAAG,8CAA8C,MAAO,kCAAiC,EAAE,8CAA8C,MAAO,kCAAiC,EAAE,8CAA8C,mBAAmB,WAAW,KAAK,IAAI,IAAI,KAAK,yCAAyC,MAAO,WAAU,oBAAuB,yDAAmK,oBAA1F,UAAU,OAAO,SAAY,iBAAqB,WAAW,YAAY,KAAS,MAAM,IAAY,EAAE,EAAE,YAAY,IAAK,oBAAoB,EAAE,GAAG,UAAU,EAAE,GAAG,QAAQ,0CAA0C,MAAM,YAAY,KAAK,MAAM,MAAA,cAAa,QAAc,IAAI,mDAAmD,GAAG,sCAA0C,iBAAiB,OAAO,kBAAiB,MAAM,IAAG,SAAS,iBAAiB,MAAM,KAAK,OAAO,EAAS,WAAM,GAAG,mBAAmB,WAAc,KAAK,KAAK,KAAK,IAAK,KAAI,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,oBAAoB,KAAK,IAAI,KAAK,GAAO,KAAI,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,oBAAoB,KAAK,IAAI,KAAK,GAAG,MAAO,MAAK,uEAAuE,+CAA+C,OAAO,YAA0B,UAAR,MAAM,IAAY,EAAE,EAAE,YAAY,IAAK,+CAA+C,GAAG,oBAAoB,EAAE,GAAG,iBAAiB,MAAM,QAAY,aAAyC,WAAW,CAAC,MAAM,GAA9C,qBAAqB,OAA4B,GAAG,cAAc,WAAW,+CAA+C,aAAiB,+CAA+C,aAAiB,iBAAiB,OAAO,WAAW,MAAO,OAAK,MAAM,KAAK,WAAW,MAAO,OAAK,MAAM,KAAK,gDAAgD,qCAAqC,MAAO,oBAAmB,OAAO,yCAAyC,IAAI,MAAA,YAAW,KAAK,KAAK,QAAO,WAAW,QAAQ,IAAI,2BAA2B,WAAW,QAAe,aAAa,gDAAgD,cAAc,gBAAgB,EAAE,YAAY,4BAA4B,GAAG,eAAe,QAAS,MAAO,GAAM,kBAAkB,kBAAsB,WAAW,GAAG,cAAc,YAAa,MAAO,GAA+B,oBAAT,iBAAyB,EAAE,SAAS,EAAE,SAAS,GAAG,sBAAsB,QAAS,GAAE,GAAG,SAAS,kBAAkB,KAAK,IAAI,kBAAkB,cAAc,WAAW,YAAY,KAAK,IAAI,YAAY,QAAQ,KAAK,IAAI,YAAY,cAAc,mBAAmB,4BAAgC,0BAA0B,SAAS,GAAG,YAAa,MAAO,GAAM,MAAO,GAAM,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,WAAW,EAAE,0BAA0B,KAAK,gBAAgB,KAAK,gBAAgB,KAAK,+BAA+B,GAAM,wBAAwB,WAAW,UAAU,SAAS,cAAc,OAAO,EAAE,GAAG,EAAE,EAAE,EAAG,SAAS,eAAe,GAAG,SAAS,cAAc,GAAG,SAAS,cAAc,IAAI,6BAA6B,WAAe,SAAS,gCAAgC,YAAW,KAAK,SAAS,yBAAyB,SAAS,+BAA+B,KAAO,cAAc,GAAG,UAAU,6CAA6C,2CAA2C,GAAG,KAAK,QAAQ,KAAK,OAAO,MAAO,GAAM,aAAa,MAAM,GAAG,KAAK,KAAI,KAAK,IAAG,MAAO,GAAM,MAAO,GAAK,YAAa,UAAS,eAAe,SAAS,SAAS,cAAc,GAAG,GAAG,KAAK,gBAAgB,gBAAgB,uBAAuB,KAAK,SAAS,UAAW,OAAQ,SAAS,cAAc,KAAK,CAAC,eAA8B,WAAsB,WAAoB,SAAS,cAAc,KAAK,cAAc,MAAO,GAAE,WAAW,EAAE,cAAc,oBAAoB,yBAAyB,UAAU,EAAE,EAAE,SAAS,cAAc,OAAO,EAAE,EAAM,SAAS,cAAc,GAAG,gBAAgB,gBAAgB,UAAS,cAAc,OAAO,EAAE,GAAG,EAAE,IAAK,+BAA+B,WAAW,MAAO,UAAS,gBAAgB,SAAS,oBAAoB,qBAAqB,iBAAiB,WAAW,GAAG,CAAC,SAAS,iCAAkC,OAAO,UAAU,EAAE,EAAE,SAAS,cAAc,OAAO,EAAE,GAAG,SAAS,SAAS,cAAc,GAAG,SAAS,cAAc,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,eAAe,MAAM,KAAK,KAAK,YAAY,eAAe,EAAE,oBAAoB,KAAK,cAAc,GAAG,0BAA0B,iCAAiC,UAAU,EAAE,EAAE,SAAS,cAAc,OAAO,EAAE,EAAM,SAAS,cAAc,GAAG,QAAQ,QAAS,EAAC,iBAAiB,iBAAiB,SAAS,cAAc,GAAG,kBAAkB,SAAS,eAAe,MAAQ,eAAe,YAAY,MAAM,SAAS,cAAc,GAAG,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,SAAS,cAAc,OAAO,EAAE,IAAI,wBAAwB,uBAAuB,mBAAmB,gBAA+B,EAAE,SAAS,eAAe,SAAS,oBAAoB,aAAa,SAAS,mBAAmB,aAAa,YAAY,OAAO,SAAS,mBAAmB,EAAE,SAAS,gBAAgB,GAAG,aAAa,aAAc,aAAa,kBAAkB,eAAe,aAAa,OAAO,iBAAiB,aAAa,gBAAgB,eAAe,aAAa,YAAY,SAAS,cAAc,KAAK,cAAc,SAAS,mCAAoC,WAAU,EAAE,EAAE,SAAS,cAAc,OAAO,EAAE,EAAM,SAAS,cAAc,GAAG,QAAQ,aAAa,QAAQ,SAAS,cAAc,GAAG,iBAAiB,aAAa,iBAAiB,SAAS,eAAe,MAAS,+BAA+B,uEAAuE,aAAa,oBAAwB,WAAW,IAAI,oBAAoB,SAAS,GAAG,YAAY,oBAAoB,QAAQ,GAAG,GAAG,UAAU,oBAAoB,QAAQ,GAAG,GAAG,SAAS,mCAAmC,aAAa,UAAU,iBAAiB,UAAU,SAAS,aAAa,WAAW,gCAAgC,uBAAuB,OAAO,kBAAmB,GAAE,MAAO,OAAO,GAAE,MAAO,SAAQ,4CAA4C,MAAO,gBAAe,qBAAqB,iBAAiB,MAAI,QAAmB,QAAQ,OAAa,UAAa,QAAQ,OAAa,UAAiB,QAAQ,OAAO,SAAS,OAAO,SAAS,GAAtH,IAA0H,kBAAkB,WAAW,MAAO,UAAS,mBAAmB,SAAS,0BAA0B,mCAAmC,WAAW,gBAAgB,UAAU,UAAc,QAAQ,QAAQ,MAAA,cAAa,SAAS,QAAQ,QAAe,QAAQ,0GAA0G,aAAa,oBAAwB,WAAW,oBAAwB,EAAK,cAAc,iBAAgB,gBAAgB,eAAc,oBAAoB,SAAS,GAAG,gBAAgB,oBAAoB,QAAQ,GAAG,GAAG,MAAM,oBAAoB,QAAQ,GAAG,GAAG,OAAO,mCAAmC,aAAa,UAAU,EAAE,gBAAgB,SAAS,aAAa,UAAU,uGAAuG,aAAa,aAAa,aAAa,cAAc,GAAG,yDAAyD,aAAa,aAAa,MAAM,QAAQ,2CAA2C,MAAO,SAAQ,EAAE,aAAa,SAAS,QAAQ,uBAAuB,CAAC,EAAE,MAAO,WAAW,YAAY,SAAS,EAAE,MAAO,SAAS,YAAY,OAAO,GAAG,mCAAmC,OAAO,yBAAyB,QAAQ,eAAe,mBAAmB,SAAU,OAAO,WAAW,YAAY,SAAS,cAAc,QAAQ,QAAW,MAAO,YAAW,yCAAyC,MAAO,mBAAkB,QAAQ,iFAAiF,WAAW,wBAAwB,QAAQ,GAAG,CAAC,OAAO,MAAM,GAA2I,GAArI,OAAO,iBAAiB,qBAAoB,OAAO,iBAAiB,GAAG,MAAM,oBAAoB,OAAO,gBAAgB,GAAG,GAAG,QAAU,OAAO,iBAAiB,CAAC,OAAO,6BAAgC,OAAO,iBAAgB,QAAO,OAAO,iBAAgB,uBAAuB,GAAM,GAAG,OAAO,aAAa,OAAO,YAAY,OAAO,iBAAiB,OAAO,YAAY,MAAM,aAAa,MAAM,mBAAmB,aAAa,KAAK,GAAG,aAAa,KAAK,GAAG,aAAa,KAAK,OAAO,OAAO,aAAa,KAAK,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAU,oBAAoB,OAAO,YAAY,MAAM,SAAS,EAAE,EAAE,MAAM,gBAAiB,OAAO,iBAAiB,iBAAiB,oBAAoB,OAAO,gBAAgB,GAAG,GAAG,MAAA,uDAAsD,aAAa,OAAO,MAAM,QAAe,MAAO,OAAM,GAAG,MAAO,GAAE,8EAA8E,MAAG,wBAA8B,oCAAoC,EAAE,EAAE,OAAO,MAAM,QAAe,mDAAmD,OAAO,MAAM,QAAQ,kEAAkE,WAAW,wBAAwB,QAAQ,MAAG,QAAe,mDAAmD,OAAO,MAAM,QAAoB,gDAAgD,OAAO,MAAM,QAAS,0DAA0D,UAAU,UAAU,EAAE,oDAAoD,SAAS,SAAS,EAAE,KAAK,KAAK,EAAE,oDAAoD,QAAQ,IAAI,aAAa,0BAA0B,GAAG,IAAK,MAAA,KAAI,oBAAuB,wBAAwB,IAAI,yBAA4B,MAAM,UAAU,IAAI,oBAAuB,sCAAqC,IAAI,yBAA4B,KAAK,MAAM,OAAM,YAAY,IAAI,sBAAyB,6CAA4C,IAAI,2BAA8B,KAAK,OAAM,KAAK,QAAQ,YAAmB,EAAG,qDAAqD,QAAQ,IAAI,aAAa,2BAA2B,GAAG,IAAK,MAAA,KAAI,kBAAqB,WAAW,MAAO,KAAI,wBAA2B,IAAI,kBAAqB,cAAc,IAAI,qBAAwB,MAAM,IAAI,gBAAmB,cAAc,IAAI,mBAAsB,MAAM,IAAI,cAAiB,cAAc,MAAO,KAAI,iBAAoB,MAAa,EAAG,gDAAgD,QAAQ,IAAI,aAAa,sBAAsB,GAAG,IAAK,MAAA,KAAI,YAAe,iBAAiB,IAAI,iBAAoB,EAAE,OAAc,EAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,eAAe,KAAK,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,EAAE,KAAK,WAA8E,4BAA3C,GAAI,cAAa,GAAG,yBAAiC,EAAE,EAAE,GAAG,sBAAsB,IAAK,GAAG,yBAAyB,GAAG,oBAAoB,SAAS,EAAE,EAAE,GAAkE,0BAAzC,GAAI,YAAW,GAAG,yBAAiC,EAAE,EAAE,GAAG,sBAAsB,IAAK,GAAG,uBAAuB,GAAG,kBAAkB,SAAS,EAAE,EAAE,IAAK,YAAY,oBAAoC,GAAG,WAAW,IAAG,UAAU,YAAY,SAAS,gBAAqC,YAAb,GAAG,YAAoB,MAAM,OAAO,EAAE,IAAI,IAAK,MAAM,GAAG,KAAK,MAAO,MAAK,sBAAsB,IAAI,yBAAyB,CAAC,GAAG,uBAAuB,CAAC,GAAG,UAAU,sCAAmD,eAAH,KAAa,EAAE,EAAE,OAAM,EAAE,GAAG,QAAQ,OAAO,oBAAoB,OAAO,EAAE,GAAG,GAAG,GAAG,QAAQ,aAAa,oBAAoB,OAAO,EAAE,GAAG,GAAG,IAAI,EAAE,OAAU,KAAK,MAAO,SAAQ,cAAc,wCAAwC,QAAQ,OAAO,WAAW,QAAQ,wBAAwB,GAAG,CAAC,IAAI,MAAO,GAAE,WAAW,GAAG,gBAAgB,IAAI,wBAAwB,MAAO,SAAQ,gBAAgB,qCAAqC,WAAW,QAAQ,GAAG,oBAAoB,OAAO,GAAG,GAAG,gBAAgB,YAAY,CAAC,OAAc,WAAW,uBAAuB,QAAQ,uBAAuB,aAAa,MAAM,KAAK,MAAG,KAAI,QAAO,KAAI,OAAO,YAAY,SAAQ,GAAG,SAAS,QAAQ,QAAW,OAAO,wBAAuB,2BAA4B,aAAa,uBAAuB,4BAA2B,GAAG,eAAe,SAAgB,QAAQ,mBAAmB,wBAAwB,MAAA,IAAG,eAAe,GAAG,SAAS,eAAe,OAAO,IAAI,MAAM,GAAG,gBAAgB,GAAG,eAAe,MAAY,CAAE,gBAAe,CAAC,QAAQ,WAAW,wBAAwB,MAAO,IAAG,SAAS,gBAAgB,cAAc,wBAA2B,GAAG,iBAAiB,GAAG,SAAS,gBAAe,IAAG,eAAe,MAAQ,MAAO,WAAW,UAAS,SAAS,0BAA0B,GAAG,SAAS,eAAe,MAAM,QAAW,GAAG,SAAS,gBAAgB,GAAG,SAAS,eAAe,MAAM,QAAO,IAAG,SAAS,eAAe,MAAM,OAAO,YAAY,QAAU,MAAM,GAAG,SAAS,eAAe,QAAQ,GAAG,SAAS,eAAe,MAAM,eAAe,kBAAwD,GAAlC,SAAQ,SAAQ,GAAG,gBAAkB,QAAQ,mBAAmB,OAAO,QAAQ,mBAAmB,GAAK,WAAU,QAAQ,MAAM,sCAAsC,QAAO,uCAAuC,QAAO,kCAAkC,QAAO,OAAM,sBAAsB,OAAM,aAAa,4BAA4B,mCAAmC,CAAC,oBAAoB,yBAAyB,2BAA2B,0BAA0B,gCAAgC,sBAAsB,yBAAyB,iCAAiC,iBAAiB,qBAAqB,yBAAyB,2BAA2B,gCAAgC,mBAAmB,yBAAyB,qBAAqB,iCAAiC,8BAA8B,2BAA2B,WAAW,gCAAgC,2BAA2B,+BAA+B,gCAAgC,yBAAyB,qCAAqC,kCAAkC,8CAAkD,OAAM,0BAA0B,GAAG,KAAK,QAAQ,cAAiB,+BAA+B,QAAQ,MAAM,IAAI,OAAM,aAAa,QAAS,qBAAqB,kBAAmP,WAA3N,GAAG,SAAS,gBAAoB,GAAG,aAAa,SAAS,CAAC,SAAS,GAAG,iBAAiB,EAAE,mBAAmB,GAAG,0BAA0B,WAAe,OAAO,qBAAyB,MAAM,oBAAoB,GAAE,SAAiB,EAAE,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,iBAAiB,GAAE,QAAY,EAAE,KAAK,OAAO,iBAAiB,KAAK,IAAI,OAAO,iBAAiB,KAAK,OAAO,GAAM,KAAK,MAAM,KAAK,KAAK,MAAK,KAAK,MAAM,EAAE,KAAK,YAAY,OAAM,QAAQ,MAAM,mBAAmB,GAAE,MAAM,GAAG,KAAK,OAAO,GAAG,SAAS,GAAG,UAAU,OAAO,MAAM,CAAC,EAAE,KAAK,IAAI,GAAG,SAAS,IAAI,IAAI,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,IAAI,EAAE,IAAI,IAAI,MAAM,mBAAmB,GAAE,GAAG,GAAG,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,IAAI,8CAAkD,CAAC,UAAU,YAAY,oBAAoB,gEAAgE,sBAAsB,KAAS,YAAY,EAAE,kBAAkB,MAAS,CAAC,CAAC,oBAAoB,EAAG,IAAG,IAAI,kBAAkB,MAAS,CAAC,CAAC,oBAAoB,EAAG,IAAG,IAAI,kBAAkB,QAAW,CAAC,CAAC,oBAAoB,EAAG,IAAG,IAAI,kBAAkB,UAAa,CAAC,CAAC,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,mBAAsB,CAAC,CAAC,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,sBAAyB,CAAC,CAAC,oBAAoB,EAAG,KAAI,IAAI,oBAAoB,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,gBAAmB,qCAAqC,iBAAiB,kBAAkB,6BAAgC,CAAC,CAAC,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,aAAa,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,aAAa,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,0BAA0B,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,oBAAoB,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,yBAAyB,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,6BAA6B,oBAAoB,EAAG,KAAI,IAAI,WAAW,wBAAwB,QAAQ,GAAG,CAAC,OAAQ,MAAM,GAAG,GAAG,kBAAkB,oBAAqB,MAAM,GAAG,kBAAkB,GAAG,cAAc,OAAO,mBAAmB,MAAO,eAAc,kDAAiD,MAAO,qCAAoC,GAAG,KAAI,SAAS,CAAC,UAAU,mBAAmB,gBAAgB,gEAAgE,MAAO,aAAY,KAAK,UAAU,MAAM,IAAI,eAAe,+BAAwC,WAAF,IAAY,MAAM,OAAO,EAAE,GAAG,EAAE,KAAK,SAAS,MAAM,GAAM,OAAO,IAAK,MAAM,OAAO,EAAE,GAAW,OAAO,KAAM,OAAM,OAAO,EAAE,GAAG,MAAa,IAAI,OAAM,OAAO,EAAE,GAAG,MAAM,GAAG,eAAgB,KAAK,GAAG,KAAM,MAAM,QAAQ,MAAO,MAAO,QAAO,UAAU,eAAe,eAAe,KAAK,OAAO,KAAK,kBAAkB,KAAK,OAAO,MAAM,IAAI,MAAA,MAAK,KAAK,eAAe,KAAK,MAAM,KAAK,OAAO,aAAY,MAAM,CAAC,CAAC,KAAI,CAAC,YAAY,KAAK,KAAQ,CAAC,MAAM,CAAC,YAAY,MAAK,KAAO,MAAM,eAAe,OAAM,KAAW,YAAW,IAAI,IAAI,MAAM,QAAQ,eAAe,WAAW,KAAK,UAAU,WAAW,OAAO,OAAO,OAAO,GAAG,MAAG,CAAC,MAAM,CAAC,IAAW,IAAO,MAAK,KAAI,IAAI,OAAO,EAAE,IAAI,OAAO,IAAU,KAAK,MAAK,SAAS,eAAe,GAAG,OAAO,IAAI,MAAM,IAAI,cAAc,KAAK,YAAY,KAAK,MAAG,aAAY,GAAU,KAAY,KAAK,OAAO,UAAU,IAAI,QAAQ,eAAe,MAAO,MAAK,UAAU,MAAM,IAAI,KAAK,WAAW,UAAU,MAAM,UAAU,MAAM,KAAK,UAAU,GAAG,MAAO,MAAK,UAAU,MAAM,KAAK,OAAO,MAAM,cAAc,MAAO,MAAK,UAAU,EAAE,IAAI,cAAkB,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,UAAU,sBAAsB,aAAW,SAAS,QAAQ,QAAW,OAAO,GAAG,OAAO,GAAK,WAAS,EAAE,IAAI,KAAK,kBAAkB,SAAO,IAAI,SAAO,OAAO,GAAO,SAAO,KAAK,OAAQ,QAAQ,OAAU,IAAI,WAAW,SAAS,SAAS,EAAE,QAAQ,oBAAoB,SAAS,QAAQ,GAAG,GAAG,MAAO,MAAK,OAAO,cAAc,QAAQ,aAAa,KAAK,MAAO,MAAK,MAAM,mBAAmB,MAAO,OAAM,uBAAuB,MAAG,wBAA8B,oCAAoC,EAAE,EAAE,IAAW,EAAE,8DAA8D,GAAG,uBAAuB,MAAO,qCAAoC,EAAE,EAAE,GAAG,WAAW,YAAY,OAAO,WAAW,uCAAuC,GAAG,uBAAuB,MAAO,qCAAoC,EAAE,EAAE,GAAG,IAAI,OAAO,MAAgB,YAAF,IAAY,EAAE,EAAE,OAAO,KAAyF,YAA5E,oBAAoB,IAAI,EAAE,GAAG,OAAW,oBAAoB,IAAK,GAAE,EAAE,IAAI,KAAa,EAAE,EAAE,IAAI,IAAK,SAAS,UAAU,GAAG,mBAAmB,IAAI,IAAI,KAAK,IAAI,MAAA,qBAAoB,MAAM,GAAG,IAAW,EAAE,wCAAuC,YAAY,QAAQ,aAAa,MAAS,UAAQ,UAAU,4CAA+C,QAAQ,eAAe,MAAM,SAAQ,aAAa,IAAG,QAAQ,aAAa,KAAK,WAAW,WAAW,QAAQ,OAAO,sCAAsC,GAAG,uBAAuB,KAAK,wFAAwF,WAAW,QAAQ,eAAe,GAAG,OAAO,UAAU,OAAU,KAAK,kBAAkB,GAAG,CAAC,aAAa,YAAY,KAAK,kCAAkC,QAAQ,eAAe,KAAK,QAAqC,kBAAf,QAAQ,IAAI,KAAa,EAAE,EAAE,IAAI,EAAE,EAAG,oBAAoB,UAAU,EAAE,GAAG,GAAG,EAAE,cAAc,aAAa,UAAU,aAAa,kBAAsB,QAAQ,SAAS,aAAa,aAAa,CAAC,OAAc,UAAU,aAAa,UAAU,UAAU,aAAa,UAAU,kBAAkB,aAAa,kBAAkB,OAAO,aAAa,YAAY,iBAAiB,aAAa,iBAAqB,QAAQ,kBAAkB,EAAE,QAAQ,MAAM,oBAAoB,IAAK,IAAG,GAAG,GAAG,QAAQ,MAAM,oBAAoB,IAAK,IAAG,GAAG,GAAG,QAAQ,MAAM,oBAAoB,IAAK,IAAG,GAAG,GAAG,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,aAAa,UAAU,QAAQ,MAAM,oBAAoB,IAAK,MAAK,GAAG,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,GAAG,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,QAAQ,kBAAkB,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,IAAI,QAAQ,MAAM,oBAAoB,IAAK,MAAK,GAAG,aAAa,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,aAAa,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,GAAG,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,IAAI,GAAG,aAAa,UAAU,QAAQ,MAAM,oBAAoB,IAAK,KAAI,IAAI,GAAG,aAAa,aAAa,QAAQ,MAAM,oBAAoB,IAAK,KAAI,IAAI,GAAG,aAAa,WAAW,gBAAgB,4CAAgD,YAAY,GAAG,QAAQ,MAAM,oBAAoB,IAAK,MAAK,GAAG,eAAe,OAAO,QAAQ,QAAQ,QAAQ,CAAC,IAAM,MAAM,cAAgB,aAAa,aAAa,IAAM,aAAa,IAAI,iBAAmB,aAAa,YAAY,aAAe,aAAa,YAAY,eAAiB,aAAa,mBAAmB,UAAY,aAAa,UAAU,UAAY,aAAa,WAAW,OAAO,WAAW,WAAW,IAAI,KAAK,YAAY,MAAM,OAAO,YAAY,IAAI,aAAa,eAAkB,OAAO,QAAQ,QAAO,aAAa,MAAO,QAAO,YAAY,0DAA0D,GAAG,CAAC,QAAQ,CAAC,WAAW,MAAO,aAAY,OAAO,GAAG,CAAC,OAAQ,MAAA,KAAI,4DAAmE,YAAY,MAAM,UAAS,oBAAoB,OAAO,IAAI,GAAG,GAAG,QAAO,OAAQ,MAAA,KAAI,6CAA6C,OAAO,wEAA+E,YAAY,MAAM,gBAAgB,QAAQ,KAAK,oBAAoB,OAAO,IAAI,IAAI,aAAiB,QAAQ,KAAK,oBAAoB,OAAO,IAAI,IAAI,GAAG,MAAG,SAAO,qBAAoB,QAAQ,GAAG,aAAe,YAAW,qBAAoB,YAAY,GAAG,WAAiB,EAAE,yBAAyB,MAAO,eAAc,EAAE,OAAO,cAAiB,cAAc,6DAA6D,GAAG,MAAO,oBAAoB,YAAa,MAAA,KAAI,uFAA8F,EAAE,GAAG,CAAC,YAAa,MAAA,KAAI,qDAA4D,GAAG,iBAAiB,SAAa,EAAE,GAAG,wBAAyB,cAAa,SAAS,GAAG,OAAQ,MAAO,uCAAsC,UAAU,YAAY,KAAK,cAAc,KAAK,GAAG,MAAM,MAAO,OAAM,cAAc,YAAgB,WAAe,cAAkB,YAAgB,EAAE,GAAG,MAAM,UAAU,oBAAoB,MAAM,GAAG,WAAW,MAAM,UAAU,oBAAoB,KAAK,GAAG,GAAG,SAAS,oBAAoB,KAAK,IAAI,KAAK,EAAE,iBAAiB,oBAAoB,KAAK,IAAI,KAAK,EAAE,GAAG,cAAc,oBAAoB,oBAAoB,KAAK,IAAI,iBAAqB,oBAAoB,KAAK,IAAI,mBAAuB,QAAQ,oCAAoC,QAAQ,oCAAoC,gBAAgB,uBAAuB,gBAAgB,KAAK,GAAG,KAAK,IAAI,YAAY,oBAAoB,KAAK,IAAI,GAAG,UAAU,oBAAoB,KAAK,IAAI,GAAG,oBAAoB,KAAK,IAAI,GAAG,gBAAgB,oBAAoB,KAAK,IAAI,GAAG,kBAAmB,aAAY,oBAAoB,KAAK,IAAI,GAAG,UAAU,oBAAoB,KAAK,IAAI,OAAS,WAAU,QAAQ,sBAAsB,WAAW,EAAK,kBAAmB,UAAU,UAAU,GAAG,WAAgB,YAAW,UAAU,QAAO,UAAU,IAAqC,0BAAb,QAAQ,OAAe,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,oBAAqB,oBAAkB,GAAG,GAAG,EAAE,oBAAoB,aAAa,GAAG,kBAAiB,oBAAoB,kBAAiB,IAAI,GAAG,kBAAiB,YAAY,kBAAiB,IAAI,oBAAoB,SAAS,GAAG,QAAQ,iBAAiB,CAAC,UAAoB,UAAoB,kBAAoC,YAAwB,UAAoB,SAAkB,aAAa,cAAc,YAAY,kBAAiB,mBAAmB,gBAAgB,IAAQ,cAA2B,MAAG,wBAAwB,cAAa,IAAI,cAAc,YAAY,aAAa,eAAmB,eAAe,cAAqB,EAAE,oBAAoB,MAAA,GAAE,CAAC,EAAS,GAAG,EAAG,CAAC,WAAW,EAAG,IAAK,CAAC,UAAU,EAAE,IAAK,wBAAwB,GAAG,uBAAuB,MAAO,qCAAoC,EAAE,EAAE,MAAM,OAAO,UAAW,IAAG,MAAO,WAAW,IAAG,gBAAgB,WAAW,MAAO,aAAY,UAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,SAAS,SAAS,OAAO,QAAQ,QAAQ,SAAS,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,IAAG,MAAO,YAAY,QAAQ,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,QAAQ,SAAS,IAAG,MAAM,OAAQ,SAAS,SAAS,OAAO,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,QAAQ,IAAG,MAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,GAAE,MAAO,UAAU,QAAQ,QAAQ,IAAG,MAAO,QAAQ,QAAQ,QAAQ,IAAG,MAAO,gBAAgB,QAAQ,GAAE,MAAO,WAAW,QAAQ,IAAG,MAAO,QAAQ,QAAQ,IAAG,MAAO,UAAU,GAAE,MAAO,aAAa,GAAE,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,GAAE,MAAO,SAAS,KAAI,MAAO,QAAQ,IAAG,MAAO,QAAQ,GAAE,MAAO,QAAQ,GAAE,MAAO,OAAO,IAAG,MAAO,OAAO,IAAI,MAAG,OAAO,YAAY,UAAgB,UAAU,qBAAwB,EAAY,MAAA,UAAS,IAAU,GAAO,uBAA0D,QAAQ,aAA3C,QAAQ,sBAAgD,UAAU,GAAG,OAAO,yBAAyB,CAAC,KAAK,QAAQ,gDAAgD,UAAU,SAAS,UAAU,wBAA4B,CAAC,EAAI,eAAe,EAAI,aAAa,EAAI,iCAAiC,EAAI,OAAO,EAAI,kDAAkD,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,oBAAoB,EAAI,mCAAmC,EAAI,mCAAmC,EAAI,uBAAuB,EAAI,8BAA8B,EAAI,sCAAsC,EAAI,wBAAwB,EAAI,oCAAoC,EAAI,sCAAsC,EAAI,4BAA4B,EAAI,iCAAiC,EAAI,UAAU,EAAI,SAAS,EAAI,UAAU,EAAI,eAAe,OAAS,YAAY,OAAO,WAAc,EAAI,qBAAqB,EAAI,sBAAsB,EAAI,gBAAgB,EAAI,cAAc,EAAI,QAAQ,EAAI,SAAS,MAAQ,eAAmB,aAAa,OAAO,IAAO,IAAI,uBAAuB,OAAO,mBAAsB,WAAW,MAAO,oBAAmB,OAAO,mBAAsB,OAAO,IAAO,GAAM,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,GAAM,MAAM,KAAK,6BAAiC,OAAO,iBAAoB,WAAW,MAAO,kBAAiB,OAAO,iBAAoB,OAAO,IAAO,GAAM,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,GAAM,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,GAAM,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,GAAM,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,GAAM,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,GAAM,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,GAAM,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,GAAM,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,GAAM,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,GAAM,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,GAAM,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,GAAM,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,GAAM,MAAM,KAAK,2BAA+B,OAAO,eAAkB,WAAW,MAAO,gBAAe,OAAO,eAAkB,OAAO,IAAO,GAAM,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,GAAM,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,GAAM,MAAM,KAAK,mCAAuC,OAAO,uBAA0B,WAAW,MAAO,wBAAuB,OAAO,uBAA0B,OAAO,IAAO,GAAM,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,GAAM,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,GAAM,MAAM,KAAK,2BAA+B,OAAO,eAAkB,WAAW,MAAO,gBAAe,OAAO,eAAkB,OAAO,IAAO,GAAM,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,GAAM,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,GAAM,MAAM,KAAK,4BAAgC,OAAO,gBAAmB,WAAW,MAAO,iBAAgB,OAAO,gBAAmB,OAAO,IAAO,GAAM,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,GAAM,MAAM,KAAK,kCAAsC,OAAO,sBAAyB,WAAW,MAAO,uBAAsB,OAAO,sBAAyB,OAAO,IAAO,IAAO,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,wBAA4B,OAAO,YAAe,WAAW,MAAO,aAAY,OAAO,YAAe,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,IAAO,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,IAAO,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,IAAO,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,IAAO,MAAM,KAAK,4BAAgC,OAAO,gBAAmB,WAAW,MAAO,iBAAgB,OAAO,gBAAmB,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,8BAAkC,OAAO,kBAAqB,WAAW,MAAO,mBAAkB,OAAO,kBAAqB,OAAO,IAAO,IAAO,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,IAAO,MAAM,KAAK,+BAAmC,OAAO,mBAAsB,WAAW,MAAO,oBAAmB,OAAO,mBAAsB,OAAO,IAAO,IAAO,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,IAAO,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,8BAAkC,OAAO,kBAAqB,WAAW,MAAO,mBAAkB,OAAO,kBAAqB,OAAO,IAAO,IAAO,MAAM,KAAK,wCAA4C,OAAO,4BAA+B,WAAW,MAAO,6BAA4B,OAAO,4BAA+B,OAAO,IAAO,IAAO,MAAM,KAAK,qCAAyC,OAAO,yBAA4B,WAAW,MAAO,0BAAyB,OAAO,yBAA4B,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,qCAAyC,OAAO,yBAA4B,WAAW,MAAO,0BAAyB,OAAO,yBAA4B,OAAO,IAAO,IAAO,MAAM,KAAK,yDAA6D,OAAO,6CAAgD,WAAW,MAAO,8CAA6C,OAAO,6CAAgD,OAAO,IAAO,IAAO,MAAM,KAAK,4DAAgE,OAAO,gDAAmD,WAAW,MAAO,iDAAgD,OAAO,gDAAmD,OAAO,IAAO,IAAO,MAAM,KAAK,wDAA4D,OAAO,4CAA+C,WAAW,MAAO,6CAA4C,OAAO,4CAA+C,OAAO,IAAO,IAAO,MAAM,KAAK,+CAAmD,OAAO,mCAAsC,WAAW,MAAO,oCAAmC,OAAO,mCAAsC,OAAO,IAAO,IAAO,MAAM,KAAK,iDAAqD,OAAO,qCAAwC,WAAW,MAAO,sCAAqC,OAAO,qCAAwC,OAAO,IAAO,IAAO,MAAM,KAAK,gDAAoD,OAAO,oCAAuC,WAAW,MAAO,qCAAoC,OAAO,oCAAuC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,gEAAoE,OAAO,oDAAuD,WAAW,MAAO,qDAAoD,OAAO,oDAAuD,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,sDAA0D,OAAO,0CAA6C,WAAW,MAAO,2CAA0C,OAAO,0CAA6C,OAAO,IAAO,IAAO,MAAM,KAAK,+CAAmD,OAAO,mCAAsC,WAAW,MAAO,oCAAmC,OAAO,mCAAsC,OAAO,IAAO,IAAO,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,YAAY,OAAO,IAAO,IAAI,OAAO,MAAS,MAAM,OAAO,QAAW,QAAQ,OAAO,QAAW,QAAQ,OAAO,cAAiB,cAAc,OAAO,WAAc,WAAW,OAAO,WAAc,WAAW,cAAc,OAAO,KAAQ,gBAAe,GAAG,UAAW,MAAK,aAAa,QAAQ,OAAO,qBAAwB,OAAO,qBAAwB,WAAc,KAAI,MAAM,MAAK,SAAS,MAAO,SAAQ,4BAA4B,KAAK,KAAK,aAAa,KAAK,QAAQ,gCAAgC,OAAO,IAAI,KAAK,OAAO,OAAO,sBAAsB,qBAAyB,WAAU,MAAU,WAAU,uBAAsB,YAAW,mBAAyC,GAAtB,KAAK,MAAM,WAAc,gBAAgB,EAAG,OAAgB,GAAT,SAAY,gBAAgB,EAAE,OAAO,iBAAiB,GAAG,UAAU,OAA+C,GAAxC,UAAU,GAAK,OAAO,UAAa,GAAQ,MAAM,OAAO,cAAc,UAAa,OAAO,sBAAwB,OAAO,uBAA0B,UAAa,OAAO,UAAc,QAAO,UAAa,cAAc,WAAW,WAAW,WAAW,WAAW,OAAO,UAAa,KAAK,GAAG,SAAS,IAAQ,QAA2B,GAAlB,OAAO,IAAO,IAAO,OAAO,QAA0F,IAA3E,MAAO,QAAO,SAAY,YAAW,QAAO,QAAW,CAAC,OAAO,UAAkB,OAAO,QAAW,OAAO,GAAG,OAAO,QAAW,QAAS,MAAI,yBAAuB,eAAc,IAAS,wBAAuB,MAG56uE,mCAIL,MAAO,WAAY,UAAY,MAAO,SAAW,SAC/C,OAAO,QAAU,8BACV,MAAO,SAAW,YAAc,OAAO,IAC9C,OAAO,GAAI,WAAa,MAAO,iCACxB,MAAO,WAAY,UAC1B,UAAQ,8BAAmC,2DCpBjD,YAAA,oBACA,sBAAyB,WACvB,eAAiB,MAAO,WAAa,aAAe,SAAS,cAAgB,SAAS,cAAc,IAAM,OAC1G,MAAI,OAAO,aAAe,aAAa,YAAa,YAAc,YAEpE,6BACE,mBAAoB,oBAAqB,GAE3C,WAAW,MAAO,qBAAoB,YAAY,mBAAkB,mBAAuB,OAAW,IAAI,MAAO,QAAW,OAAO,eAAe,MAAM,iBAAgB,KAAK,OAAO,MAAM,eAAe,eAAmB,uBAA2B,yBAAyB,KAAM,6BAAgC,yBAAgC,uBAA8B,wBAA+B,GAAM,mBAAmB,MAAO,SAAS,SAAS,sBAAsB,MAAO,gBAAgB,WAAW,oBAAoB,MAAO,UAAU,UAAU,MAAO,SAAQ,UAAW,UAAU,MAAO,SAAQ,SAAS,MAAO,SAAS,qBAAqB,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,sBAAsB,oBAAoB,GAAG,0BAA0B,MAAG,QAAO,WAAsB,OAAO,WAAc,KAAK,iBAAwB,gBAAgB,KAAK,8DAAyE,oBAAwB,uBAAuB,gBAAwB,eAAQ,QAAQ,iBAAiB,IAAS,gBAAgB,UAAU,IAAI,MAAM,0BAAqC,MAAI,SAAO,QAAe,eAAU,UAAS,UAAiB,gBAAQ,SAAS,SAAS,UAAa,UAAiB,OAAO,aAAgB,SAAS,OAAO,KAAK,SAAS,WAAW,mBAA8B,QAAQ,MAAM,SAAS,IAAM,MAAI,KAAI,QAAQ,KAAI,GAAI,YAAW,MAAK,QAAO,IAAI,QAAe,KAAQ,QAAQ,KAAQ,OAAO,GAAG,aAAY,QAAQ,KAAQ,GAAG,QAAQ,MAAM,MAAK,WAAW,QAAQ,KAAQ,MAAM,GAAG,QAAQ,GAAM,oBAAoB,aAAa,GAAG,CAAE,cAAc,aAAa,KAAM,MAAM,QAAQ,GAAM,qBAAqB,OAAO,MAAM,iBAAiB,QAAQ,KAAQ,SAAS,OAAO,QAAW,WAAW,MAAM,+BAAsC,qBAAyB,OAAO,OAAM,aAAa,OAAM,YAAuB,MAAO,MAAK,KAAI,WAAW,YAAuB,SAAS,MAAG,OAAO,aAAa,WAAmB,GAAI,YAAW,WAAW,IAAI,MAAK,KAAK,EAAE,UAAU,QAAO,MAAO,OAAO,UAAiB,OAAS,MAAO,aAAY,YAAa,WAAW,WAAmB,MAAO,YAAW,aAAa,YAAW,WAAa,MAAO,OAAO,YAAY,OAAM,iBAAiB,KAAK,UAAY,MAAO,QAAQ,aAAgB,OAAO,UAAU,aAAY,SAAQ,IAAG,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAAQ,MAAM,MAAO,WAAW,YAAY,SAAS,QAAe,qBAAoB,wBAA0B,uBAAuB,gBAAgB,KAAK,SAAS,KAAa,SAAS,eAAe,iBAAgB,SAAS,cAAc,KAAO,YAAY,iBAAgB,YAAc,gBAAgB,QAAQ,WAAW,EAAG,gBAAgB,gBAAgB,OAAO,EAAE,gBAAgB,YAAY,KAAK,GAAQ,gBAAgB,GAAI,MAAM,cAAyB,QAAQ,GAAI,gBAAe,MAAA,KAAI,KAAK,MAAM,IAAI,IAAO,IAAI,KAAK,MAAa,IAAI,cAAiB,uBAAuB,YAAW,cAAyB,QAAQ,GAAI,gBAAe,MAAA,KAAI,KAAK,MAAM,IAAI,IAAO,IAAI,aAAa,cAAc,IAAI,KAAK,MAAa,GAAI,YAAW,IAAI,YAAW,UAAU,6BAAuC,QAAQ,GAAI,gBAAe,IAAI,KAAK,MAAM,IAAI,IAAM,IAAI,aAAa,cAAc,IAAI,OAAO,WAAsB,GAAG,IAAI,QAAQ,KAAK,IAAI,QAAQ,GAAG,IAAI,UAAU,OAAO,IAAI,UAAU,OAAO,WAAW,IAAI,QAAQ,QAAQ,IAAI,KAAK,OAAO,eAAe,gBAAgB,SAAS,MAAM,QAAa,QAAQ,OAAO,OAAU,QAAQ,IAAI,KAAK,aAAiB,OAAO,UAAa,QAAQ,KAAK,KAAK,SAAS,IAAI,MAAO,iBAAoB,gBAAgB,eAAe,MAAM,QAAO,KAAK,gBAAgB,MAAM,gBAAgB,KAAQ,OAAO,WAAa,YAAW,OAAO,WAAgB,OAAO,aAAe,aAAY,OAAO,aAAkB,OAAO,MAAQ,OAAM,OAAO,MAAQ,eAAkB,OAAO,YAAc,YAAW,OAAO,YAAc,kBAAqB,OAAO,eAAiB,eAAc,OAAO,eAAoB,MAAO,cAAc,UAAU,IAAI,mCAAmC,yBAA6B,GAAI,aAAY,MAAM,CAAC,QAAU,IAAI,QAAU,IAAI,EAAE,QAAU,kBAAsB,cAAqB,EAAE,iCAAoC,WAAW,MAAM,qBAAqB,MAAO,yBAAyB,UAAS,OAAO,IAAI,OAAO,MAAA,SAAO,MAAK,gCAAgC,MAAM,8BAAqC,MAAK,oDAAoD,QAAQ,CAAC,OAAS,cAAc,SAAQ,EAAE,GAAG,KAAM,MAAuB,MAAM,GAAG,QAAS,KAAI,QAAQ,GAAG,EAAE,KAAI,WAAW,KAAK,aAAa,IAAI,KAAI,KAAK,MAAO,OAAK,MAAQ,cAAc,SAAQ,WAAW,IAAI,QAAQ,MAAA,oBAAmB,IAAI,MAAY,OAAM,kCAAiC,MAAG,cAAa,SAAgB,aAAa,MAAQ,aAAa,UAAiB,QAAQ,MAAY,KAAI,UAAS,SAAS,aAAiB,UAAa,EAAE,GAAG,KAAM,UAAU,EAAE,EAAE,KAAK,OAAO,KAAK,cAAc,IAAI,SAAS,IAAO,UAAc,UAAQ,GAAE,QAAM,aAAY,MAAM,GAAG,UAAU,KAAK,KAAS,MAAM,GAAG,KAAK,GAAK,QAAQ,MAAK,MAAM,KAAK,OAAO,MAAA,KAAI,mBAAmB,KAAQ,SAAQ,GAAE,aAAa,QAAc,IAAI,+CAA+C,SAAS,UAAU,GAAG,gBAAgB,SAAS,MAAM,eAAe,MAAO,QAAO,sBAA0B,aAAa,SAAS,MAAG,aAAY,aAAa,CAAC,KAAa,SAAS,OAAc,WAAW,MAAO,OAAM,MAAM,WAAW,SAAS,UAAU,OAAO,gBAAgB,MAAO,cAAc,YAAY,GAAI,aAAY,QAAQ,OAAU,oDAAiG,eAAlC,IAAI,sBAA0B,IAAU,KAAK,SAAS,CAAE,SAAQ,SAAQ,EAAE,OAAO,GAAG,OAAO,IAAI,IAAI,KAAK,UAAU,YAAa,MAAO,aAAY,OAAO,KAAK,SAAS,IAAI,SAAyB,YAAH,GAAS,IAAI,SAAQ,OAAO,KAAK,OAAO,GAAG,CAAE,IAAG,MAAM,KAAK,OAAO,aAAa,IAAI,SAAS,OAAO,KAAK,OAAO,GAAG,GAAI,IAAG,MAAM,KAAK,KAAK,OAAO,aAAc,IAAG,KAAK,EAAE,IAAI,SAAS,OAAO,KAAK,OAAO,GAA4F,GAArF,IAAG,MAAM,IAAK,GAAI,IAAG,KAAK,GAAG,IAAI,EAAE,GAAQ,GAAI,IAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,OAAO,GAAM,GAAG,MAAO,KAAK,OAAO,aAAa,SAAS,OAAO,GAAG,MAAM,KAAK,OAAO,aAAa,MAAM,IAAI,GAAG,MAAM,GAAG,OAAQ,MAAO,KAAI,0CAA0C,MAAO,KAAI,kBAAkB,OAAO,IAAI,gBAAgB,GAAG,4DAA4D,GAAG,CAAE,iBAAgB,GAAG,MAAO,GAA0D,iBAA3C,cAAkB,OAAO,gBAAgB,IAAY,EAAE,EAAE,IAAI,OAAO,EAAE,GAAG,MAAM,IAAI,WAAW,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,OAAO,IAAI,WAAW,EAAE,GAAG,EAAE,MAAQ,IAAE,OAAO,IAAI,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,QAAQ,OAAO,MAAM,KAAK,UAAU,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,EAAE,KAAK,UAAU,IAAI,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,EAAE,GAAG,KAAK,UAAU,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,EAAE,GAAG,KAAK,UAAU,IAAI,EAAE,IAAI,MAAA,MAAK,QAAQ,EAAS,OAAO,SAAS,kDAAkD,MAAO,mBAAkB,IAAI,OAAO,OAAO,iBAAiB,6CAA0C,MAAM,IAAI,OAAM,UAAQ,uEAAsE,yCAAyC,QAAO,IAAI,OAAO,MAAS,MAAM,GAAI,WAAU,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,QAAW,QAAQ,GAAI,aAAY,KAAK,OAAO,QAAW,QAAQ,GAAI,aAAY,KAAK,OAAO,QAAW,QAAQ,GAAI,cAAa,KAAK,OAAO,QAAW,QAAQ,GAAI,cAAa,KAAK,2BAA2B,OAAO,gBAAmB,SAAS,0CAAyC,KAAM,WAAU,OAAO,IAAG,aAAa,WAAU,QAAQ,GAAG,MAAO,WAAU,YAAY,SAAS,QAAQ,SAAS,UAAS,SAAS,KAAQ,MAAO,QAAO,SAAa,SAAS,MAAM,OAAW,OAAO,UAAa,OAAW,OAAO,WAAc,MAAK,SAAS,KAAW,MAAK,SAAS,MAAM,OAAU,KAAK,SAAS,MAAO,iBAAiB,cAAkB,cAAkB,iBAAqB,sBAA0B,iBAAwB,GAAM,kBAAkB,GAAG,OAAO,OAAsF,IAAxE,MAAO,QAAO,QAAW,YAAW,QAAO,OAAU,CAAC,OAAO,SAAiB,OAAO,OAAU,QAAQ,YAAY,OAAO,OAAU,SAAU,qBAAqB,cAAc,uBAAuB,mBAAmB,GAAK,qBAAqB,YAAY,mBAAmB,qBAAqB,YAAY,uBAAuB,cAAc,GAAK,mBAAmB,GAAG,OAAO,QAA0F,IAA3E,MAAO,QAAO,SAAY,YAAW,QAAO,QAAW,CAAC,OAAO,UAAkB,OAAO,QAAW,QAAQ,aAAa,OAAO,QAAW,SAAU,qBAAqB,eAAe,yBAAyB,aAAa,QAAQ,IAAI,0BAA0B,cAAc,QAAQ,IAAI,cAAc,KAAK,gBAAoB,KAAK,sBAA0B,uBAA2B,2BAA+B,KAAK,8BAA8B,kBAAqB,OAAO,wBAA2B,OAAO,uBAA0B,iBAAkB,iCAA0I,GAAzG,kBAAqB,OAAO,wBAA2B,OAAO,uBAA0B,iBAAoB,iBAAiB,GAAM,wBAAuB,MAAM,eAAc,sBAAsB,qBAAqB,MAAQ,wBAAuB,aAAa,sBAAsB,sBAAsB,KAAK,YAAa,OAAO,gBAAmB,GAAG,OAAO,gBAAmB,GAAG,qBAAqB,KAAG,QAAO,SAAY,OAAO,QAAW,MAAM,MAAM,GAAG,IAAI,MAAM,IAAI,MAAM,MAAM,GAAK,WAAW,EAAE,KAAK,SAAS,KAAK,+CAAqD,GAAI,aAAY,aAAa,MAAM,+BAA+B,MAAO,QAAO,UAAU,WAAW,IAAI,WAAW,QAAQ,IAAI,QAAQ,UAAU,EAAE,kBAAkB,wCAAwC,6BAA6B,MAAO,WAAU,SAAS,eAAe,kBAAkB,UAAU,6BAA6B,MAAO,WAAU,SAAS,eAAe,mBAAmB,yBAA6B,UAAU,iBAAiB,gBAAe,WAAW,iBAAgB,qBAAqB,IAAI,GAAG,WAAY,MAAO,IAAI,YAAW,YAAY,GAAG,WAAY,MAAO,YAAW,gBAAqB,KAAK,8DAA8D,MAAM,OAAM,4BAA4B,MAAG,CAAC,YAAa,qBAAoB,wBAAwB,MAAO,QAAQ,YAAY,CAAC,UAAU,gBAAwB,MAAM,eAAe,CAAC,YAAY,gBAAgB,KAAK,mBAAmB,GAAG,CAAC,SAAS,GAAO,KAAK,uCAAuC,eAAe,IAAI,MAAO,UAAS,gBAAmB,MAAM,WAAW,MAAO,eAAqB,GAAI,SAAQ,yBAAyB,QAAQ,eAAe,sBAAsB,SAAS,CAAC,IAAM,cAAc,uBAAyB,eAAe,2CAA0C,aAAY,SAAS,QAAQ,OAAO,IAAO,SAAQ,WAAW,SAAQ,OAAU,2BAA2B,WAAW,QAAQ,oBAAoB,oBAAoB,iBAAiB,oBAAoB,2CAA2C,gBAAgB,OAAO,UAAa,0CAA0C,MAAO,oBAAmB,KAAK,iBAAiB,MAAO,aAAY,YAAY,OAAO,QAAQ,KAAK,SAAS,iBAAiB,IAAI,0CAA0C,QAAQ,MAAM,UAAU,4BAA4B,GAAG,CAAC,YAAY,MAAO,aAAY,sBAAuB,YAAY,CAAC,UAAU,iBAAiB,CAAC,UAAU,iBAAiB,MAAO,QAAQ,WAAY,MAAM,eAAe,CAAC,YAAY,gBAAgB,KAAK,mBAAmB,WAAW,YAAY,qBAAqB,SAAS,MAAM,MAAO,QAAO,KAAK,0BAA0B,iBAAiB,IAAI,kCAAkC,QAAQ,IAAI,6CAA6C,uBAAuB,mCAAoC,OAAO,wBAAuB,2BAA4B,GAAG,OAAO,gBAAoB,IAAI,aAAY,OAAO,gBAAmB,KAAK,iBAAiB,MAAO,mBAAiB,MAAA,KAAI,sDAAsD,GAAU,GAAO,MAAA,oBAAyB,GAAG,WAAW,OAAO,uDAAuD,2BAA2B,WAAW,QAAQ,SAAS,CAAC,UAAU,mBAAmB,gBAAgB,gEAAgE,MAAO,aAAY,KAAK,UAAU,MAAM,IAAI,eAAe,+BAAwC,WAAF,IAAY,MAAM,OAAO,EAAE,GAAG,EAAE,KAAK,SAAS,MAAM,GAAM,OAAO,IAAK,MAAM,OAAO,EAAE,GAAW,OAAO,KAAM,OAAM,OAAO,EAAE,GAAG,MAAa,IAAI,OAAM,OAAO,EAAE,GAAG,MAAM,GAAG,eAAgB,KAAK,GAAG,KAAM,MAAM,QAAQ,MAAO,MAAO,QAAO,UAAU,eAAe,eAAe,KAAK,OAAO,KAAK,kBAAkB,KAAK,OAAO,MAAM,IAAI,MAAA,MAAK,KAAK,eAAe,KAAK,MAAM,KAAK,OAAO,aAAY,MAAM,CAAC,CAAC,KAAI,CAAC,YAAY,KAAK,KAAQ,CAAC,MAAM,CAAC,YAAY,MAAK,KAAO,MAAM,eAAe,OAAM,KAAW,YAAW,IAAI,IAAI,MAAM,QAAQ,eAAe,WAAW,KAAK,UAAU,WAAW,OAAO,OAAO,OAAO,GAAG,MAAG,CAAC,MAAM,CAAC,IAAW,IAAO,MAAK,KAAI,IAAI,OAAO,EAAE,IAAI,OAAO,IAAU,KAAK,MAAK,SAAS,eAAe,GAAG,OAAO,IAAI,MAAM,IAAI,cAAc,KAAK,YAAY,KAAK,MAAG,aAAY,GAAU,KAAY,KAAK,OAAO,UAAU,IAAI,QAAQ,eAAe,MAAO,MAAK,UAAU,MAAM,IAAI,KAAK,WAAW,UAAU,MAAM,UAAU,MAAM,KAAK,UAAU,GAAG,MAAO,MAAK,UAAU,MAAM,KAAK,OAAO,MAAM,cAAc,MAAO,MAAK,UAAU,EAAE,IAAI,cAAkB,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,UAAU,sBAAsB,aAAW,SAAS,QAAQ,QAAW,OAAO,GAAG,OAAO,GAAK,WAAS,EAAE,IAAI,KAAK,kBAAkB,SAAO,IAAI,SAAO,OAAO,GAAO,SAAO,KAAK,OAAQ,QAAQ,OAAU,IAAI,WAAW,SAAS,SAAS,EAAE,QAAQ,OAAO,SAAS,QAAQ,GAAG,GAAG,MAAO,MAAK,OAAO,cAAc,QAAQ,aAAa,KAAK,MAAO,MAAK,MAAM,mBAAmB,MAAO,OAAM,uBAAuB,MAAO,GAAE,+DAA+D,uCAAiD,YAAF,IAAY,EAAE,EAAE,OAAO,KAA+D,YAAlD,OAAO,IAAI,EAAE,GAAG,OAAW,OAAO,IAAK,GAAE,EAAE,IAAI,KAAa,EAAE,EAAE,IAAI,IAAK,SAAS,UAAU,GAAG,OAAO,IAAI,IAAI,KAAK,IAAI,MAAA,QAAO,MAAM,GAAG,IAAW,EAAE,uBAAuB,KAAK,QAAQ,0BAA0B,MAAM,MAAM,oBAAoB,MAAA,GAAE,CAAC,EAAS,GAAG,EAAG,CAAC,WAAW,EAAG,IAAK,CAAC,UAAU,EAAE,IAAK,kBAAkB,CAAC,gCAAkC,iCAAiC,SAAW,UAAU,QAAU,SAAS,SAAW,UAAU,UAAY,WAAW,OAAS,aAAiB,aAAa,OAAO,IAAO,IAAI,UAAU,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,6BAAiC,OAAO,iBAAoB,WAAW,MAAO,kBAAiB,OAAO,iBAAoB,OAAO,IAAO,iBAAoB,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,aAAgB,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,aAAgB,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,qBAAwB,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,2BAA+B,OAAO,eAAkB,WAAW,MAAO,gBAAe,OAAO,eAAkB,OAAO,IAAO,eAAkB,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,mCAAuC,OAAO,uBAA0B,WAAW,MAAO,wBAAuB,OAAO,uBAA0B,OAAO,IAAO,uBAA0B,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,2BAA+B,OAAO,eAAkB,WAAW,MAAO,gBAAe,OAAO,eAAkB,OAAO,IAAO,eAAkB,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,4BAAgC,OAAO,gBAAmB,WAAW,MAAO,iBAAgB,OAAO,gBAAmB,OAAO,IAAO,gBAAmB,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,aAAgB,MAAM,KAAK,kCAAsC,OAAO,sBAAyB,WAAW,MAAO,uBAAsB,OAAO,sBAAyB,OAAO,IAAO,sBAAyB,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,WAAc,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,WAAc,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,wBAA4B,OAAO,YAAe,WAAW,MAAO,aAAY,OAAO,YAAe,OAAO,IAAO,YAAe,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,qBAAwB,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,qBAAwB,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,qBAAwB,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,4BAAgC,OAAO,gBAAmB,WAAW,MAAO,iBAAgB,OAAO,gBAAmB,OAAO,IAAO,gBAAmB,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,8BAAkC,OAAO,kBAAqB,WAAW,MAAO,mBAAkB,OAAO,kBAAqB,OAAO,IAAO,kBAAqB,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,WAAc,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,+BAAmC,OAAO,mBAAsB,WAAW,MAAO,oBAAmB,OAAO,mBAAsB,OAAO,IAAO,mBAAsB,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,WAAc,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,WAAc,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,YAAe,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,cAAiB,MAAM,KAAK,YAAY,OAAO,IAAO,IAAI,OAAO,MAAS,MAAM,cAAc,OAAO,KAAQ,gBAAe,GAAG,UAAW,MAAK,aAAa,QAAQ,OAAO,qBAAwB,OAAO,qBAAwB,WAAc,KAAI,MAAM,MAAK,SAAS,MAAO,SAAQ,4BAA4B,KAAK,KAAK,aAAa,KAAK,QAAQ,gCAAgC,OAAO,IAAI,KAAK,OAAO,OAAO,eAAe,GAAM,sBAAsB,qBAAyB,WAAU,MAAU,WAAU,uBAAsB,YAAW,wBAAwB,kBAAkB,OAAO,QAAW,IAAI,gBAAgB,QAAQ,EAAE,KAAK,IAAI,aAAe,GAAG,YAAa,YAAY,OAAY,GAAG,GAAG,UAAU,cAAc,GAAK,YAAY,UAAU,EAAK,GAAG,MAAO,IAAI,UAAU,EAAE,OAAO,OAAM,CAAC,EAAE,EAAE,QAAO,IAAI,qBAAqB,OAAO,MAAM,EAAE,YAAY,WAAW,IAAM,mBAAyC,GAAtB,KAAK,MAAM,WAAc,gBAAgB,EAAG,OAAgB,GAAT,SAAY,gBAAgB,EAAE,OAAO,iBAAiB,GAAG,UAAU,OAA+C,GAAxC,UAAU,GAAK,OAAO,UAAa,GAAQ,MAAM,OAAO,cAAc,UAAa,OAAO,sBAAwB,OAAO,uBAA6B,cAAa,SAAS,MAAM,UAAa,OAAO,UAAc,QAAO,UAAa,cAAc,WAAW,WAAW,WAAW,WAAW,OAAO,UAAa,KAAK,GAAG,SAAS,IAAQ,QAAS,OAAO,IAAO,IAAI,+BAA+B,GAAG,UAAU,eAAe,SAAS,EAAG,OAAU,eAAqB,OAAM,GAAK,WAAW,OAAO,cAAiB,OAAO,QAAU,OAAO,OAAU,SAAQ,MAAM,OAAO,GAAI,YAAW,SAAS,GAAG,OAAO,QAA0F,IAA3E,MAAO,QAAO,SAAY,YAAW,QAAO,QAAW,CAAC,OAAO,UAAkB,OAAO,QAAW,OAAO,GAAG,OAAO,QAAW,QAAS,iBAAiB,GAAK,MAAG,QAAO,cAAgB,cAAa,IAAM,cAAc,GAAK,MAGh81B,uBAIL,MAAO,WAAY,UAAY,MAAO,SAAW,SAC/C,OAAO,QAAU,kBACV,MAAO,SAAW,YAAc,OAAO,IAC9C,OAAO,GAAI,WAAa,MAAO,qBACxB,MAAO,WAAY,UAC1B,UAAQ,kBAAuB,qCCEN,qBACA,iBAvB/B,MAiDE,gCAAoB,KAAA,QAAA,SAAgC,KAAA,UAAA,UAH5C,KAAA,KAAO,GAAI,SACX,KAAA,aAAe,EAIvB,YACE,MAAK,MAAK,KAAK,IAAI,SACjB,KAAK,UAAU,SAAS,KAAK,QAAS,QAEjC,KAAK,KAAK,IAAI,QAGvB,kBACE,KAAK,eACL,KAAK,KAAK,IAAI,OAAQ,OAGxB,YACE,MAAO,MAAK,KAAK,IAAI,QAGvB,eACE,MAAA,MAAK,eACE,KAAK,KAAK,OAAO,QAG1B,aACE,MAAO,MAAK,6BAzEhB,MAiGE,QACE,MAAO,mBAAkB,QAE3B,aACE,MAAO,mBAAkB,QAE3B,iBACE,MAAO,mBAAkB,YAE3B,aACE,MAAO,mBAAkB,cAE3B,oBACE,MAAO,mBAAkB,eAE3B,0BACE,MAAO,mBAAkB,SAE3B,gCAEE,MAAO,mBAAkB,QAE3B,SACE,MAAO,mBAAkB,UAG3B,iBACE,MAAO,mBAAkB,kBAG3B,UACE,MAAO,MAAK,mBAAqB,GAAK,gBAAkB,gBAG1D,uCAGE,MAAO,mBAAkB,eAG3B,kBACK,EAAG,EAAG,WAAY,WAAY,KAAM,uBAAY,yBAEnD,MAAO,mBAAkB,oBAG3B,oBACE,MAAO,mBAAkB,SAE3B,kCAEE,MAAO,mBAAkB,gBAE3B,gBACE,MAAO,mBAAkB,WAE3B,gBACE,MAAO,mBAAkB,WAG3B,qBACE,MAAO,mBAAkB,UAG3B,OACE,MAAO,mBAAkB,OAG3B,SACE,MAAO,mBAAkB,OAE3B,cACE,MAAO,mBAAkB,QAE3B,cACE,MAAO,mBAAkB,YAE3B,cACE,MAAO,mBAAkB,YAE3B,gBACE,MAAO,mBAAkB,cAE3B,cACE,MAAO,mBAAkB,YAG3B,YACE,MAAO,mBAAkB,OAE3B,aACE,MAAO,mBAAkB,QAG3B,6CAEE,MAAO,mBAAkB,sBAG3B,eACE,MAAO,mBAAkB,UAE3B,eACE,MAAO,mBAAkB,UAG3B,WACE,MAAO,mBAAkB,SAE3B,cACE,MAAO,mBAAkB,YAG3B,UACE,MAAO,mBAAkB,QAE3B,eACE,MAAO,mBAAkB,aAG3B,aACE,MAAO,mBAAkB,WAE3B,kBACE,MAAO,mBAAkB,gBAG3B,cACE,MAAO,mBAAkB,cAE3B,gBACE,MAAO,mBAAkB,cAE3B,eACE,MAAO,mBAAkB,aAG3B,iBACE,MAAO,mBAAkB,SAE3B,sBACE,MAAO,mBAAkB,UAG3B,iBACE,MAAO,mBAAkB,QAG3B,YACE,MAAO,mBAAkB,OAE3B,aACE,MAAO,mBAAkB,WAG3B,SACE,MAAO,mBAAkB,OAG3B,YACE,MAAO,mBAAkB,OAE3B,aACE,MAAO,mBAAkB,WAG3B,YACE,MAAO,mBAAkB,OAE3B,YACE,MAAO,mBAAkB,OAG3B,uBACE,MAAO,mBAAkB,qBAG3B,QACE,MAAO,mBAAkB,QAE3B,SACE,MAAO,mBAAkB,SAE3B,SACE,MAAO,mBAAkB,SAG3B,QACE,MAAO,mBAAkB,QAG3B,SACE,MAAO,mBAAkB,SAE3B,SACE,MAAO,mBAAkB,SAE3B,YACE,MAAO,mBAAkB,YAG3B,SACE,MAAO,mBAAkB,OAE3B,OACE,MAAO,mBAAkB,OAE3B,SACE,MAAO,mBAAkB,SAE3B,eACE,MAAO,mBAAkB,WAE3B,OACE,MAAO,mBAAkB,OAE3B,SACE,MAAO,mBAAkB,SAE3B,QACE,MAAO,mBAAkB,QAE3B,SACE,MAAO,mBAAkB,SAE3B,UACE,MAAO,mBAAkB,UAE3B,cACE,MAAO,mBAAkB,cAE3B,QACE,MAAO,mBAAkB,QAE3B,SACE,MAAO,mBAAkB,SAE3B,WACE,MAAO,mBAAkB,SAE3B,OACE,MAAO,mBAAkB,OAE3B,aACE,MAAO,mBAAkB,UAE3B,QACE,MAAO,mBAAkB,QAE3B,OACE,MAAO,mBAAkB,OAG3B,mBACE,MAAO,mBAAkB,QAG3B,OACE,MAAO,mBAAkB,OAE3B,cACE,MAAO,mBAAkB,cAG3B,WACE,MAAO,mBAAkB,WAG3B,YACE,MAAO,mBAAkB,YAG3B,OACE,MAAO,mBAAkB,OAE3B,OACE,MAAO,mBAAkB,OAE3B,OACE,MAAO,mBAAkB,OAG3B,QACE,MAAO,mBAAkB,QAE3B,QACE,MAAO,mBAAkB,QAE3B,QACE,MAAO,mBAAkB,QAE3B,WACE,MAAO,mBAAkB,SAG3B,QACE,MAAO,mBAAkB,QAE3B,QACE,MAAO,mBAAkB,QAE3B,QACE,MAAO,mBAAkB,QAG3B,SACE,MAAO,mBAAkB,SAE3B,SACE,MAAO,mBAAkB,SAE3B,SACE,MAAO,mBAAkB,SAG3B,OACE,MAAO,mBAAkB,OAG3B,cACE,MAAO,mBAAkB,QAG3B,aACK,aAAO,OAAQ,SAAU,KAAM,uBAAY,yBAE9C,MAAO,mBAAkB,eAG3B,0BACE,MAAO,mBAAkB,UAE3B,mCAEE,MAAO,mBAAkB,kBAE3B,+BACE,MAAO,mBAAkB,mBAG3B,sBACK,aAAO,OAAQ,SAAU,KAAM,uBAAY,yBAE9C,MAAO,mBAAkB,wBAG3B,wCAEE,MAAO,mBAAkB,mBAE3B,4CAEE,MAAO,mBAAkB,2BAE3B,wCAEE,MAAO,mBAAkB,4BAE3B,0BACE,MAAO,mBAAkB,UAE3B,mCAEE,MAAO,mBAAkB,kBAE3B,+BACE,MAAO,mBAAkB,mBAE3B,oBACE,MAAO,mBAAkB,WAE3B,iCAEE,MAAO,mBAAkB,mBAE3B,oBACE,MAAO,mBAAkB,WAE3B,+BACE,MAAO,mBAAkB,mBAE3B,sBACE,MAAO,mBAAkB,aAE3B,iCACE,MAAO,mBAAkB,qBAE3B,sBACE,MAAO,mBAAkB,aAE3B,mCAEE,MAAO,mBAAkB,qBAG3B,iBAEE,MAAO,mBAAkB,WAE3B,cACE,MAAO,mBAAkB,QAG3B,aACE,MAAO,mBAAkB,QAG3B,8BAEE,MAAO,mBAAkB,OAG3B,kBACE,MAAO,mBAAkB,aAG3B,gCAA0E,GAExE,MAAO,mBAAkB,UAG3B,oBACE,MAAO,mBAAkB,YAG3B,iCAEE,MAAO,mBAAkB,aAG3B,mCAEE,MAAO,mBAAkB,kBAG3B,sCAEE,MAAO,mBAAkB,kBAG3B,mEAGE,MAAO,mBAAkB,kBAG3B,0CAEE,MAAO,mBAAkB,0BAG3B,0EAGE,MAAO,mBAAkB,yBAG3B,iDAEE,MAAO,mBAAkB,iCAG3B,2DAIE,MAAO,mBAAkB,aAG3B,uDAGE,MAAO,mBAAkB,gCAG3B,0DAGE,MAAO,mBAAkB,WAG3B,+CAGE,MAAO,mBAAkB,eAG3B,uCAEE,MAAO,mBAAkB,UAG3B,mCAEE,MAAO,mBAAkB,UAG3B,0EAGE,MAAO,mBAAkB,qBAG3B,OACE,MAAO,mBAAkB,OAE3B,QACE,MAAO,mBAAkB,QAE3B,qBACE,MAAO,mBAAkB,WAE3B,aACE,MAAO,mBAAkB,QAE3B,aACE,MAAO,mBAAkB,QAG3B,wEAIE,MAAO,mBAAkB,iBAG3B,qCACE,MAAO,mBAAkB,gBAI3B,6BACE,MAAO,mBAAkB,SAG3B,mEAGE,MAAO,mBAAkB,iBAG3B,QACE,MAAO,mBAAkB,QAG3B,wBAEE,MAAO,mBAAkB,QAG3B,YACE,MAAO,mBAAkB,YAG3B,aACE,MAAO,mBAAkB,aAG3B,yBACE,MAAO,mBAAkB,YAG3B,UACE,MAAO,mBAAkB,aAI7B,uCACE,KAAM,IAAI,OACN,IAAI,sICznBJ,yBAEJ,YAAc,OAAM,YACT,QACC,EAEZ,KAAO,QAAU,GAEf,MAAS,KAAK,SAAW,QAAW,EAEpC,UAEA,KAAO,OAAM,SACb,OAAM,SAAW,OAAM,OACvB,OAAM,OAAS,KAKb,6BACJ,MAAO,MAAK,IAAI,KAAK,KAAK,IAAI,EAAG,QAG7B,gCACJ,MAAO,KAAM,IAAM,EAAI,IAAM,IAAM,EAG/B,kBACJ,UAAU,EACV,UAAa,EAAG,EAAI,IAAI,OAAQ,IAC9B,OAAO,IAAI,GAEb,MAAO,OAUH,0BACJ,MAAU,KAAK,SACf,MAAQ,GAAI,EAAM,GAAI,GAAK,EAIvB,0BACJ,WAAa,EACb,UAAa,EAAG,EAAI,EAAE,OAAQ,KAC5B,SAAa,OAAO,EAAE,IAAM,OAAO,EAAE,IACrC,QAAU,KAAO,KAEnB,MAAO,QAkBH,0BACJ,GAAI,CAAC,KACH,KAAM,IAAI,OAAM,MAAO,MAAQ,SAAW,IAAM,OAI9C,4DACuD,IAC3D,OACI,YAAY,OAAQ,QACpB,IAAM,mBAAqB,WAAW,cAAc,qBAGpD,0BACJ,OACI,GAAK,KACL,IAAM,iEAsBN,4BAEsC,kBAAqB,IAI/D,GAHI,QAAU,MACZ,QAAS,IAEP,MAAM,QAAQ,MAAQ,aAAa,MAAQ,CAAC,eAC9C,UAAa,EAAG,EAAI,IAAI,OAAQ,EAAE,EAChC,QAAQ,IAAI,GAAI,OAAQ,oBAG1B,QAAO,KAAK,KAEd,MAAO,QAcH,8BACJ,GAAI,MAAM,SAAW,EAEnB,MAAO,GAET,SAAW,MAAM,GACjB,UAAa,EAAG,EAAI,MAAM,OAAQ,IAChC,MAAQ,MAAM,GAEhB,MAAO,MAGH,8BACJ,MAAO,OAAM,SAAW,EAGpB,4BACJ,GAAI,KAAO,GACT,MAAO,GAET,GAAI,IAAM,MAAQ,IAAM,KACtB,MAAO,GAGT,GAAI,GAAG,SAAW,GAAG,OACnB,MAAO,GAET,UAAa,EAAG,EAAI,GAAG,OAAQ,IAC7B,GAAI,GAAG,KAAO,GAAG,GACf,MAAO,GAGX,MAAO,GAGH,kBACJ,MAAO,GAAI,IAAM,EAGb,iBAEJ,GAAK,KAAa,MAAQ,KAExB,MAAQ,MAAa,KAAK,GAE5B,GAAI,IAAM,SACR,MAAO,GACF,GAAI,IAAM,UACf,MAAO,GACF,CACL,QAAY,KAAK,IAAI,EAAI,GACzB,MAAQ,KAAM,GAAM,KAAM,IAIxB,mCACJ,UAAc,KAAK,KAAK,KAAK,KAAK,OAClC,MAAO,CAAC,MAAO,KAAK,KAAK,KAAO,QAe5B,kCACJ,oBAAwB,GAAI,aAAY,GACxC,UAAa,EAAG,EAAI,EAAG,EAAE,EACvB,gBAAgB,GAAK,EAEvB,MAAA,SAAQ,iBACD,gBAGH,0BACJ,MAAI,OAAQ,EAAE,OACL,EAEF,EAAI,IAAI,OAAO,KAAO,EAAE,QAG3B,qCACgC,SAAqB,cAEzD,MAAO,IAAI,SAAc,mBACvB,aAAe,QAED,KACZ,GAAI,WACF,UACA,OAGF,WAEA,gBAAoB,QAAQ,UAE5B,GAAI,YAAc,MAAQ,UAAY,YACpC,SACA,OAEF,WAAW,MAAO,cAGpB,UAaE,4CAEJ,cAAgB,cACE,GAElB,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,EAClC,GAAI,MAAM,IAAM,EACd,WAAa,MAAM,WACV,MAAM,KAAO,IACtB,GAAI,cAAgB,GAClB,KAAM,OACF,yDACmB,uBAAuB,KAEhD,YAAc,UACL,MAAM,GAAK,EACpB,KAAM,OAAM,gCAAgC,MAAM,aAAa,KAInE,GAAI,cAAgB,IAClB,GAAI,KAAO,GAAK,OAAS,UACvB,KAAM,OAAM,QAAQ,yCAAyC,SAE/D,MAAO,OAGT,GAAI,YAAc,EAChB,KAAM,OACF,qCAAqC,oCAG3C,GAAI,KAAO,YAAc,EACvB,KAAM,OACF,wDACO,UAAU,aAGvB,aAAiB,MAAM,QACvB,MAAA,UAAS,aAAe,KAAO,UACxB,SAGH,oCAEJ,SAAa,MAAM,OAGnB,MAAA,MAAO,MAAQ,KAAO,MAAM,IAAI,OAAU,GAAK,GAAG,OAAO,MAGzD,OACI,KAAK,MAAM,IAAM,IAAM,CAAC,MAAQ,GAAK,MACrC,IACI,+CAA+C,SAAS,sBAC5C,QAGpB,OACI,KAAK,MAAM,IAAM,MAAM,KACvB,IAAM,0DACU,QAGb,KAAK,IAAI,GAAK,EAAI,EAAI,KAAO,EAAI,GAIpC,kCAEJ,aAA2B,YACA,gBACN,MAAQ,MAAQ,MAAM,QAAQ,OAAS,KAAK,SAAW,OAC9D,MAAQ,MAAQ,aAC1B,KACA,eAAe,KAAM,OAAO,SACxB,EACR,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,GAClC,GAAI,MAAQ,MACV,GAAI,KAAK,KAAO,GAAK,MAAM,KAAO,EAChC,KAAM,IAAI,OACN,sBAAsB,oBAAoB,MAAM,gBAEjD,AAAA,MAAK,IAAM,MAAQ,KAAK,GAAK,IAAM,MAAM,KAAO,GACnD,UAAS,KAAK,MAAM,IACpB,SAAS,KAAK,IAEZ,KAAK,IAAM,GACb,IAGA,MAAM,KAAO,GACf,UAAS,KAAK,MAAM,IACpB,SAAS,KAAK,IAGlB,MAAO,CAAC,SAAU,UAGd,4CAEJ,WAAa,KACb,GAAI,OAAS,MAAQ,QAAU,UAC7B,OAAS,GAAI,cAAa,cACjB,QAAU,QACnB,OAAS,GAAI,YAAW,cACf,QAAU,OACnB,OAAS,GAAI,YAAW,UAExB,MAAM,IAAI,OAAM,qBAAqB,SAEvC,MAAO,QAGH,uCAEJ,WAAa,KACb,GAAI,OAAS,MAAQ,QAAU,UAC7B,OAAS,GAAI,cAAa,cACjB,QAAU,QACnB,OAAS,GAAI,YAAW,cACf,QAAU,OACnB,OAAS,GAAI,YAAW,cACf,QAAU,SACnB,OAAS,GAAI,OAAgB,UAE7B,MAAM,IAAI,OAAM,qBAAqB,SAEvC,MAAO,QAGH,8CAEJ,UAAa,EAAG,EAAI,KAAK,OAAQ,KAC/B,QAAY,KAAK,GACjB,GAAI,MAAM,MAAQ,CAAC,SAAS,KAC1B,KAAM,OAAM,oBAAoB,iCAAiC,SAMjE,6BACJ,MAAO,SAAU,QAAU,QAAU,aAAe,QAAU,WAC1D,QAAU,SAAW,QAAU,SAO/B,0CACJ,MAAI,WAAY,aAGZ,UAAY,WAAa,UAAY,aAGrC,UAAY,SAAW,UAAY,WAAa,UAAY,YALvD,GAQL,CAAA,WAAY,QAAU,UAAY,QAMlC,yBACJ,MAAO,aAAa,eAAgB,YAAa,aAC7C,YAAa,YAGb,gCACJ,GAAI,QAAU,WAAa,QAAU,QACnC,MAAO,GACF,GAAI,QAAU,YACnB,MAAO,GACF,GAAI,QAAU,OACnB,MAAO,GAEP,KAAM,IAAI,OAAM,iBAAiB,SAU/B,mCACJ,GAAI,KAAO,KACT,MAAO,GAET,UAAY,EACZ,MAAA,KAAI,QAAQ,GAAK,OAAS,EAAE,QACrB,MAIH,yBACJ,MAAO,OAAO,QAAU,UAAY,gBAAiB,QAGjD,0BACJ,MAAO,OAAO,QAAU,UAGpB,yBACJ,MAAO,OAAO,QAAU,SAGpB,4BACJ,MAAI,OAAM,QAAQ,QACT,WAAW,OAAO,IAEvB,iBAAkB,cACb,UACE,iBAAkB,aAAc,iBAAkB,YACpD,QACE,SAAS,QACX,UACE,SAAS,QACX,SACE,UAAU,QACZ,OAEF,UAGH,uBACJ,MAAO,CAAC,CAAE,IAAK,EAAE,aAAe,EAAE,MAAQ,EAAE,OAGxC,oCACJ,UAAa,MAAO,EAAI,KAAM,EAAE,EAC9B,GAAI,KAAO,IAAM,EACf,MAAO,GAGX,MAAO,MAGH,+BACJ,SAAa,MAAM,OACnB,GAAI,KAAO,EACT,MAAO,GAKT,YAAgB,GAAI,OAAM,KAAO,GACjC,QAAQ,KAAO,GAAK,MAAM,KAAO,GACjC,UAAa,KAAO,EAAG,GAAK,EAAG,EAAE,EAC/B,QAAQ,GAAK,QAAQ,EAAI,GAAK,MAAM,EAAI,GAE1C,MAAO,SAGT,2CACE,QAAY,GAAI,OAChB,GAAI,MAAM,SAAW,GACnB,MAAU,MAAM,GAChB,UAAa,EAAG,EAAI,EAAG,IACrB,IAAI,GAAK,EAAE,OAAS,QAGtB,MAAU,MAAM,QACH,MAAM,MAAM,OACb,KAAK,OAAO,SAAY,IAAM,GAC1C,UAAa,EAAG,EAAI,EAAG,IACrB,IAAI,GAAK,kBAAkB,OAAS,EAAI,IAAK,KAAM,GAGvD,MAAO,KAIH,gCACJ,GAAI,MAAM,SAAW,EAEnB,MAAO,GAAE,GAEX,SAAa,MAAM,OAAO,SAAY,IAAM,GAC5C,GAAI,OAAS,EAEX,MAAO,GAET,GAAI,OAAS,EAAE,OACb,KAAM,IAAI,OAAM,IAAI,wCAAwC,EAAE,WAGhE,MAAO,mBAAkB,EAAG,MAAO,GAG/B,wCAEJ,WAAc,oBAAoB,KAAM,OACxC,UAAa,EAAG,EAAI,OAAM,OAAQ,IAChC,OAAM,GAAK,EAEb,MAAO,QAGH,yCAEJ,GAAI,OAAS,MAAQ,QAAU,WAAa,QAAU,YACpD,MAAO,IAAI,cAAa,MACnB,GAAI,QAAU,QACnB,MAAO,IAAI,YAAW,MACjB,GAAI,QAAU,OACnB,MAAO,IAAI,YAAW,MAEtB,KAAM,IAAI,OAAM,qBAAqB,SASnC,gDAEJ,SAAa,MAAM,OAAO,aAAgB,KAAO,KAAM,GACvD,GAAI,OAAS,MAAQ,QAAU,UAC7B,MAAO,eAAc,MAAO,GAAI,cAAa,OACxC,GAAI,QAAU,QACnB,MAAO,eAAc,MAAO,GAAI,YAAW,OACtC,GAAI,QAAU,OACnB,MAAO,eAAc,MAAO,GAAI,YAAW,OAE3C,KAAM,IAAI,OAAM,qBAAqB,SAInC,mDACJ,MAAM,QAAQ,UACZ,OACI,OAAO,UAAU,UAAY,SAAW,EACxC,IACI,0EACU,aAYhB,uCAEJ,GAAI,OAAS,EACX,MAAO,GACF,GAAI,OAAS,EAClB,MAAO,MAAK,GAEd,UAAY,KAAK,KAAK,OAAS,GAC/B,UAAa,EAAG,EAAI,KAAK,OAAS,EAAG,EAAE,EACrC,OAAS,QAAQ,GAAK,KAAK,GAE7B,MAAO,OAWH,wCAEJ,GAAI,OAAS,EACX,MAAO,GACF,GAAI,OAAS,EAClB,MAAO,CAAC,OAEV,SAAuB,GAAI,OAAM,MACjC,UAAa,EAAG,EAAI,KAAK,OAAS,EAAG,EAAE,EACrC,KAAK,GAAK,KAAK,MAAM,MAAQ,QAAQ,IACrC,OAAS,KAAK,GAAK,QAAQ,GAE7B,MAAA,MAAK,KAAK,OAAS,GAAK,MACjB,KAQH,2BAOJ,MAAO,SAAU,OAAO,MAAQ,MAAO,QAAO,MAAS,WCrqBzD,8BAAkC,wBArBlC,MAkDE,qBAAmB,KAAA,OAAA,QATX,KAAA,MAAe,GACf,KAAA,aAAwD,GAExD,KAAA,SAAkB,GAOxB,KAAK,mBAGP,mCACM,KAAK,UAAY,MACnB,QAAQ,KACJ,YAAY,KAAK,oEACgB,aAEvC,KAAK,aAAe,aACpB,KAAK,SAAW,SAGlB,4CAOE,GAJA,KAAK,aAAa,UAAY,CAAC,aAAc,SAIzC,KAAK,SAAS,WAAa,MAC7B,cAAkB,KAAK,SAAS,UAChC,QAAQ,KACJ,qCAAqC,aAAa,cACtD,KAAK,IAAI,SAAU,iBAIjB,oBACJ,MAAI,YAAY,MAAK,MACZ,KAAK,MAAM,UAGpB,MAAK,MAAM,UAAY,KAAM,MAAK,aAAa,UACxC,KAAK,MAAM,WAGpB,cACE,GAAI,WAAY,MAAK,MACnB,MAAO,MAAK,MAAM,UAGpB,cAAkB,KAAK,aAAa,UACpC,GAAI,UAAU,WACZ,KAAM,IAAI,OACN,QAAQ,8EAId,MAAA,MAAK,MAAM,UAAY,UAEhB,KAAK,MAAM,UAGpB,oBACE,MAAO,MAAK,IAAI,UAGlB,kBACE,MAAO,MAAK,IAAI,UAGlB,WACE,MAAO,MAAK,SAGV,YACF,MAAO,MAAK,MAGd,oBACE,GAAI,KAAK,aAAa,WAAa,KACjC,KAAM,IAAI,OACN,mBAAmB,2CAEzB,KAAK,MAAM,UAAY,MACnB,KAAK,aAAa,UAAU,SAAW,MACzC,KAAK,aAAa,UAAU,QAAQ,OAIhC,uBACN,GAAI,KAAK,aAAa,WAAa,KACjC,KAAM,IAAI,OACN,yBAAyB,4CAE/B,MAAO,MAAK,aAAa,UAAU,eAGrC,iBACE,KAAK,MAAQ,OAAO,OAAO,GAAI,QAGjC,QACE,KAAK,MAAQ,GACb,KAAK,SAAW,GAChB,KAAK,mBAGC,mBACN,GAAI,MAAO,MAAK,QAAW,aACvB,MAAO,MAAK,OAAO,UAAa,aAChC,MAAO,MAAK,OAAO,SAAS,QAAW,YACzC,OAGF,cAAkB,eAAe,KAAK,OAAO,SAAS,QACtD,GAAI,4BAA6B,YAC/B,cAAkB,UAAU,2BAA2B,MAAM,KAC7D,UAAU,QAAQ,WAChB,eAAqB,SAAS,MAAM,KACpC,KAAK,SAAS,KAAO,WAAW,IAAK,YAMvC,qCACJ,WAAe,GACf,MAAA,aAAY,QAAQ,8BAA+B,UACjD,aAAY,OAAQ,EAAE,GAAI,EAAE,IACrB,EAAE,KAAK,OAET,OAGT,wCAEE,OAAO,mBAAmB,OAAS,mBAAmB,OAAS,IAGjE,oCAEE,GADA,MAAQ,MAAM,cACV,QAAU,QAAU,QAAU,QAChC,MAAO,SAAU,OACZ,GAAI,GAAG,CAAE,UAAY,MAC1B,MAAO,CAAC,MAEV,KAAM,IAAI,OACN,oCAAoC,kBAAkB,aAWtD,eACJ,MAAO,KAGF,QAAuB,KACxB,6CACJ,IAAM,cC1LR,oBAEM,8BACJ,GAAI,iBAAmB,MAErB,OACA,GAAI,MAAQ,SAAY,YACtB,GAAK,eACI,MAAQ,SAAY,YAC7B,GAAK,eACI,MAAQ,UAAa,YAC9B,GAAK,gBACI,MAAQ,OAAU,YAC3B,GAAK,SAEL,MAAM,IAAI,OAAM,kCAElB,gBAAkB,GAEpB,MAAO,iBAIT,wBACE,OAAW,qBACX,MAAI,IAAG,YAAc,MACnB,IAAG,WAAa,GAAI,MAEf,GAAG,WAUN,8BACJ,cAAkB,eAClB,GAAI,UAAU,IAAI,KAChB,MAAO,WAAU,IAAI,KAChB,CACL,cAAkB,QAClB,MAAA,WAAU,IAAI,IAAK,WACZ,UAAU,IAAI,MCzClB,QAAY,WAGC,aAGC,YAGF,WAGC,WAGD,UAOA,aAOG,gBAMA,cAMF,aAGC,aAGD,aAGC,cAGA,gBAGE,sBASI,wBAQF,0BAWI,4BAUF,6BAOG,0BASN,uBAMG,mBAOP,YAMA,mBAGO,sBAOJ,qBAGG,oBAGJ,gBAMA,8BAUc,2CAUD,6BAUb,gCASgB,+CASD,4BASlB,WAGC,cAGE,uBAQO,8BASA,6BAOD,qCAOS,4DAYjC,yEAYA,0CAWgB,kBAGM,qCAQa,mDAIC,mCAIjB,cAGJ,cAGI,cAGJ,YAGE,YAGF,iBAGO,mBAML,YAGF,WAGC,qBAOS,sBAGR,iBAGG,0BAGM,0BAON,oBAOA,mBAGD,uBAGK,wBAGJ,gBAGJ,YAGA,gBAGI,iBAGH,cAGA,kBAGI,iBAML,iBAGK,qBAGD,eAML,YAGE,mBAGK,wBAGA,uBAGD,uBAGC,iBAMP,cASI,cASJ,cAOI,kBAGA,sBASI,wBASF,0BAWI,kCAWI,yBASb,WAOD,cAOI,oBAGE,gBAON,kBAGQ,uBAQH,eAGL,eAGK,+BAGW,0CASA,0CAUA,+BAUX,kBAGF,cAQF,aAMC,aAOD,WAGD,YAGE,aAGD,aAOC,aAQD,kBAGM,kBAGN,eAGG,gCAMc,kDAQI,2CAKX,oCAQI,2BAIb,gBAGE,gBAMF,cAGA,kBAGI,mBAMH,cAGF,aAGC,YAMF,WAGC,YAGA,eAGG,mBAGC,gBAGJ,WAGD,qBAOW,wBAOR,iBAOC,4BAMU,2BAGX,aAGH,oBAGU,6BAOD,mBAaT,WAGC,YAGA,YAMA,iBAOK,mBAMH,gBAQA,4BAMY,+BAOT,iBAML,kBAMM,8BASM,gCAQJ,2BAgBD,mCAiBS,sCC/2BhC,UAAU,iBAAkB,IAAM,GAAI,mBAEtC,UAAU,eAAgB,IAAM,GAAI,MAoElC,2CAEJ,QAAY,QAAQ,WAAY,aAChC,MAAO,gBAAe,IAAI,KAOtB,iCACJ,MAAO,cAAa,IAAI,YAGpB,2CACJ,OAAW,eAAe,iBACK,GAE/B,QACE,IAAO,KAAM,OAAS,GAAG,OACzB,GAAI,KACF,MAEF,iBAAsB,iBACF,IAAI,MAAM,KAC1B,WAAY,aACd,OAAO,KAAK,SAGhB,MAAO,QAcH,iCACJ,IAAO,WAAY,aAAe,YACtB,QAAQ,WAAY,aAC5B,eAAe,IAAI,MACrB,QAAQ,KACJ,eAAe,4BACX,sCAEV,eAAe,IAAI,IAAK,SAWpB,mCACJ,IAAO,YAAc,QAEjB,aAAa,IAAI,aAGf,MAAM,QAAQ,UAChB,QAAQ,KAAK,gCAAgC,eAGjD,aAAa,IAAI,WAAY,SAUzB,kDAEJ,QAAY,QAAQ,WAAY,aAChC,GAAI,CAAC,eAAe,IAAI,KACtB,KAAM,IAAI,OACN,eAAe,4BACX,kCAEV,eAAe,OAAO,KAIlB,wCACJ,GAAI,CAAC,aAAa,IAAI,YACpB,KAAM,IAAI,OACN,iBAAiB,6CAEvB,aAAa,OAAO,YAShB,qEAEJ,YAAgB,qBAAqB,uBACrC,QAAQ,QAAQ,eACd,oBACI,OAAO,OAAO,GAAI,aAAc,CAAC,YAAa,iBAClD,eAAe,mBAInB,yCACE,MAAO,GAAG,eAAe,aCrN3B,iBAAA,GAAA,UAAA,aAAA,CAAA,YAAA,IAAA,YAAA,OAAA,IAAA,OAAA,mCAAA,IAAA,mCAAA,cAAA,IAAA,cAAA,kBAAA,IAAA,kBAAA,qBAAA,IAAA,qBAAA,gBAAA,IAAA,gBAAA,yBAAA,IAAA,yBAAA,MAAA,IAAA,MAAA,eAAA,IAAA,eAAA,kBAAA,IAAA,kBAAA,sBAAA,IAAA,sBAAA,aAAA,IAAA,aAAA,YAAA,IAAA,YAAA,aAAA,IAAA,aAAA,MAAA,IAAA,OAAA,QAAA,IAAA,QAAA,kBAAA,IAAA,kBAAA,uBAAA,IAAA,uBAAA,gBAAA,IAAA,gBAAA,WAAA,IAAA,WAAA,WAAA,IAAA,WAAA,uBAAA,IAAA,uBAAA,UAAA,IAAA,UAAA,WAAA,IAAA,WAAA,MAAA,IAAA,MAAA,SAAA,IAAA,SAAA,UAAA,IAAA,UAAA,cAAA,IAAA,cAAA,SAAA,IAAA,SAAA,aAAA,IAAA,aAAA,aAAA,IAAA,aAAA,WAAA,IAAA,WAAA,mBAAA,IAAA,mBAAA,0BAAA,IAAA,0BAAA,oBAAA,IAAA,oBAAA,eAAA,IAAA,eAAA,kBAAA,IAAA,kBAAA,IAAA,IAAA,IAAA,eAAA,IAAA,eAAA,YAAA,IAAA,YAAA,YAAA,IAAA,YAAA,SAAA,IAAA,SAAA,QAAA,IAAA,QAAA,cAAA,IAAA,cAAA,oBAAA,IAAA,oBAAA,aAAA,IAAA,aAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,cAAA,IAAA,cAAA,aAAA,IAAA,eCyBM,wCAEJ,MAAI,SAAU,SACL,aAAa,OAGf,aAAa,CAAC,OAAQ,OAG/B,qCACE,MAAQ,aAAa,eAAgB,QAAU,WAC1C,YAAa,aAAc,QAAU,SACrC,YAAa,aAAc,QAAU,OAGtC,+BACJ,GAAI,QAAU,SACZ,KAAM,IAAI,OAAM,6CASlB,GAPI,MAAM,QAAQ,IAChB,GAAS,QAAQ,IAGf,MAAM,QAAQ,UACX,yBAAyB,EAAe,OAE3C,mBAAmB,EAAG,OACxB,MAAO,GAET,GAAI,OAAS,MAAQ,QAAU,WAAa,QAAU,YACpD,MAAO,IAAI,cAAa,GACnB,GAAI,QAAU,QACnB,MAAO,IAAI,YAAW,GACjB,GAAI,QAAU,QACnB,SAAa,GAAI,YAAY,EAAe,QAC5C,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,EAC7B,KAAK,MAAO,EAAe,MAAQ,GACrC,MAAK,GAAK,GAGd,MAAO,UAEP,MAAM,IAAI,OAAM,qBAAqB,SAenC,eACJ,MAAO,OAAM,SAAS,MAmBlB,mCAEJ,MAAO,OAAM,SAAS,MAAM,KAAM,cAW9B,iCAA6C,SACjD,MAAA,UAAW,UAAY,QAChB,MAAM,SAAS,OAAO,EAAG,UAW5B,qCAAqD,SACzD,MAAA,UAAW,UAAY,QAChB,MAAM,SAAS,OAAO,MAAO,UClItC,aAAA,MAiCE,iCAAoB,KAAA,aAAA,aAAoC,KAAA,OAAA,OAClD,QAAU,MACZ,MAAK,OAAS,GAAI,SAItB,mCAEE,gCAC4B,KAC1B,QAAU,WAEE,KAAK,aAAa,KAAK,qBAErC,GAAI,MAAM,QAAQ,gCAChB,UAAa,EAAG,EAAI,QAAQ,OAAQ,KAClC,WAAe,QAAQ,GAGvB,OAAO,OAAO,KAAK,aACjB,0BAA0B,WAAY,OAAO,MAAO,cAK1D,kBAAsB,CACpB,WACA,QACA,OACA,OAAQ,MAAM,KAAK,QAAU,OAAO,UACpC,UAAW,MAAM,KACb,QAAU,OAAO,qBAAuB,KACpC,OAAO,sBACP,KAEV,MAAO,eAGT,gCACE,IAAO,WAAY,QAAS,OAAQ,OAAQ,WAAa,cAEzD,QAAQ,QAAQ,SACd,QAAQ,IAAI,CAAC,OAAO,OAAQ,OAAQ,YAAY,KAAK,iBACnD,KAAK,OAAO,iBACR,WAAY,OAAQ,eAAe,GAAI,eAAe,GAAI,OAC1D,eAAe,UAMrB,0DAEJ,GAAI,QAAU,UAEZ,MAAO,GAET,UAAa,EAAG,EAAI,KAAK,OAAQ,KAC/B,QAAY,KAAK,GACjB,GAAI,MAAM,MAAQ,CAAC,SAAS,KAE1B,MAAA,SAAQ,KAAK,SAAS,yBAAyB,eACxC,GAGX,MAAO,GAlGT,WAAA,MAsGE,2DAIE,UAAa,MAAO,SAAW,SAAgB,SAAS,GAAG,WAAY,GAC7B,OAAO,iBACzB,SAAS,KAAM,SAC1B,OAAO,UACP,OAAO,WACD,SAAS,OAAO,MAAM,WAAY,2BACxB,GAE7B,gBAAmB,SACjB,WAAc,OAAO,OACrB,GAAI,QAAS,MAGX,eAAmB,OAAM,OAAS,OAAO,gBACvB,WAAW,OAC7B,wBACI,GAAG,UAAS,cAAc,UAAY,EAAI,WAAa,OAI/D,QAAQ,IACJ,KAAK,gBAAiB,WAAW,SAAS,WAAY,UAClD,4BAA6B,YACjC,mBAAoB,YAAa,aAAc,gBAC/C,eAAgB,sBCvFlB,0CAIJ,iBAAoD,cACJ,GAChD,UAAa,EAAG,EAAI,GAAG,OAAQ,IAC7B,aAAa,GAAG,GAAG,IAAM,GAG3B,UAAa,EAAG,EAAI,MAAK,OAAQ,KAC/B,UAAa,MAAK,cACC,MAAK,OACxB,oBAAwB,aACtB,WAAc,WAAW,yBAEL,GACpB,UAAa,EAAG,EAAI,GAAG,OAAQ,IAC7B,GAAI,aAAa,OAAM,KACrB,MAAK,QAAQ,QAAQ,QAAU,aAAa,OAAO,IAAM,IACzD,cAAgB,GAChB,WAAW,MAAK,IAAM,GACtB,MAIJ,GAAI,cACF,OAMN,mBAAsD,GACtD,eAAe,EAAE,IAAM,GACvB,aAA8C,GAE9C,UAAa,MAAK,OAAS,EAAG,GAAK,EAAG,KACpC,UAAa,MAAK,cACC,MAAK,OAGxB,UAAa,EAAG,EAAI,MAAK,QAAQ,OAAQ,IACvC,GAAI,eAAe,MAAK,QAAQ,GAAG,KACjC,oBAAwB,YACtB,eAAe,WAAW,WAAW,IAAM,GAC3C,SAAS,MAAK,IAAM,GAEtB,OAMN,iBAAiC,GACjC,UAAa,EAAG,EAAI,MAAK,OAAQ,KAC/B,UAAa,MAAK,GAElB,GAAI,WAAW,MAAK,KAAO,SAAS,MAAK,KAEvC,iBAAoD,GACpD,oBAAwB,OAAK,QAC3B,cAAkB,MAAK,OAAO,WAC1B,aAAa,UAAU,KACzB,cAAa,WAAa,WAK9B,eAAmB,OAAO,OAAO,GAAI,OACrC,WAAW,OAAS,aACpB,WAAW,QAAU,MAAK,QAE1B,aAAa,KAAK,aAItB,MAAO,cAUH,uFAKJ,UAAa,aAAa,OAAS,EAAG,GAAK,EAAG,KAC5C,UAAa,aAAa,OAEJ,GAYtB,GAXA,MAAK,QAAQ,QAAQ,IACnB,eAAmB,6BAA6B,EAAE,IAC9C,YAAc,KAChB,IAAI,KAAK,YAIT,IAAI,KAAK,QAIT,MAAK,UAAY,KACnB,KAAM,IAAI,OACN,4DACO,MAAK,eAIlB,mBAAuB,MAAK,SAAS,KAErC,oBAAwB,OAAK,QAC3B,GAAI,CAAE,aAAa,iBACjB,KAAM,IAAI,OACN,iCAAiC,yCACH,OAAO,KAAK,oBAIhD,OAAW,MAAK,IAAM,eAAe,cACrC,GAAI,GAAG,QAAU,UACf,KAAM,IAAI,OACN,4BACI,MAAK,qCACN,iDAAiD,GAAG,UAE7D,MAAU,MAAK,OAAO,WACtB,GAAI,CAAM,YAAY,GAAG,MAAO,EAAE,OAChC,KAAM,IAAI,OACN,4BACI,MAAK,sCACL,yBAAyB,GAAG,wDACL,EAAE,UAGnC,GAAI,6BAA6B,EAAE,KAAO,KACxC,6BAA6B,EAAE,IAAM,QAErC,gBAAoB,6BAA6B,EAAE,IACnD,6BAA6B,EAAE,IAAM,MAAI,YAAa,IACtD,YAAY,aCvKpB,0BAA8B,8BAEK,wBAEL,EAExB,kDAGJ,YAAgB,eAAe,iBACb,wBAAwB,KAAM,MAAO,MAAO,cACjD,MAAM,iBACD,kBAAkB,KAAM,MAAO,MAAO,QAAS,iBACnD,CAAC,UACf,MAAI,UACF,OAAM,KAAK,YAAY,SACvB,MAAM,KAAK,WAAW,QACtB,MAAM,KAAK,aAAa,UACxB,MAAM,KAAK,cAEb,MAAM,KAAK,UAAU,IAAI,GAAK,OAAS,GAAG,KAAK;IACxC,MAAM,KAAK;GAGpB,2DAGE,MAAU,cAAc,eACR,QAAQ,QAAQ,OAAS,aACvB,GAAI,OAAM,SAAS,KAAK,QAC7B,MAAM,sBAEf,QAAU,YAAc,oBAAoB,MAAQ,KAExD,GAAI,KAAO,EACT,YAAe,EAAG,IAAM,EAAI,QAAS,OACnC,WAAe,IAAM,QACrB,UAAa,EAAG,EAAI,QAAS,IAC3B,UAAU,GAAK,KAAK,IAChB,UAAU,GACV,YAAY,eAAe,OAAS,GAAI,EAAG,OAAO,QAI5D,MAAO,WAGT,sCAEE,WACA,MAAI,OAAM,QAAQ,KAChB,OAAS,GAAG,WAAW,IAAI,GAAG,QAAQ,6BAC/B,WAAW,IAAI,GAAG,QAAQ,2BACxB,SAAS,KAClB,OAAS,IAAI,OACJ,QAAU,OACnB,OAAS,gBAAgB,KAEzB,OAAS,WAAW,IAAI,QAAQ,wBAAwB,WAGnD,SAAS,OAAQ,OAG1B,4BACE,MAAO,KAAM,EAAI,QAAU,OAG7B,qEAEqD,IACnD,sBAA0B,QAAU,YAAc,EAAI,OAEzC,MAAM,QACN,MAAM,OACnB,GAAI,OAAS,GACX,GAAI,QAAU,aACZ,iBAAqB,oBAAoB,MACzC,MAAO,CAAC,YAAY,aAAa,GAAI,EAAG,QAE1C,MAAI,SAAU,OACL,CAAC,gBAAgB,KAAK,KAExB,CAAC,KAAK,GAAG,YAGlB,GAAI,OAAS,GACX,GAAI,KAAO,uBACT,kBAAsB,2BAA6B,4BAEnC,MAAM,KAClB,KAAK,MAAM,EAAG,yBACH,MAAM,KAAqC,KAAK,MAC1D,MAAO,4BAA8B,kBACtC,KAAO,oBACX,MAAI,SAAU,aACZ,WAAY,oBAAoB,WAChC,SAAW,oBAAoB,WAE1B,CACL,IACA,UAAU,IAAI,OAAU,YAAY,EAAG,UAAU,GAAI,QAChD,KAAK,MACV,UACA,SACK,IACG,OAAU,YACN,EAAG,UAAU,KAAO,2BAA6B,GAAI,QAC5D,KAAK,MACV,KAGJ,gBACI,QAAU,YAAc,oBAAoB,MACpB,MAAM,KAAoB,MAEtD,MAAO,CACL,IACA,YAAY,IAAI,OAAU,YAAY,EAAG,UAAU,GAAI,QAClD,KAAK,MACV,KAKJ,aAAiB,MAAM,MAAM,cACV,QAAQ,MAAM,UAClB,QAAQ,GAAK,wBACJ,GACxB,GAAI,KAAO,uBACT,UAAa,EAAG,EAAI,2BAA4B,KAC9C,UAAc,EAAI,WACN,MAAQ,OACpB,MAAM,KAAK,GAAG,kBACV,KAAK,MAAM,MAAO,KAAM,SAAU,MAAO,WAAY,UACrD,KAEN,MAAM,KAAK,OACX,UAAa,KAAO,2BAA4B,EAAI,KAAM,KACxD,UAAc,EAAI,WACN,MAAQ,OACpB,MAAM,KAAK,GAAG,kBACV,KAAK,MAAM,MAAO,KAAM,SAAU,MAAO,WAAY,UACrD,IAAM,KAAO,SAGnB,WAAa,EAAG,EAAI,KAAM,KACxB,UAAc,EAAI,WACN,MAAQ,OACpB,MAAM,KAAK,GAAG,kBACV,KAAK,MAAM,MAAO,KAAM,SAAU,MAAO,WAAY,UACrD,IAAM,KAAO,IAGrB,QAAY,OAAS,EAAI,IAAM,GAC/B,MAAM,GAAK,IAAM,MAAM,GAAK,IAC5B,UAAa,EAAG,EAAI,MAAM,OAAS,EAAG,IACpC,MAAM,GAAK,IAAM,MAAM,GAAK,IAE9B,eAAiB;EACjB,UAAa,EAAG,EAAI,KAAM,IACxB,YAAc;EAEhB,MAAA,OAAM,MAAM,OAAS,GACjB,IAAM,MAAM,MAAM,OAAS,GAAK,IAAO,QAAS,GAAK,YAClD,MAGT,mCAEE,kBAA+C,GAC/C,UAAa,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,cAAc,KAAK,CAAC,KAAK,GAAI,KAAK,EAAI,KAExC,MAAO,eCnMT,iBAAA,MA6CE,gCAIE,GAJqC,KAAA,MAAA,MACrC,KAAK,MAAQ,MAAM,QACnB,KAAK,KAAY,cAAc,OAE3B,QAAU,MACZ,MAAU,OAAO,OACZ,OACD,IAAM,KAAK,KACX,IAAM,qBAAqB,qDACG,KAAK,UAEzC,GAAI,QAAU,YACZ,KAAM,IAAI,OACN,8JAIN,KAAK,OAAS,QAAe,kBAAkB,MAAO,KAAK,MAC3D,KAAK,QAAU,eAAe,OAWhC,mBACM,KAAK,SAAW,GAClB,MAAO,CAAC,IAEL,OACD,KAAK,SAAW,KAAK,KACrB,IAAM,uCAAuC,KAAK,gCAC3B,KAAK,SAEhC,UAAc,KAAK,WAAW,MAC9B,KAAK,OAAO,OAAS,MAUvB,aACM,KAAK,SAAW,GAClB,MAAO,CAAC,IAEV,MAAQ,EACR,cAAkB,OAChB,GAAI,IAAM,GAAK,KAAO,KAAK,MAAM,IAC/B,QAAY,qCAAqC,wBAC3B,KAAK,QAC3B,KAAM,IAAI,OAAM,KAElB,IAEF,UAAY,KAAK,KAAK,OAAS,GAC/B,WAAa,EAAG,GAAI,KAAK,OAAS,EAAG,EAAE,GACrC,OAAS,KAAK,QAAQ,IAAK,KAAK,IAElC,MAAO,MAAK,OAAO,OAGrB,iBACE,GAAI,KAAK,OAAS,EAChB,MAAO,GACF,GAAI,KAAK,OAAS,EACvB,MAAO,MAAK,GAEd,UAAY,KAAK,KAAK,OAAS,GAC/B,UAAa,EAAG,EAAI,KAAK,OAAS,EAAG,EAAE,EACrC,OAAS,KAAK,QAAQ,GAAK,KAAK,GAElC,MAAO,OAGT,kBACE,GAAI,KAAK,OAAS,EAChB,MAAO,GACF,GAAI,KAAK,OAAS,EACvB,MAAO,CAAC,OAEV,SAAuB,GAAI,OAAM,KAAK,MAAM,QAC5C,UAAa,EAAG,EAAI,KAAK,OAAS,EAAG,EAAE,EACrC,KAAK,GAAK,KAAK,MAAM,MAAQ,KAAK,QAAQ,IAC1C,OAAS,KAAK,GAAK,KAAK,QAAQ,GAElC,MAAA,MAAK,KAAK,OAAS,GAAK,MACjB,QAGL,QACF,MAAO,MAAK,MAAM,OAQpB,WACE,MAAO,aAAY,WAAW,KAAK,OAAQ,KAAK,MAAO,KAAK,mBAiC3B,eAEV,0BAEuB,KAW5C,8BACJ,UAAY,GAQR,+BACJ,UAAY,QAOR,qCACJ,qBAAuB,GA1NzB,WAAA,MA8QE,mCAXA,KAAA,KAAO,GAoIG,KAAA,mBAAqB,GAxH7B,KAAK,MAAQ,MAAM,QACnB,KAAK,MAAQ,OAAS,UACtB,KAAK,KAAY,cAAc,OAC/B,KAAK,QAAU,eAAe,OAC9B,KAAK,OAAS,OACd,KAAK,GAAK,GACV,KAAK,SAAY,KAAK,KAAO,EAAI,KAAK,KAAK,WAAa,YAGtD,QACF,MAAO,MAAK,MAAM,YAQd,UACJ,SAAa,KAAM,MAAK,OACxB,MAAO,WAAU,OAAO,KAAK,MAAO,KAAK,MAAY,MAOvD,aACE,MAAO,WAAU,OAAO,KAAK,MAAO,KAAK,MAAY,KAAK,iBAStD,SACJ,SAAa,KAAM,MAAK,OACxB,MAAO,eAAc,KAAK,MAAO,MASnC,YACE,MAAO,eAAc,KAAK,MAAO,KAAK,iBASlC,QACJ,KAAK,kBACL,SAAa,YAAY,KAAK,KAAK,QACnC,GAAI,KAAK,QAAU,UACjB,UAAc,KAAM,MACpB,IACE,MAAO,OAAM,IAAI,GAAU,aAAa,cAExC,KAAM,IAAI,OACN,kGAIR,MAAO,MAST,WACE,KAAK,kBACL,SAAa,YAAY,SAAS,KAAK,QACvC,GAAI,KAAK,QAAU,SACjB,IACE,MAAQ,MAAsB,IAAI,GAAU,aAAa,cAGzD,KAAM,IAAI,OACN,iGAIR,MAAO,WAIH,SACJ,KAAK,kBACL,SAAa,KAAM,aAAY,KAAK,KAAK,QACzC,MAAI,MAAK,QAAU,SACV,KAEA,GAAI,YAAY,KAAoB,QAS/C,UACE,GAAI,KAAK,WACP,OAEF,YAAY,cAAc,MAC1B,KAAK,mBAAqB,MAIxB,cACF,MAAO,MAAK,mBAGd,kBACE,GAAI,KAAK,WACP,KAAM,IAAI,OAAM,uBAYpB,cAAgB,IACd,MAAO,WAAU,MAAM,KAAM,SAO/B,QACE,MAAA,MAAK,kBACE,UAAU,MAAM,MAQzB,iBAAmB,IACjB,SAAa,KAAK,WAClB,MAAO,gBAAe,KAAM,KAAK,MAAO,KAAK,MAAO,SAGtD,YACE,MAAA,MAAK,kBACE,UAAU,KAAK,KAAW,OAEnC,mBAAqB,eACnB,MAAA,MAAK,kBACE,YAAY,aAAa,KAAM,UAAW,KAAM,SAI3D,OAAO,eAAe,OAAQ,OAAO,YAAa,CAChD,MAAO,UAME,CAAC,CAAC,UAAY,SAAS,MAAQ,MAAQ,SAAS,UAAY,MAC/D,SAAS,iBAAmB,OAncpC,aAAA,aAueqD,QAGnD,kDAGE,MACI,aAAa,MAAO,aAAa,MAAO,aAAa,OAAQ,UAH/B,KAAA,UAAA,UAIlC,KAAK,KAAO,KAWd,iBACE,GAAI,SAAS,QAAU,KAAK,MAC1B,KAAM,IAAI,OACN,2BAA2B,SAAS,8BACjB,KAAK,qBAE9B,GAAI,CAAM,YAAY,SAAS,MAAO,KAAK,OACzC,KAAM,IAAI,OACN,2BAA2B,SAAS,8BACjB,KAAK,qBAE9B,YAAY,cAAc,MAC1B,KAAK,OAAS,SAAS,OACvB,YAAY,OAAO,KAAM,MAG3B,UACE,YAAY,gBAAgB,MAC5B,KAAK,mBAAqB,KAI9B,OAAO,eAAe,SAAU,OAAO,YAAa,CAClD,MAAO,UACE,mBAAoB,SAAU,SAAS,QAAU,MACpD,SAAS,iBAAkB,YCnhBnC,wBAAA,GAAA,UAAA,oBAAA,CAAA,iBAAA,IAAA,iBAAA,sBAAA,IAAA,sBAAA,eAAA,IAAA,eAAA,eAAA,IAAA,iBCgEA,SAAA,AAAA,iBACE,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,OAPU,MAAA,MAAI,KAqBhB,sBAAA,AAAA,8BACE,mBAAA,QAAA,UACA,mBAAA,MAAA,QACA,mBAAA,KAAA,QACA,mBAAA,UAAA,cAJG,mBAAA,mBAAiB,KAOtB,qBAAA,AAAA,6BACE,kBAAA,QAAA,UACA,kBAAA,MAAA,QACA,kBAAA,KAAA,OACA,kBAAA,UAAA,cAJG,kBAAA,kBAAgB,KAOrB,wBAAA,AAAA,gCACE,qBAAA,QAAA,UACA,qBAAA,MAAA,UACA,qBAAA,KAAA,UACA,qBAAA,UAAA,cAJG,qBAAA,qBAAmB,KAOxB,0BAAA,AAAA,kCACE,uBAAA,QAAA,YACA,uBAAA,MAAA,YACA,uBAAA,KAAA,YACA,uBAAA,UAAA,cAJG,uBAAA,uBAAqB,KAO1B,kBAAsB,CACpB,QAAW,oBACX,MAAS,kBACT,KAAQ,iBACR,UAAa,uBAGT,iCACJ,GAAI,QAAU,UAAY,QAAU,UAClC,GAAI,QAAU,UAAY,QAAU,SAClC,MAAO,SAET,KAAM,IAAI,OAAM,kBAAkB,cAAc,SAElD,MAAO,eAAc,OAAO,OAIxB,0BACJ,MAAO,YAAW,KAAM,SC9GpB,6BACJ,GAAI,EAAE,QAAU,EAAE,MAChB,MAAO,CAAC,EAAG,GAEb,UAAc,WAAW,EAAE,MAAO,EAAE,OACpC,MAAO,CAAC,EAAE,KAAK,OAAQ,EAAE,KAAK,QAG1B,+BACJ,OACI,EAAE,QAAU,EAAE,MACd,IAAM,2BAA2B,EAAE,qBACpB,EAAE,2BAGjB,8CACJ,MAAO,YAAW,KAAK,GAAK,EAAE,KAAO,UAAO,IAexC,uCACJ,SAAuB,QACV,GAAI,KACjB,MAAA,qBAAoB,OAAQ,KAAM,MAC3B,KAGT,mDAEE,GAAI,YAAa,KACf,OAEF,GAAI,qBAAqB,SACvB,KAAK,KAAK,YACV,OAEF,GAAI,CAAC,WAAW,YACd,OAGF,aAAiB,WACjB,YAAgB,WACd,QAAY,SAAS,GAChB,KAAK,IAAI,MACZ,MAAK,IAAI,KACT,oBAAoB,IAAK,KAAM,QAMrC,yBACE,MAAO,OAAM,QAAQ,MAAQ,MAAO,MAAQ,SCrF9C,gBAAA,MAoFA,cAEE,KAAA,oBAAwC,GAExC,KAAA,eAAiB,EACjB,KAAA,SAAW,EACX,KAAA,WAAa,EACb,KAAA,iBAAmB,EACnB,KAAA,eAAiB,EAMjB,KAAA,cAAgB,EAGhB,KAAA,YAAc,EAId,KAAA,WAA2B,GAK3B,KAAA,kBAA8B,GAC9B,KAAA,YAAc,EAEd,KAAA,WAAa,GAAI,SAQjB,KAAA,UAAY,GACZ,KAAA,cAA6B,CAC3B,SAAU,EACV,WAAY,EACZ,UAAW,EACX,QAAS,GACT,OAAQ,QACJ,eACF,MAAO,OAAM,KAAK,GAAI,KAAI,KAAK,QAAQ,IAAI,GAAK,EAAE,UAItD,UACE,uBAA2B,MAAK,oBAC9B,KAAK,oBAAoB,cAAc,mBAvI7C,MA4JE,kBAAmB,KAAA,IAAA,KAbnB,KAAA,SAA0C,GAC1C,KAAA,gBAKI,GAKI,KAAA,qBAAuB,EAG7B,KAAK,MAAQ,GAAI,kBAGb,SACJ,GAAI,KAAK,oBAAsB,KAC7B,MAAO,MAAK,mBAAmB,KAAK,QAEtC,GAAI,KAAK,iBAAmB,KAC1B,OAEF,mBAAuB,KAAK,oBAE5B,UAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,gBAAoB,eAAe,WACnB,KAAM,MAAK,kBAAkB,aAAa,QAC1D,GAAI,SACF,KAAM,MAAK,WAAW,aACtB,QAIJ,KAAM,IAAI,OACN,6EAIF,WACF,GAAI,KAAK,oBAAsB,KAC7B,KAAM,IAAI,OACN,YAAY,KAAK,kIAIvB,GAAI,KAAK,iBAAmB,MAC1B,IAAO,KAAM,WAAa,KAAK,kCAC/B,GAAI,UACF,KAAM,IAAI,OACN,iCAAiC,2HAIvC,KAAK,WAAW,MAElB,MAAO,MAAK,gBAGd,eACE,MAAO,QAAO,KAAK,KAAK,iBAG1B,yBACE,GAAI,CAAE,eAAe,MAAK,UAGxB,GAAI,cAAe,MAAK,iBACtB,IAAO,WAAa,KAAK,kBAAkB,aAC3C,GAAI,UAEF,MAAO,UAGT,OAAO,MAGX,MAAO,MAAK,SAAS,aAGvB,gCAEE,MAAM,eAAe,MAAK,gBAGnB,KAAK,gBAAgB,aAAa,QAFhC,KAKX,6CAGe,GACb,MAAI,eAAe,MAAK,gBACtB,SAAQ,KACJ,GAAG,iFAEA,IAET,MAAK,gBAAgB,aAAe,CAAC,QAAS,UACvC,SAGH,yBACJ,GAAI,KAAK,gBAAgB,cAAgB,KACvC,KAAM,IAAI,OAAM,iBAAiB,sCAGnC,GADA,KAAK,YAAc,YACf,KAAK,SAAS,cAAgB,MAChC,KAAK,gBAAkB,KACvB,IAAO,QAAS,WAAa,KAAK,kBAAkB,oBACrC,UAAY,KAAM,SAAU,QAC3C,GAAI,CAAC,OACH,MAAO,GAGX,MAAA,MAAK,gBAAkB,KAAK,SAAS,aACrC,KAAK,yBAEL,KAAK,SAAW,GAAI,UAAS,KAAK,iBAE3B,GAGD,yBACN,YAAgB,qBAAqB,KAAK,aAC1C,QAAQ,QAAQ,SACV,OAAO,WAAa,MACtB,OAAO,UAAU,KAAK,mBAKpB,sCACN,YAAgB,qBAAqB,aACrC,QAAQ,QAAQ,SACV,OAAO,aAAe,MACxB,OAAO,YAAY,KAAK,SAAS,gBAW/B,+BAEN,yBAA6B,KAAK,gBAAgB,aAClD,GAAI,sBAAwB,KAC1B,KAAM,IAAI,OACN,6BAA6B,uCAGnC,IACE,aAAgB,qBAAqB,UAMrC,GAAI,UAAW,CAAE,oBAAmB,iBAChC,MAAO,UAAQ,MAAS,YAC1B,cAAkB,EAAE,KAAK,6BAErB,SACK,KAAK,iBAEA,UAAY,KAAK,qBACZ,GAET,MAAK,SAAS,aAAe,gBAC7B,KAAK,mBAAqB,KACnB,KAER,MAAM,KAED,WAAY,KAAK,sBAGrB,MAAK,mBAAqB,KAC1B,QAAQ,KACJ,6BAA6B,sBACjC,QAAQ,KAAK,IAAI,OAAS,IAAI,UACvB,KAEjB,MAAA,MAAK,mBAAqB,QACnB,CAAC,QAAS,UAAW,QAE5B,OAAA,MAAK,SAAS,aAAe,SACtB,CAAC,QAAS,GAAM,UAAW,eAGpC,MAAA,SAAQ,KAAK,6BAA6B,sBAC1C,QAAQ,KAAK,IAAI,OAAS,IAAI,SACvB,CAAC,QAAS,GAAO,UAAW,KAIvC,2BACE,GAAI,CAAE,eAAe,MAAK,iBACxB,KAAM,IAAI,OAAM,GAAG,6CAEjB,KAAK,cAAgB,aAAe,KAAK,oBAAsB,MAGjE,KAAK,uBAGH,cAAe,MAAK,UACtB,MAAK,yBAAyB,aAC9B,KAAK,SAAS,aAAa,UAC3B,MAAO,MAAK,SAAS,cAGvB,MAAO,MAAK,gBAAgB,aAGxB,KAAK,cAAgB,aACvB,MAAK,mBAAqB,KAC1B,KAAK,YAAc,KACnB,KAAK,gBAAkB,MAInB,oBACN,GAAI,OAAO,KAAK,KAAK,iBAAiB,SAAW,EAC/C,KAAM,IAAI,OAAM,iCAElB,MAAO,QAAO,KAAK,KAAK,iBAAiB,KAAK,OAErC,KAAK,gBAAgB,GAAG,SAC3B,KAAK,gBAAgB,GAAG,UAIxB,kCAEN,mBAAuB,KAAK,oBAE5B,UAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,gBAAoB,eAAe,IAC5B,QAAS,WAAa,KAAK,kBAAkB,aACpD,GAAI,WAAa,QACf,MAAO,CAAC,KAAM,YAAa,WAG/B,KAAM,IAAI,OACN,0EAIN,0BACE,SAAa,KAAK,MAAM,WAAW,IAAI,mBACpB,KAAK,eACT,KAAK,SAAS,QAG7B,WAAW,YAAY,QACvB,KAAK,QAAU,SACf,SAAQ,KAAK,OAAQ,OAAQ,KAAK,MAAO,KAAK,OAC1C,KAAK,0BAGP,KAAK,MAAM,kBAAkB,KAAK,MAAM,kBAAkB,OAAS,KAIvE,kBAEE,SAAmB,KACnB,GAAI,IAAM,MAER,GAAI,MAAO,WAAa,WACtB,KAAM,IAAI,OAAM,uCAElB,GAAK,cAGL,GAAI,MAAO,WAAa,UAAY,CAAE,oBAAoB,SACxD,KAAM,IAAI,OACN,kFAGN,GAAI,MAAO,KAAO,WAChB,KAAM,IAAI,OACN,kFAGN,KAAO,SAIT,WACA,MAAO,MAAK,UACR,IAAM,KAAK,WAAW,MAAO,IAAM,KAAK,SAAS,QAAS,IACxD,QAAS,KACL,iBAAkB,UACpB,QAAQ,MAAM,2CAET,SAIP,uBACN,QACA,IACE,QAAY,IACZ,MAAA,OACO,cAEP,KAAA,OACM,IAKF,eACN,MAAO,QAAO,eAIR,iBACN,MAAO,QAAO,iBAYR,SACN,MAAU,KAAK,qBAAqB,EAAE,OAAQ,EAAE,MAAO,EAAE,cAC1C,CAAC,SACH,IAAiB,EAC5B,EAAG,KACD,UAAc,qBACK,CAAC,EAAG,UACT,CAAC,OAEf,MAAO,QAAO,cACV,UAAW,SAAQ,KAAK,GAAI,OAC5B,WAAoC,KAAiB,KACrD,gBAGgB,GACxB,MAAA,MAAK,YAAY,KAAK,MAAM,YAAY,KAAM,OAAQ,CAAC,GAAI,MAAM,MAAO,IACjE,EAgBT,8DAGE,gBAA0B,mBACE,KAI5B,MAAO,MAAK,cACR,YAAa,OAAQ,cAAe,WAAY,MAAO,aACvD,eAGE,yBACN,MAAO,MAAK,IAAI,QAAQ,WAGlB,4DAGN,oBAAwB,KAAK,QAAQ,8BAGd,EACvB,SAAS,QAAQ,OAGf,kBAAqB,KAAK,QAAU,YAAc,EAAI,IAQxD,aACI,KAAK,MAAM,kBAAkB,KAAK,MAAM,kBAAkB,OAAS,iBAEnE,gBAAkB,iBAAmB,iBAAmB,SAC5D,GAAI,cAAgB,EAClB,KAAM,IAAI,OACN,YAAY,KAAK,6CACb,0CAA0C,eAQtD,4FAKE,kBACsB,YACL,KAAK,WAClB,YAAc,MAChB,YACI,KAAK,MAAM,aAAe,KAAO,KAAK,MAAM,YAAY,KAAO,IAGrE,sBAA0B,KAAK,MAAM,4BACV,KAAK,MAAM,WAElC,KAAK,0BACP,KAAK,MAAM,kBAAkB,KAAK,GAGpC,uBACe,UAAU,WAAY,KAAK,iBAE1C,GAAI,QAAU,KACZ,YAAa,KACX,qBAAyB,KAAK,QAAQ,aACtC,IAAM,OAAO,WAAW,CAAC,OAAQ,MAAO,QAAS,KAAK,UACtD,aAAiB,MAAM,QAAQ,KAAO,IAAM,CAAC,KACzC,KAAK,0BACP,KAAK,sBAAsB,WAAY,iBAAkB,UAG3D,eAAmB,SAAS,IAAI,UAI9B,GAAK,QAAmB,MAAQ,KAC9B,MAAO,SAET,IAAO,OAAQ,MAAO,OAAS,QAC/B,MAAO,MAAK,qBAAqB,OAAQ,MAAO,SAOlD,GAAI,UACF,kBACI,KAAK,sBAAsB,WAAY,OAAQ,YACnD,GAAI,eAAiB,MAKf,eAAiB,MACnB,eAAgB,IAElB,eAAmB,WAAW,OAAO,OAAU,cAAc,IAC7D,cAAiB,eAAgB,IAAI,QAAQ,OAAO,YAEtD,MAAQ,KAAK,2BAA2B,eAE1C,MAAO,kBAGT,GAAI,aAAe,KACjB,KAAM,IAAI,OAAM,iBACZ,8DAEN,aAA+B,UAI7B,GAAI,CAAC,SACH,OAEF,MAAQ,QAAQ,IAAI,WAAU,KAAK,KAAK,KAAK,MAAM,cAGrD,YAAa,KACX,qBAAyB,KAAK,QAAQ,aACtC,IAAM,KAAK,KAAK,IAAM,YAAY,KAAK,QAAS,WAChD,SAAc,MAAM,QAAQ,KAAO,IAAM,CAAC,KAC1C,MAAI,MAAK,0BACP,KAAK,sBAAsB,WAAY,iBAAkB,MAEpD,MAKX,kBACA,MAAA,MAAK,UACD,IAAM,KAAK,MAAM,cAAe,IAAM,KAAK,MAAM,cAAe,KAC1D,CAAC,KAAK,IAAI,QAAQ,UAAY,CAAC,KAAK,MAAM,UAC5C,QAAU,cAEV,eAAgB,KAAK,SAAS,cAC1B,WAAY,OAAQ,IAAM,eAC1B,KAAK,IAAI,QAAQ,UACnB,KAAK,SAAS,iBAAiB,eAEjC,QAAU,cAAc,WAI5B,UACF,KAAK,YACD,WAAY,OAAQ,QAAS,cAAe,MAAO,OAGrD,KAAK,MAAM,WACb,KAAK,MAAM,cAAc,QAAQ,KAAK,CACpC,KAAM,WACN,WAAY,KAAK,MAAM,SAAW,kBAClC,mBAAoB,KAAK,MAAM,SAC/B,aAAc,KAAK,MAAM,WAAa,mBACtC,qBAAsB,KAAK,MAAM,WACjC,YAAa,OAAO,KAAK,QAAQ,IAC7B,KAAO,OAAO,MAAQ,KAAO,OAAO,KAAK,MAAQ,MACrD,aAAc,QAAQ,IAAI,MAAQ,KAAK,OACvC,aAAc,cAAc,OAC5B,UAAW,cAAc,YAGrB,MAAM,QAAQ,KAAO,QAAU,QAAQ,GAQzC,oCACN,UAAc,QAAQ,IAAI,WAAU,KAAK,KAAK,KAAK,MAAM,aACzD,MAAO,OAaD,iDAGN,eAAmB,YAAY,YAC/B,GAAI,YAAc,MAChB,iBAA+B,WAAW,cAAgB,iBACzB,WAAW,eAAiB,sBAKzD,WAAW,cACR,QACD,MAAM,QAAQ,QACd,IAAM,0DAEV,mBAAqB,OAAO,KAAK,QAAQ,IAAI,KAAS,OAAO,OAE7D,mBAAqB,aAAa,IAAI,WAAe,OAAO,YAG9D,wBACI,QAAQ,OAAO,OAAU,cAAc,IAE3C,MAAO,oBAAmB,OAAO,qBAInC,MAAO,MAQT,wCAGE,GAAI,QAAU,KACZ,KAAM,IAAI,OAAM,iDAElB,MAAQ,OAAS,UACjB,SAAU,UAAW,KAAK,QAC1B,gBAAkB,OACd,QAAU,UAAiB,SAAS,OAAO,KAC7C,aAAe,OAAoB,IAAI,GAAU,aAAa,KAEhE,WAAe,SAAQ,MAAM,YAAa,MAAO,SACvC,GAAI,QAAO,MAAO,MAAO,OAAQ,KAAK,gBAIhD,GAHA,KAAK,OAAO,EAAG,UAGX,QAAU,UACZ,SAAa,KAAK,MAAM,WAAW,IAAI,iBACtB,qBAAqB,aACtC,KAAK,MAAM,UAAY,SAAW,KAAK,MACvC,KAAK,MAAQ,SAEf,MAAO,GAQT,kDAGE,MAAQ,OAAS,UACjB,MAAU,GAAI,QAAO,MAAO,MAAO,OAAQ,KAAK,gBAChD,MAAA,MAAK,OAAO,EAAG,UACR,EAGT,oCACsC,eAEpC,KAAO,MAAQ,KAAK,iBAAiB,WACjC,OAAS,MAAQ,QAAU,aAAa,OAC1C,cAAe,aAAa,KAAK,QAEnC,MAAU,GAAI,UAAS,aAAc,UAAW,KAAM,KAAK,gBAC3D,GAAI,KAAK,MAAM,oBAAoB,EAAE,OAAS,KAC5C,KAAM,IAAI,OAAM,sBAAsB,EAAE,+BAE1C,MAAA,MAAK,MAAM,oBAAoB,EAAE,MAAQ,EACzC,KAAK,OAAO,EAAG,KAAK,SACb,EAGT,mBACE,aAAiB,KAAK,MAAM,WAAW,IAAI,EAAE,QACzC,KAAK,MAAM,WAAW,IAAI,EAAE,QAAQ,SACpC,EAKJ,GAJA,KAAK,MAAM,aACP,EAAE,QAAU,UACd,KAAK,MAAM,mBAET,WAAa,GACf,KAAK,MAAM,iBAIX,UAAY,EACR,EAAE,QAAU,aAAe,EAAE,QAAU,UACzC,OAAQ,EAAE,KAAY,gBAAgB,EAAE,QAE1C,KAAK,MAAM,WAAW,IAAI,EAAE,OAAQ,CAClC,QAAS,UAAW,KAAK,QACzB,MAAO,EAAE,MACT,MAAO,EAAE,MACT,MACA,SAAU,IAEZ,KAAK,MAAM,UAAY,MAGzB,KAAK,MAAM,WAAW,IAAI,EAAE,QAAQ,WAE9B,YAAa,WACjB,KAAK,MAAM,GAIf,iBACE,GAAI,CAAC,KAAK,MAAM,WAAW,IAAI,EAAE,QAC/B,OAGF,KAAK,MAAM,aACP,EAAE,QAAU,UACd,KAAK,MAAM,mBAEb,SAAa,KAAK,MAAM,WAAW,IAAI,EAAE,iBACxB,KAAK,SAElB,UAAY,EAGV,GAAE,QAAU,aACd,MAAK,MAAM,UAAY,KAAK,OAE9B,KAAK,MAAM,iBAEX,KAAK,QAAQ,YAAY,EAAE,QAC3B,KAAK,MAAM,WAAW,OAAO,EAAE,SAE/B,KAAK,MAAM,WAAW,IAAI,EAAE,QAAQ,WAOxC,mBACE,kBAAsB,MAAK,MAAM,qBAC/B,MAAU,KAAK,MAAM,oBAAoB,SACzC,KAAK,gBAAgB,IAIzB,mBACE,KAAK,cAAc,GACf,KAAK,MAAM,oBAAoB,EAAE,OAAS,MAC5C,MAAO,MAAK,MAAM,oBAAoB,EAAE,MAI5C,SACE,SAAa,KAAK,QAAQ,SAC1B,MAAA,MAAK,WAAa,KAAK,MAAM,WAC7B,KAAK,eAAiB,KAAK,MAAM,eACjC,KAAK,SAAW,KAAK,MAAM,SACvB,KAAK,MAAM,iBAAmB,GAChC,MAAK,WAAa,GACd,KAAK,SAAW,MAClB,MAAK,QAAU,IAEjB,KAAK,QAAQ,KACT,0EAGC,UAGH,gBAEJ,KAAK,MAAM,UAAY,GAEvB,eAAmB,KAAK,MAAM,yBACN,KAAK,MAAM,WAEnC,KAAK,MAAM,cAAc,QAAU,GACnC,KAAK,MAAM,cAAc,OAAS,KAAM,SAExC,KAAK,MAAM,UAAY,GAEvB,KAAK,MAAM,cAAc,UAAY,KAAK,IACtC,GAAG,KAAK,MAAM,cAAc,QAAQ,IAAI,GAAK,EAAE,qBACnD,KAAK,MAAM,cAAc,SAAW,KAAK,MAAM,SAAW,WAC1D,KAAK,MAAM,cAAc,WACrB,KAAK,MAAM,WAAa,gBAC5B,iBAAqB,MAAK,MAAM,cAAc,QAC5C,OAAO,aAAe,KAAM,QAAO,aACnC,OAAO,UAAY,KAAM,QAAO,UAElC,MAAO,MAAK,MAAM,cAGpB,WACE,MAAO,MAAK,MAAM,cAAgB,GAAK,KAAK,MAAM,cAAgB,EAG5D,iEAGN,aACI,CAAC,GAAI,KAAK,MAAM,iBAAkB,WAAY,OAAQ,QAAS,kBAEhD,YAAY,YAC3B,YAAc,MAChB,eAAgB,WAAW,UAEzB,eAAiB,MACnB,UAAS,SAAW,KAGlB,KAAM,IAAI,IAAI,SACZ,GAAI,IAAM,MACR,WAAe,QAAQ,QACL,oBAAoB,OAAO,KAAM,OAAO,OAC1D,MAAO,MAAK,WAAW,KAAM,OAAO,MAAO,OAAO,OAEpD,MAAO,MAIF,cAAc,IAAI,OAAS,EAAI,IAAM,IAAI,GAAI,MAAO,SAG/D,KAAK,MAAM,WAAW,KAAK,UAG7B,aACE,MAAA,QAAO,KAAO,GACP,OAGD,YACF,KAAK,MAAM,gBAAkB,GAC/B,MAAK,MAAM,WAAa,IAE1B,KAAK,MAAM,gBAGL,UACN,KAAK,MAAM,gBAOb,iBACE,cAA8B,CAC5B,MAAO,GACP,KAAM,gBACN,GAAI,KAAK,MAAM,eAEb,MACF,WAAU,KAAO,MAEnB,KAAK,MAAM,WAAW,KAAK,WAC3B,KAAK,MAAM,YAAc,UAO3B,iBACE,2BAA+B,sBAAsB,kCAEjD,GAAI,KAAI,uBAAuB,IAAI,GAAK,EAAE,KAG9C,UAAa,EAAG,EAAI,KAAK,MAAM,YAAY,MAAM,OAAQ,KACvD,cAAe,KAAK,MAAM,YAAY,MAAM,GACxC,CAAC,UAAO,MAAQ,CAAC,0BAA0B,IAAI,UAAO,KACxD,UAAO,UAIX,aAAiB,KAAK,MAAM,WAAW,MACvC,KAAK,MAAM,YAAc,KAAK,MAAM,WAAW,SAAW,EACtD,KACA,KAAK,MAAM,WAAW,KAAK,MAAM,WAAW,OAAS,GAGzD,uBAAuB,QAAQ,YAGzB,CAAC,UAAO,MAAQ,UAAO,UAAY,SAAS,IAC9C,KAAK,MAAM,aAWjB,mCAEuB,IAGrB,GAFK,OACD,GAAG,OAAS,EAAG,IAAM,6CACrB,IAAM,MAAQ,GAAG,QAAU,UAC7B,KAAM,IAAI,OAAM,0CAA0C,GAAG,UAG/D,MAAU,KAAK,UACX,IAAM,KAAK,YAAa,IAAM,KAAK,UACnC,IAAM,KAAK,KAAK,UAAW,IAE1B,OACD,YAAa,QACb,IAAM,kDAEV,iBAAqB,qBAAqB,KAAK,MAAM,WAAY,GAAI,GACrE,GAAI,CAAC,kBAAoB,aAAa,SAAW,GAAK,GAAG,OAAS,EAChE,KAAM,IAAI,OACN,uIAKN,MAAO,MAAK,KAAK,WAAY,KAC3B,2BAA6D,GAC7D,uBAAuB,EAAE,IAAO,IAAM,KAAQ,KAAK,EAAE,OAAS,GAG9D,uBACI,uBAAwB,aAExB,IAAK,KAAK,KAAK,IAEf,KACJ,WAAc,GAAG,IAAI,GAAK,uBAAuB,EAAE,KAEnD,MAAI,MAAK,MAAM,gBAAkB,GAG/B,MAAK,MAAM,WAAW,QAAQ,QAC5B,oBAAqB,OAAK,MACxB,UAAO,YAGX,KAAK,MAAM,WAAa,MAEnB,CAAC,MAAO,EAAG,MAAA,UAItB,cAEE,MAAK,QACI,WAAW,GAChB,IAAM,qDACH,cACA,OACD,OAAO,MAAM,GAAK,YAAa,SAC/B,IAAM,oEAGV,iBAIiC,GACjC,MAAA,QAAO,QAAQ,aACb,SAAS,GAAK,SAET,KAAK,cACR,UACE,KAAM,EAAM,GAAG,OAAQ,MAClB,OACD,IAAI,gBAAiB,QACrB,IAAM,8FAEL,OACI,WAAW,IAAI,UACpB,IAAM,oGAEH,IAAI,OAEb,SACA,aACE,YAAgB,IAAI,SAAS,GAAI,cAE7B,MAAM,QAAQ,SAAW,QAAU,CAAC,SACnC,OACD,OAAM,SAAW,OAAO,OACxB,IAAM,uKAGL,OACD,OAAM,MAAM,GAAK,YAAa,SAC9B,IAAM,wIAGV,YAA+C,GAC/C,MAAA,QAAM,QAAQ,YACZ,QAAQ,GAAK,IAAM,QAEd,WAKjB,iBAEE,SAAa,KAAK,MAAM,WAAW,IAAI,QACvC,MAAO,MAAK,QAAQ,SAAS,QAE/B,aAEE,SAAa,KAAK,MAAM,WAAW,IAAI,QACvC,MAAO,MAAK,QAAQ,KAAK,aAGrB,aACJ,UAAc,iBACK,KAAM,MAAK,QAAQ,KAAK,OAC3C,MAAA,YAAW,OAAS,MAAQ,MACrB,WASD,cACN,MAAI,MAAK,MAAM,aAAe,MAC5B,QAAO,QAAU,KAAK,MAAM,YAAY,GACxC,KAAK,MAAM,YAAY,MAAM,KAAK,SAG7B,UAGL,uBACF,MAAO,MAAK,MAAM,oBAOpB,QAEE,KAAK,uBAEL,KAAK,MAAM,UACX,KAAK,IAAI,QACT,KAAK,MAAQ,GAAI,aAEjB,sBAA0B,MAAK,SAC7B,KAAK,yBAAyB,aAC9B,KAAK,SAAS,aAAa,UAC3B,MAAO,MAAK,SAAS,aAEvB,KAAK,YAAc,KACnB,KAAK,gBAAkB,KACvB,KAAK,mBAAqB,OA3tBb,OAAA,aAAe,EAKf,OAAA,eAAiB,EA0tBlC,qBACE,WAAe,mBAAmB,cAAc,OAAQ,WACxD,MAAO,QAAO,WAAW,OAAQ,MAAO,WAGpC,2BACJ,OAAW,qBACX,GAAI,GAAG,WAAa,MAClB,kBAAoB,GAAI,aAAY,IACpC,GAAG,UAAY,GAAI,QAAO,eAE5B,MAAA,sBAAqB,GAAG,UAAU,KAIlC,iBAAiB,IAAM,GAAG,WACnB,GAAG,UAGL,WAAe,kBAQhB,kBAEJ,WAAe,CAAC,EAAG,GACnB,MAAO,QAAO,UAAU,IAAK,QC1sC/B,wBAAA,GAAA,UAAA,oBAAA,CAAA,UAAA,IAAA,UAAA,SAAA,IAAA,WCkBA,+BACE,MAAO,OAAO,YAAc,aAAe,WAAa,KAGpD,oBACJ,GAAI,uBAEF,MAAU,UAAU,WAAa,UAAU,QAAW,OAAe,MAErE,MAAO,2TACK,KAAK,IAEb,0kDACK,KAAK,EAAE,OAAO,EAAG,IAE5B,MAAO,GAGH,qBACJ,MAAQ,OAAO,SAAW,aAAe,OAAO,UAAY,MAEvD,MAAO,oBAAsB,YClBpC,SAAY,MAOZ,KAAI,aAAa,QAAS,IAAM,GAAO,aACjC,YACF,QAAQ,KACJ,iJAOR,KAAI,aAAa,aAAc,IAAkB,aAGjD,KAAI,aACA,UACA,IAAO,MAAO,UAAY,aACrB,MAAO,SAAQ,UAAa,aAC5B,MAAO,SAAQ,SAAS,MAAS,aAG1C,KAAI,aACA,YACA,IAAM,MAAO,YAAc,aAAe,WAAa,MACnD,UAAU,WAAa,MAAQ,SAAS,KAAK,UAAU,YACvD,aAAa,KAAK,UAAU,SAMpC,KAAI,aAAa,OAAQ,IAAM,IAM/B,KAAI,aACA,qCAAsC,IAAM,KAAI,QAAQ,UAG5D,KAAI,aAAa,+BAAgC,IAAM,IAGvD,KAAI,aAAa,UAAW,IAAM,IAGlC,KAAI,aAAa,+BAAgC,IAAM,ICnDjD,+BACJ,cAA4B,IAE5B,GAAI,aAAa,KACf,MAAO,SAAU,SAAW,GAAK,CAAC,IAAI,QAExC,GAAI,CAAC,MAAM,QAAQ,KACjB,MAAO,GAET,UAAwB,GAExB,KAAO,MAAM,QAAQ,YACd,aAAa,YAAc,QAAU,UAC1C,MAAM,KAAK,UAAU,QACrB,UAAY,UAAU,GAExB,MAAI,OAAM,QAAQ,MACd,MAAM,QAAQ,uCAChB,2BAA2B,IAAK,MAAO,IAGlC,MAGT,uDAGE,GADA,QAAU,SAAW,GACjB,CAAE,MAAM,QAAQ,MAAS,CAAC,aAAa,MACzC,OACI,MAAM,SAAW,EACjB,IAAM,eAAe,QAAQ,KAAK,+DACU,MAAM,eACtD,OAEF,OACI,MAAM,OAAS,EACf,IAAM,eAAe,QAAQ,KAAK,oDACR,IAAI,mBAClC,OACI,IAAI,SAAW,MAAM,GACrB,IAAM,eAAe,QAAQ,KAAK,sBAAsB,MAAM,wBACrC,IAAI,mBACjC,aAAiB,MAAM,MAAM,GAC7B,UAAa,EAAG,EAAI,IAAI,OAAQ,EAAE,EAChC,2BAA2B,IAAI,GAAI,SAAU,QAAQ,OAAO,IAIhE,qEAGE,GAAI,eAAiB,KACnB,OAEF,GAAI,gBAAkB,WAAa,gBAAkB,aACjD,gBAAkB,WAAa,cAAgB,SACjD,KAAM,IAAI,OACN,aAAa,uBAAuB,yBAC9B,iCAAiC,sBAIzC,6DAEiC,WACrC,GAAI,YAAa,QACf,MAAA,aAAY,aAAc,EAAE,MAAO,QAAS,cACrC,EAET,kBAAoB,WAAW,GAS/B,GANI,gBAAkB,UAClB,CAAC,OAAQ,QAAS,WAAW,QAAQ,eAAiB,GACxD,eAAgB,cAElB,YAAY,aAAc,cAAe,QAAS,cAE7C,GAAK,MACL,CAAC,aAAa,IAAM,CAAC,MAAM,QAAQ,IAAM,MAAO,IAAM,UACtD,MAAO,IAAM,WAAa,MAAO,IAAM,UAC1C,SAAa,GAAK,KAAO,OAAU,EAAS,YAAY,KACxD,KAAM,IAAI,OACN,aAAa,uBAAuB,0DACF,SAExC,kBAAsB,WAAW,EAAG,eAChC,CAAC,aAAa,IAAM,CAAC,MAAM,QAAQ,IACrC,GAAI,CAAC,IAEP,mBAAuB,UACR,gBAAkB,SAC7B,aAAa,EAAG,eAChB,QAAQ,EAAe,GAAI,gBAC/B,MAAO,QAAO,WAAW,OAAQ,cAAe,eAG5C,oEAEiC,WACrC,GAAI,CAAC,MAAM,QAAQ,KACjB,KAAM,IAAI,OACN,YAAY,qBAAqB,2DAGvC,YAAgB,IAChB,MAAO,SAAQ,IACX,OAAU,gBAAgB,EAAG,GAAG,WAAW,KAAM,cACjD,cChHC,oBAAwB,OAOzB,eACJ,SAAa,OAAO,KAAK,GACzB,GAAI,KAAK,SAAW,EAClB,KAAM,IAAI,OACN,yGAEG,KAAK,gBAGd,WAAa,KAAK,MACP,EAAE,QAGT,OAAO,SAAS,MAClB,QAAS,OAAO,UAAU,EAAG,OAAO,OAAS,IAI/C,OAAS,OAAS,gBAGlB,OAAW,YACT,OAAO,WAAW,QAClB,IACE,WAAe,GAAG,GAAG,MACrB,MAAI,WAAU,SACZ,QAAQ,MAAM,2CAEhB,OAAO,SAAS,QACT,iBAEP,KAAA,QAAO,SAAS,MACV,KAGV,MAAA,QAAO,eAAe,GAAI,OAAQ,CAAC,MAAO,OAAQ,aAAc,KAGzD,GClBT,+BACE,UAAc,gBAAgB,MAAM,OAAQ,iBAC9B,gBAAgB,MAAM,OAAQ,WACvC,kBACD,MAAM,MAAO,MAAM,MACnB,yBAAyB,MAAM,aAAa,MAAM,8CAGtD,WAA8B,CAAC,KAAM,MAAO,KAAM,OAClD,MAAO,QAAO,UAAU,QAAS,QAG5B,YAAgB,GAAG,CAAC,WClCrB,sDAMJ,GAHI,OAAS,MACX,OAAQ,WAAW,SAEjB,QAAU,YACZ,KAAM,IAAI,OACN,oFAGN,GAAI,CAAC,aAAa,SAAW,CAAC,MAAM,QAAQ,SACxC,MAAO,SAAW,UAAY,MAAO,SAAW,WAChD,MAAO,SAAW,SACpB,KAAM,IAAI,OACN,4HAGN,GAAI,OAAS,MACX,mCAAmC,OAEnC,iBAAqB,cAAc,oBACd,cAAc,eACnC,OACI,eAAiB,aACjB,IACI,iCAAiC,kCAC9B,+BAA+B,gBAE1C,UAAa,EAAG,EAAI,cAAc,OAAQ,EAAE,GAC1C,aAAiB,cAAc,qBACL,IAAM,cAAc,OAAS,EACnD,WAAa,cAAc,MAAM,MAAM,IACvC,GACJ,OACI,cAAc,KAAO,MAAM,IAAM,CAAC,kBAClC,IAAM,gDACE,qDACM,aAItB,MAAI,CAAC,aAAa,SAAW,CAAC,MAAM,QAAQ,SAC1C,QAAS,CAAC,SAGZ,MAAQ,OAAS,cACjB,OAAS,QAAU,SACf,aAAa,OAAQ,OACrB,QAAQ,OAAoB,GAAI,IAC7B,OAAO,WAAW,OAAsB,MAAO,OCtBlD,qCAEJ,kBAAsB,WAAW,OAAQ,OACzC,MAAO,YAAW,OAAQ,MAAO,cAAe,OCjC3C,yBAAwD,CAC7D,QAAW,EACX,QAAW,EACX,MAAS,EACT,OAAU,EACV,MAAS,EACT,KAAQ,EACR,UAAa,2BCFiB,EAmBhC,4CAIE,UAAsC,gBACW,SAEzB,MAAM,QAAQ,SAClC,QAAQ,IAAI,WAAU,UAAO,MAC7B,OAAO,KAAK,SAEhB,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,GAClC,SAAa,MAAM,KACT,MAAM,QAAQ,SAAW,QAAQ,GAAG,OAAS,QAAQ,MAC/D,GAAI,EAAE,QAAU,WAAa,EAAE,QAAU,SAAW,EAAE,QAAU,QAC5D,EAAE,QAAU,UAAY,EAAE,QAAU,YACtC,KAAM,IAAI,OAAM,gCAAgC,UAAU,EAAE,SAE9D,SAAmC,CAAC,KAAM,MAAO,EAAE,MAAO,MAAO,EAAE,OACnE,GAAI,EAAE,QAAU,UACd,cAAkB,GAAI,SAAoB,gBACxC,SAAa,KAAM,GAAE,sBACC,KAAK,OAAO,QAAU,GAAI,EAAE,OAAQ,GACtD,wBAA0B,KAAK,aACrB,GAAI,YAAW,sBAChB,EACb,WAAa,EAAG,GAAI,KAAK,OAAQ,MAC/B,QAAY,KAAK,kBAEb,GAAI,YAAW,GAAI,aAAY,CAAC,IAAI,SAAS,QACjD,MAAM,IAAI,cAAe,QACzB,QAAU,wBACV,MAAM,IAAI,IAAK,QACf,QAAU,IAAI,OAEhB,QAAQ,SAEV,aAAa,KAAK,eAElB,cAAa,KAAK,EAAE,QAElB,OAAS,MACX,MAAK,MAAQ,OAEf,MAAM,KAAK,MAGb,iBAAqB,KAAM,SAAQ,IAAI,cACvC,MAAO,CAAC,KAAM,uBAAuB,cAAe,OAkBhD,sCAGJ,QAA4B,wBAEf,EACb,eAAmB,QACjB,SAAa,KAAK,WACJ,KAAK,YACL,KAAK,WACN,cAAc,cAG3B,GAAI,gBAAkB,OACpB,iBAAqB,KAAK,aAC1B,GAAI,aAAa,QAAU,SAAW,aAAa,QAAU,UAC3D,GAAI,CAAE,QAAS,eAAgB,SAAW,eACxC,KAAM,IAAI,OACN,UAAU,KAAK,0BAA0B,aAAa,oEAGnD,aAAa,QAAU,WAChC,GAAI,QAAU,UACZ,KAAM,IAAI,OACN,UAAU,KAAK,0BAA0B,aAAa,yDACH,cAGzD,MAAM,IAAI,OACN,UAAU,KAAK,uCACO,aAAa,+EAIzC,2BAA+B,qBAAqB,aAAa,kBAE7D,QAAO,MAAM,OAAQ,OAAS,KAAO,uCACjB,aAAa,QAAU,QAC3C,GAAI,YAAW,YACf,GAAI,aAAY,YACpB,GAAI,QAAU,UACZ,GAAI,aAAa,QAAU,SAAW,aAAa,QAAU,UAC3D,OAAS,GAAI,cAAa,eAAe,QACzC,UAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,MAAU,eAAe,GACzB,OAAO,GAAK,EAAI,aAAa,MAAQ,aAAa,aAE3C,aAAa,QAAU,UAC5B,gBAAkB,QACpB,eAAgB,qBAElB,OAAS,cAAc,oBAEvB,MAAM,IAAI,OACN,iCAAiC,aAAa,0CAG3C,QAAU,SACnB,GAAI,aAAa,QAAU,SAAW,aAAa,QAAU,SAC3D,KAAM,IAAI,OACN,iCAAiC,aAAa,gCAGpD,OAAS,GAAI,YAAW,eAAe,QACvC,UAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,MAAU,eAAe,GACzB,OAAO,GAAK,KAAK,MAAM,EAAI,aAAa,MAAQ,aAAa,UAG/D,MAAM,IAAI,OAAM,gCAAgC,UAAU,SAE5D,QAAU,KAAO,+BACR,QAAU,UACnB,UAAa,cAAc,KAAK,OAChC,OAAS,GACT,UAAa,EAAG,EAAI,MAAM,KACxB,eAAmB,GAAI,aACnB,QAAO,MAAM,OAAQ,OAAS,0BAA0B,GAC5D,QAAU,wBACV,UAAc,GAAI,YAAW,QAAO,MAAM,OAAQ,OAAS,aAC1D,OAAwB,KAAK,OAC9B,QAAU,iBAGZ,gBAAoB,qBAAqB,kBACtB,QAAO,MAAM,OAAQ,OAAS,KAAO,aAExD,GAAI,QAAU,UACZ,OAAS,GAAI,cAAa,oBACjB,QAAU,QACnB,OAAS,GAAI,YAAW,oBACf,QAAU,OACnB,OAAS,GAAI,YAAW,oBACf,QAAU,aACnB,OAAS,GAAI,cAAa,YAC1B,UAAa,GAAI,cAAa,OAAO,OAAS,UAChC,GAAI,cAAa,OAAO,OAAS,GAC/C,UAAa,EAAG,EAAI,MAAK,OAAQ,IAC/B,MAAK,GAAK,OAAO,EAAI,GACrB,OAAM,GAAK,OAAO,EAAI,EAAI,GAE5B,eAAmB,QAAO,MAAM,MAAO,uBACnB,QAAO,OAAO,MAAO,WACzC,IAAI,MAAQ,QAAQ,WAAY,aAChC,WAAW,UACX,YAAY,cAEZ,MAAM,IAAI,OAAM,gCAAgC,UAAU,SAE5D,QAAU,KAAO,YAEf,QAAU,aACZ,KAAI,MAAQ,QAAO,OAAQ,MAAO,QAGtC,MAAO,KAMH,oCAEJ,GAAI,KAAO,KACT,KAAM,IAAI,OAAM,wBAAwB,KAAK,UAAU,OAGzD,oBAAsB,eASa,GACnC,GAAG,QAAQ,IAMT,GALA,iBAAmB,EAAE,WAErB,aAAa,KACT,EAAE,aAAe,EAAE,OAAO,WAAa,EACA,GAAK,GAAE,YAAoB,IAClE,CAAE,aAAoB,eAAgB,YAAoB,aACxD,YAAoB,aACxB,KAAM,IAAI,OAAM,mCAAmC,EAAE,YAAY,UAKrE,MAAU,GAAI,YAAW,wBACZ,EACb,MAAA,cAAa,QAAQ,IACnB,EAAE,IAAI,GAAI,YAAW,EAAE,QAAS,QAChC,QAAU,EAAE,aAGP,EAAE,OAIX,kBAAsB,MAAO,SAAW,aACnC,OAAO,OAAS,aAAe,MAAO,OAAS,aAC/C,MAAO,OAAS,aAWf,+BACJ,MAAI,eACK,OAAO,WAAW,KAEpB,GAAI,MAAK,CAAC,MAAM,KASnB,4CACJ,GAAI,cACF,MAAO,QAAO,KAAK,SAAQ,SAAS,UAEtC,QAAY,GAAI,YAAW,WACnB,GACR,UAAa,IAAO,IAAI,OAAQ,EAAI,EAAG,IACrC,GAAK,OAAO,aAAa,IAAI,IAE/B,MAAO,MAAK,GASR,wCACJ,GAAI,eACF,QAAY,OAAO,KAAK,IAAK,UAC7B,MAAO,KAAI,OAAO,MAAM,IAAI,WAAY,IAAI,WAAa,IAAI,YAE/D,MAAU,KAAK,aACA,GAAI,YAAW,EAAE,QAChC,UAAa,EAAG,EAAI,EAAE,OAAQ,EAAE,EAC9B,QAAO,IAAI,CAAC,EAAE,WAAW,IAAK,GAEhC,MAAO,SAAO,OASV,0CACJ,GAAI,QAAQ,SAAW,EACrB,MAAO,SAAQ,GAGjB,oBAAsB,EACtB,QAAQ,QAAQ,UACd,iBAAmB,QAAO,aAG5B,SAAa,GAAI,YAAW,wBACf,EACb,MAAA,SAAQ,QAAQ,UACd,KAAK,IAAI,GAAI,YAAW,SAAS,QACjC,QAAU,QAAO,aAEZ,KAAK,OAUR,wBACJ,cAAkB,IAElB,IADA,KAAO,KAAK,OACL,KAAK,SAAS,YACnB,KAAO,KAAK,MAAM,EAAG,KAAK,OAAS,GAErC,UAAc,KAAK,MAAM,WACzB,MAAO,OAAM,MAAM,OAAS,GAQxB,sDAEJ,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OAAM,uDAGlB,MAAO,CACL,UAAW,GAAI,MACf,kBAAmB,OACnB,mBAAoB,eAAe,eAAiB,KAChD,EACA,iBAAiB,KAAK,UAAU,eAAe,gBACnD,iBAAkB,eAAe,aAAe,KAC5C,EACA,iBAAiB,KAAK,UAAU,eAAe,cACnD,gBAAiB,eAAe,YAAc,KAC1C,EACA,eAAe,WAAW,YAUlC,sCACE,oBAAwB,IACtB,MAAQ,GAAK,KACL,EAER,KAAQ,GAAI,WAAgB,GAC1B,GAAK,QACL,IAAM,EAER,MAAA,IAAK,CAAC,QACN,GAAK,UAEE,EAAI,gBAGQ,GAAI,aAAY,MAErC,aAAa,GAAK,EAClB,UAAa,EAAG,EAAI,KAAM,IACxB,aAAa,GAAK,gBAAgB,GAEpC,UAAa,KAAM,EAAI,KAAM,IAC3B,aAAa,GAAK,UAAe,GAAI,MAAS,IAGhD,MAAO,cAST,uCACE,kBAAsB,GAAI,aAAY,IAEtC,cAAc,GAAK,EACnB,cAAc,IAAM,WACpB,cAAc,IAAM,WACpB,cAAc,IAAM,WACpB,UAAa,EAAG,EAAI,GAAI,IACtB,cAAc,GAAK,GAAK,GAE1B,UAAa,GAAI,EAAI,GAAI,IACvB,cAAc,GAAK,WAAe,GAAI,IAAO,IAG/C,MAAO,eAST,qCACE,gBAAoB,GAAI,aAAY,IAEpC,UAAa,EAAG,EAAI,GAAI,IACtB,YAAY,GAAK,KAEnB,MAAA,aAAY,GAAK,YAAY,IAAM,EAE5B,YAUH,6BAKJ,iBAAqB,2CACC,0CACF,4BAEpB,MAAO,kBACL,YAAe,GAAI,aAAY,EAAI,eAAe,yBACzB,GAAI,aAAY,SACzC,cAAiB,EAAG,MAAQ,eAAe,OAAQ,SACjD,gBAAoB,eAAe,mBAE/B,aAAa,YAAY,aAAe,IAAO,aAAc,OAC7D,cAAc,aAAe,IACjC,iBAAiB,OAAS,YAE5B,MAAO,IAAI,cAAa,UClf5B,qBAAA,MA6BE,cACE,KAAK,YAAc,GACnB,KAAK,YAAc,SAGN,eACb,MAAI,kBAAiB,UAAY,MAC/B,kBAAiB,SAAW,GAAI,mBAE3B,iBAAiB,eASnB,gCACL,iBAAiB,cAAc,YAAY,KAAK,kBAS3C,gCACL,iBAAiB,cAAc,YAAY,KAAK,kBAW3C,sBACL,MAAO,kBAAiB,YAAY,IAAK,cAWpC,kCAEL,MAAO,kBAAiB,YAAY,IAAK,OAAQ,mBAGpC,0CAGb,kBAAmC,WACnB,cAAgB,OAC5B,iBAAiB,cAAc,YAC/B,iBAAiB,cAAc,YACnC,MAAA,SAAQ,QAAQ,SACd,YAAgB,OAAO,IAAK,aACxB,UAAY,MACd,cAAc,KAAK,WAGhB,mCAIuB,YAC9B,iBAAiB,mBAAmB,+BACN,YAC9B,iBAAiB,mBAAmB,4BACT,KAC3B,iBAAiB,gBAAgB,qBAEjC,mBACI,iBAAiB,gBAAgB,IAAK,2BCtFxB,gCACG,mBAKA,+BAID,mBCexB,+BACE,GAAI,CAAC,MAAM,QAAQ,cAIjB,KAAM,IAAI,OACN,2FAIN,cAAuB,MAAO,SAAW,YAAc,KAAO,eAC9C,UAAU,WAAa,UAAU,cAC7C,UAAU,iBAAmB,UAAU,aACvC,UAAU,cACd,GAAI,SAAW,KACb,KAAM,IAAI,OACN,6DAEN,MAAO,SAGT,oCACE,OAAW,YAAY,OACvB,GAAG,kBAAkB,iBAAkB,CAAC,QAAS,cACjD,GAAG,kBAAkB,gBAAiB,CAAC,QAAS,cA1ElD,qBAAA,MAwFE,uBAGE,GAFA,KAAK,UAAY,sBAEb,WAAa,MAAQ,CAAC,UACxB,KAAM,IAAI,OACN,kEAEN,KAAK,UAAY,eAGb,sBAEJ,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,4FAIN,MAAO,MAAK,eAAe,KAAK,UAAW,qBAIvC,QACJ,MAAO,MAAK,eAAe,KAAK,WAiB1B,yCAEN,MAAO,IAAI,SAAmC,mBAC5C,gBAAoB,KAAK,UAAU,KAAK,cAAe,kBACvD,YAAY,gBAAkB,IAAM,cAAc,aAElD,YAAY,UAAY,KACtB,OAAW,YAAY,OAEvB,GAAI,gBAAkB,MAEpB,YAAgB,GAAG,YAAY,iBAAkB,uBAC9B,QAAQ,YAAY,6BACpB,WAAW,IAAI,KAAK,WACvC,WAAW,UAAY,KACrB,GAAI,WAAW,QAAU,KACvB,MAAA,IAAG,QACI,OAAO,GAAI,OACd,gCAAgC,KAAK,6BAGzC,QAAQ,WAAW,OAAO,iBAG9B,WAAW,QAAU,OACnB,IAAG,QACI,OAAO,WAAW,QAE3B,QAAQ,WAAa,IAAM,GAAG,aAG9B,uBACI,6BAA6B,uBAElB,GAAG,YAAY,gBAAiB,uBAC/B,OAAO,YAAY,gCAE/B,UAAU,IAAI,CAAC,UAAW,KAAK,UAAW,6BAE9C,eAAe,UAAY,KAEzB,QAAU,GAAG,YAAY,iBAAkB,aAC3C,eAAmB,QAAQ,YAAY,kCACf,WAAW,IAAI,CACrC,UAAW,KAAK,UAChB,eACA,qBAEF,gBAAgB,UAAY,IAAM,QAAQ,CAAC,qBAC3C,gBAAgB,QAAU,QAGxB,UAAY,OAAO,YAAY,iBAC/B,sBAA0B,UAAU,OAAO,KAAK,WAChD,kBAAkB,UAAY,IAC5B,IAAG,QACI,OAAO,gBAAgB,QAEhC,kBAAkB,QAAU,QAC1B,IAAG,QACI,OAAO,gBAAgB,UAIpC,eAAe,QAAU,OACvB,IAAG,QACI,OAAO,eAAe,QAE/B,OAAO,WAAa,KACd,SAAW,KACb,GAAG,QAEH,QAAQ,WAAa,IAAM,GAAG,WAKtC,YAAY,QAAU,OAAS,OAAO,YAAY,WAvHtC,iBAAA,WAAa,eA4HxB,oBAAkC,KAClC,MAAM,QAAQ,eAGb,CAAC,MAAM,QAAQ,MAAQ,IAAI,WAAW,iBAAiB,YAClD,iBAAiB,IAAI,MAAM,iBAAiB,WAAW,SAHzD,KASX,iBAAiB,mBAAmB,iBACpC,iBAAiB,mBAAmB,iBAmB9B,qCACJ,MAAO,IAAI,kBAAiB,WAG9B,+BACE,MAAO,KAAI,WAAW,iBAAiB,YACnC,IAAI,MAAM,iBAAiB,WAAW,QACtC,IAxPN,4BAAA,MA8PE,cACE,KAAK,UAAY,2BAGb,cACJ,MAAO,IAAI,SACP,mBACE,gBACI,KAAK,UAAU,KAAK,cAAe,kBACvC,YAAY,gBAAkB,IAAM,cAAc,aAElD,YAAY,UAAY,KACtB,OAAW,YAAY,UACZ,GAAG,YAAY,gBAAiB,kBAC7B,GAAG,YAAY,mCASF,MAAc,SACzC,kBAAkB,UAAY,KAC5B,QAAkD,GAClD,eAAmB,mBAAkB,OACnC,IAAI,KAAK,WAAa,KAAK,mBAE7B,QAAQ,MAEV,kBAAkB,QAAU,OAC1B,IAAG,QACI,OAAO,kBAAkB,QAElC,GAAG,WAAa,IAAM,GAAG,SAE3B,YAAY,QAAU,OAAS,OAAO,YAAY,cAIpD,mBACJ,MAAA,MAAO,iBAAiB,MACjB,GAAI,SAA4B,mBACrC,gBAAoB,KAAK,UAAU,KAAK,cAAe,kBACvD,YAAY,gBAAkB,IAAM,cAAc,aAElD,YAAY,UAAY,KACtB,OAAW,YAAY,cACR,GAAG,YAAY,gBAAiB,uBAC7B,OAAO,YAAY,gCAEd,UAAU,IAAI,cAErC,eAAe,UAAY,KACzB,GAAI,eAAe,QAAU,KAC3B,MAAA,IAAG,QACI,OAAO,GAAI,OACd,gCAAgC,wBAE/B,CAEL,sBAA0B,UAAU,OAAO,sBACnB,KAEtB,QAAU,GAAG,YAAY,iBAAkB,aAC3C,eAAmB,QAAQ,YAAY,qCACZ,WAAW,OAAO,MAC7C,mBAAmB,UAAY,IAC3B,QAAQ,eAAe,OAAO,oBAClC,mBAAmB,QAAU,OACzB,OAAO,eAAe,QAI5B,kBAAkB,UAAY,gBAC9B,kBAAkB,QAAU,OAC1B,mBACA,GAAG,QACI,OAAO,eAAe,UAInC,eAAe,QAAU,OACvB,IAAG,QACI,OAAO,eAAe,QAG/B,OAAO,WAAa,KACd,SAAW,KACb,GAAG,QAEH,QAAQ,WAAa,IAAM,GAAG,UAIpC,YAAY,QAAU,OAAS,OAAO,YAAY,0BCrUjC,gBACH,kCACA,6BACU,qCACF,kCACD,oCACG,iBC8B9B,4BAOE,MAAO,CACL,KAAM,CAAC,YAAa,KAAM,aAAa,KAAK,gBAC5C,SAAU,CAAC,YAAa,KAAM,uBAAuB,KAAK,gBAC1D,YAAa,CAAC,YAAa,KAAM,qBAAqB,KAAK,gBAC3D,WAAY,CAAC,YAAa,KAAM,oBAAoB,KAAK,gBACzD,cACI,CAAC,YAAa,KAAM,uBAAuB,KAAK,iBAWxD,kCACE,UAAc,IAAI,MAAM,gBACxB,GAAI,MAAM,OAAS,EACjB,KAAM,IAAI,OAAM,uBAAuB,OAEzC,MAAO,OAAM,MAAM,EAAG,MAAM,OAAS,GAAG,KAAK,gBAG/C,gCACE,MAAO,KAAI,WAAW,oBAAoB,YACtC,IAAI,MAAM,oBAAoB,WAAW,QACzC,IAhGN,wBAAA,MAuHE,uBACE,GAAI,CAAC,MAAM,QAAQ,eAAiB,MAAO,SAAW,aAClD,MAAO,QAAO,cAAiB,YAKjC,KAAM,IAAI,OACN,2DAIN,GAFA,KAAK,GAAK,OAAO,aAEb,WAAa,MAAQ,CAAC,UACxB,KAAM,IAAI,OACN,sEAEN,KAAK,UAAY,UACjB,KAAK,KAAO,aAAa,KAAK,gBAY1B,sBACJ,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,4FAEC,CACL,eAAiB,KAAK,UAAU,eAAe,2BAC3B,KAAK,UAAU,eAAe,gCAG9C,6BAA6B,gBAEjC,IACE,KAAK,GAAG,QAAQ,KAAK,KAAK,KAAM,KAAK,UAAU,qBAC/C,KAAK,GAAG,QAAQ,KAAK,KAAK,SAAU,YACpC,KAAK,GAAG,QAAQ,KAAK,KAAK,YAAa,aACvC,KAAK,GAAG,QACJ,KAAK,KAAK,WACV,0BAA0B,eAAe,aAC7C,WAA+B,CAC7B,OAAQ,eAAe,OACvB,YAAa,eAAe,YAC5B,YAAa,eAAe,aAE9B,MAAI,gBAAe,WAAa,MAC9B,QAAO,UAAY,eAAe,WAEhC,eAAe,qBAAuB,MACxC,QAAO,oBAAsB,eAAe,qBAE1C,eAAe,kBAAoB,MACrC,QAAO,iBAAmB,eAAe,kBAE3C,KAAK,GAAG,QAAQ,KAAK,KAAK,cAAe,KAAK,UAAU,SAEjD,CAAC,+BAGR,KAAA,MAAK,GAAG,WAAW,KAAK,KAAK,MAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,UAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,aAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,YAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,eAEvB,GAAI,OACN,yBAAyB,KAAK,kHAER,mBAAmB,wCACrB,mBAAmB,qCACpB,mBAAmB,2BAa1C,QACJ,SACI,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,OACzC,GAAI,MAAQ,KACV,KAAM,IAAI,OACN,kDAAkD,KAAK,cAG7D,GAAI,KAAK,oBAAsB,OAC7B,KAAM,IAAI,OACN,6EAIN,QAA4B,cAGX,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,WACtD,GAAI,YAAY,KACd,KAAM,IAAI,OACN,4CAA4C,KAAK,0BAGvD,IAAI,cAAgB,WAGpB,gBAAoB,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,cACzD,GAAI,aAAe,KACjB,KAAM,IAAI,OACN,gDAAgD,KAAK,2BAG3D,IAAI,YAAc,YAGlB,mBAAuB,KAAK,GAAG,QAAQ,KAAK,KAAK,eACjD,GAAI,gBAAkB,MACpB,aAAiB,KAAK,MAAM,gBAC5B,IAAI,OAAS,SAAS,OACtB,IAAI,YAAc,SAAS,YAC3B,IAAI,YAAc,SAAS,YACvB,SAAS,WAAgB,MAC3B,KAAI,UAAY,SAAS,WAEvB,SAAS,qBAA0B,MACrC,KAAI,oBAAsB,SAAS,qBAEjC,SAAS,kBAAuB,MAClC,KAAI,iBAAmB,SAAS,kBAKpC,qBAAyB,KAAK,GAAG,QAAQ,KAAK,KAAK,YACnD,GAAI,kBAAoB,KACtB,KAAM,IAAI,OACN,wDACI,KAAK,2BAEf,MAAA,KAAI,WAAa,0BAA0B,kBAEpC,MA1JO,oBAAA,WAAa,kBA8JxB,uBAAqC,KACrC,MAAM,QAAQ,eAGb,CAAC,MAAM,QAAQ,MAAQ,IAAI,WAAW,oBAAoB,YACrD,oBACH,IAAI,MAAM,oBAAoB,WAAW,SAJxC,KAUX,iBAAiB,mBAAmB,oBACpC,iBAAiB,mBAAmB,oBA0B9B,wCACJ,MAAO,IAAI,qBAAoB,WA3TjC,+BAAA,MAiUE,cACE,OACI,MAAM,QAAQ,cACd,IAAM,4CACV,OACI,MAAO,SAAW,aACd,MAAO,QAAO,cAAiB,YACnC,IAAM,2DACV,KAAK,GAAK,OAAO,kBAGb,cACJ,QAAkD,UACnC,YAAc,sBACd,eAAiB,YAChC,UAAa,EAAG,EAAI,KAAK,GAAG,OAAQ,EAAE,GACpC,QAAY,KAAK,GAAG,IAAI,GACxB,GAAI,IAAI,WAAW,SAAW,IAAI,SAAS,SACzC,cAAkB,oBAAoB,KACtC,IAAI,WAAa,KAAK,MAAM,KAAK,GAAG,QAAQ,OAGhD,MAAO,UAGH,mBACJ,KAAO,kBAAiB,MACxB,SAAa,aAAa,MAC1B,GAAI,KAAK,GAAG,QAAQ,KAAK,OAAS,KAChC,KAAM,IAAI,OAAM,8BAA8B,SAEhD,SAAa,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,OAE7C,MAAA,MAAK,GAAG,WAAW,KAAK,MACxB,KAAK,GAAG,WAAW,KAAK,UACxB,KAAK,GAAG,WAAW,KAAK,aACxB,KAAK,GAAG,WAAW,KAAK,YACjB,yBCrUe,gCAjC1B,MAyCE,cACE,KAAK,SAAW,SAGH,eACb,MAAI,2BAA0B,UAAY,MACxC,2BAA0B,SAAW,GAAI,4BAEpC,0BAA0B,eAS5B,iCACL,OAAO,QAAU,KAAM,IAAM,yCACzB,OAAO,SAAS,oBAClB,QAAS,OAAO,MAAM,EAAG,OAAO,QAAQ,qBAE1C,OAAO,OAAO,OAAS,EAAG,IAAM,uCAChC,aAAiB,0BAA0B,cAC3C,OACI,SAAS,SAAS,SAAW,KAC7B,IAAM,2DACF,YACR,SAAS,SAAS,QAAU,cAGvB,oBACL,YAAgB,KAAK,cAAc,SAAS,QAC5C,GAAI,SAAW,KACb,KAAM,IAAI,OAAM,yCAAyC,WAE3D,MAAO,eAGF,cACL,MAAO,QAAO,KAAK,KAAK,cAAc,YAY1C,uBACE,GAAI,IAAI,QAAQ,qBAAuB,GACrC,KAAM,IAAI,OACN,6EAEG,0BAA0B,aAAa,KAAK,QAErD,MAAO,CACL,OAAQ,IAAI,MAAM,mBAAmB,GACrC,KAAM,IAAI,MAAM,mBAAmB,IAIvC,iEAEmB,IACjB,OACI,YAAc,QACd,IAAM,wCAAwC,cAElD,iBAAqB,iBAAiB,gBAAgB,WACtD,OACI,aAAa,OAAS,EACtB,IAAM,kEACF,cACR,OACI,aAAa,OAAS,EACtB,IAAM,yCAAyC,aAAa,wCACxB,cACxC,gBAAoB,aAAa,gBAEZ,iBAAiB,gBAAgB,SACtD,OACI,aAAa,OAAS,EACtB,IAAM,uEACK,YACf,OACI,aAAa,OAAS,EACtB,IAAM,yCAAyC,aAAa,6CACnB,YAC7C,gBAAoB,aAAa,gBAEZ,SAAS,WAAW,kBACtB,SAAS,WAAW,gBACpB,eAAiB,SAAS,WAAW,sBAEjC,KAAM,aAAY,OAKrC,cAAgB,YAClB,KAAM,2BAA0B,WAAW,cACtC,YAAY,YAGnB,eAAmB,KAAM,aAAY,KAAK,gBAK1C,MAAI,eAAgB,CAAC,YACnB,KAAM,2BAA0B,WAAW,cACtC,YAAY,YAGZ,WAAW,mBAsCpB,4BACE,YAAgB,0BAA0B,iBACO,GACjD,iBAAqB,UACnB,cACI,KAAM,2BAA0B,WAAW,QAAQ,aACvD,eAAmB,YACjB,QAAY,OAAS,kBAAoB,KACzC,IAAI,KAAO,UAAU,OAGzB,MAAO,KAoCT,gCACE,kBAAsB,SAAS,aACf,0BAA0B,WAAW,cAAc,QACnE,MAAO,SAAQ,YAAY,cAAc,MAkD3C,4CAEE,iBAAqB,GACrB,MAAO,oBAAmB,UAAW,QAAS,cAiDhD,4CAEE,iBAAqB,GACrB,MAAO,oBAAmB,UAAW,QAAS,cChWhD,oBAAA,MA+BE,kBACE,MAAO,OAAM,KAAM,OAGrB,MACE,MAAO,aAAY,MAGrB,sBACE,GAAI,WAAa,SAAW,WAAa,OACvC,KAAM,IAAI,OACN,kDAAkD,YAExD,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAAI,cAElB,KAAK,YAAY,OAAO,MAEjC,uBACE,MAAO,IAAI,aAAY,UAAU,OAAO,SAI5C,GAAI,MAAM,IAAI,eACZ,MAAM,YAAY,UAAW,GAAI,kBAGjC,IACE,0BAA0B,gBACtB,oBAAoB,WAAY,GAAI,yCAK1C,IACE,0BAA0B,gBACtB,iBAAiB,WAAY,GAAI,uCC9ClC,iBAAqB,CAE1B,YAAa,IAAc,4CCvB7B,MA6CE,cAEE,KAAK,KAAe,gBAGpB,KAAK,YAAc,GAAI,MAAK,KAAK,YAGnC,yBACE,MAAI,OAAM,OAAO,OAAS,KACjB,MAAM,OAAO,MAAM,KAAM,cAG9B,cAAe,MACjB,aAAc,aAAa,eAEtB,YAAY,KAAM,eAG3B,MACE,UAAa,QAAQ,SACrB,MAAO,OAAK,GAAK,IAAO,MAAK,GAAK,IAGpC,sBACE,GAAI,WAAa,SAAW,WAAa,OACvC,KAAM,IAAI,OACN,sDAAsD,YAE5D,MAAO,MAAK,YAAY,OAAO,MAEjC,uBACE,MAAI,OAAM,SAAW,EACZ,GAEF,GAAI,MAAK,KAAK,YAAY,UAAU,OAAO,SAIlD,MAAM,IAAI,YACZ,MAAM,YAAY,OAAQ,GAAI,eCtC1B,4BAC6B,kBAEjC,MAAA,OAAQ,OAAS,UACZ,mCAAmC,OACjC,GAAI,cAAmB,MAAO,MAAO,QCb9C,wBACE,OAAW,gBAAgB,EAAG,IAAK,QAGnC,GAAI,CAAM,aAAa,OACrB,KAAM,IAAI,OAAM,mCAAmC,SAErD,GAAI,QAAU,UAAY,GAAG,QAAU,UACnC,QAAU,UAAY,GAAG,QAAU,SACrC,KAAM,IAAI,OAAM,yCAGlB,WAA2B,CAAC,EAAG,UACN,CAAC,OAE1B,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,SAAa,GAAG,CAAC,QClBxB,mBACE,OAAW,gBAAgB,EAAG,IAAK,QAAS,aACb,CAAC,EAAG,IAInC,MAAO,QAAO,UAAU,SAAU,QAG7B,UAAc,GAAG,CAAC,SCjBnB,0BAAkD,IACtD,QAAQ,IAAI,EAAE,SAAS,UCZzB,kBAcA,eAA6B,CAC3B,OACA,KACA,MACA,MAAA,QAEF,aAAa,YCzCb,eAAA,GAAA,UAAA,WAAA,CAAA,aAAA,IAAA,aAAA,mBAAA,IAAA,mBAAA,wBAAA,IAAA,wBAAA,UAAA,IAAA,UAAA,cAAA,IAAA,cAAA,cAAA,IAAA,cAAA,WAAA,IAAA,WAAA,gBAAA,IAAA,gBAAA,6BAAA,IAAA,6BAAA,gBAAA,IAAA,gBAAA,KAAA,IAAA,KAAA,aAAA,IAAA,aAAA,WAAA,IAAA,WAAA,YAAA,IAAA,YAAA,UAAA,IAAA,UAAA,mBAAA,IAAA,mBAAA,mBAAA,IAAA,mBAAA,YAAA,IAAA,YAAA,qBAAA,IAAA,qBAAA,gBAAA,IAAA,kBC6BA,6BAAiC,oCACG,2CACO,eAE3C,kBACE,MAAO,IAAI,SAAQ,SAAW,WAAW,UAAU,KAAK,GAlC1D,qBAAA,MA6CE,4BACE,GAAI,CAAC,MAAM,QAAQ,cAGjB,KAAM,IAAI,OACN,uFAIF,eAAe,WAAW,iBAAiB,aAC7C,gBAAiB,eAAe,MAAM,iBAAiB,WAAW,SAEhE,iBAAkB,MAAQ,eAAe,SAAW,IACtD,gBAAiB,0BAGnB,KAAK,sBAAwB,eAAiB,4BAC9C,KAAK,mBACD,eAAiB,wCAGjB,sBACJ,GAAI,MAAQ,WAAc,YACxB,KAAM,IAAI,OACN,2FAGN,eAAmB,OAAO,IAAI,gBAAgB,GAAI,MAC9C,CAAC,eAAe,YAAa,CAAC,KAAM,8BAExC,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,yFAEC,CACL,oBAA+C,CAAC,CAC9C,MAAO,CAAC,KAAO,KAAK,oBACpB,QAAS,eAAe,6CAEwB,CAChD,cAAe,eAAe,cAC9B,OAAQ,eAAe,OACvB,YAAa,eAAe,YAC5B,YAAa,eAAe,YAC5B,iBAEE,eAAe,WAAa,MAC9B,gCAA+B,UAAY,eAAe,WAExD,eAAe,qBAAuB,MACxC,gCAA+B,oBAC3B,eAAe,qBAEjB,eAAe,kBAAoB,MACrC,gCAA+B,iBAC3B,eAAe,kBAErB,sCACI,OAAO,IAAI,gBAAgB,GAAI,MAC3B,CAAC,KAAK,UAAU,iCAChB,CAAC,KAAM,iCAII,KAAK,YAAc,KAAO,SAAS,cAAc,KACvB,KAAK,WAQlD,GAPA,WAAW,SAAW,KAAK,sBAC3B,WAAW,KAAO,kCAIlB,KAAM,OAAM,IAAM,WAAW,cAAc,GAAI,YAAW,WAEtD,eAAe,YAAc,MAC/B,qBAAyB,KAAK,kBAAoB,KAC9C,SAAS,cAAc,KACvB,KAAK,iBACT,iBAAiB,SAAW,KAAK,mBACjC,iBAAiB,KAAO,WACxB,KAAM,OACF,IAAM,iBAAiB,cAAc,GAAI,YAAW,WAG1D,MAAO,CAAC,mBAAoB,6BAA6B,oBArF7C,iBAAA,WAAa,eA3C/B,iBAAA,MAwIE,mBACE,GAAI,OAAS,MAAQ,MAAM,OAAS,EAClC,KAAM,IAAI,OACN,wEACgB,SAEtB,KAAK,MAAQ,WAGT,QACJ,aAAiB,KAAK,MAAM,eACR,KAAK,MAAM,MAAM,GAErC,MAAO,IAAI,SAAwB,mBACjC,eAAmB,GAAI,YACvB,WAAW,OAAS,QAElB,cAAkB,KAAK,MAAO,MAAM,OAAe,sBAC7B,UAAU,cAChC,GAAI,eAAiB,MACnB,OAAO,GAAI,OACP,4CAA4C,SAAS,SACzD,OAGE,YAAY,SAAW,GACzB,QAAQ,CAAC,gBAGX,oBAAwB,UAAU,gBAClC,GAAI,iBAAmB,MACrB,OAAO,GAAI,OACP,6CAA6C,SAAS,SAC1D,OAGF,eACA,IACE,WACI,KAAK,4BAA4B,gBAAiB,wBAEtD,OAAO,KACP,OAGF,gBAA4C,SACpB,kBACc,GACtC,gBAAgB,QAAQ,eACtB,aAAa,MAAM,QAAQ,OACzB,MAAM,KAAK,MACX,eAAe,KAAK,QAEtB,YAAY,KAAK,GAAG,aAAa,WAGnC,gBAAgB,QAAQ,eACtB,aAAa,MAAM,QAAQ,OACzB,qBAAyB,GAAI,YAC7B,iBAAiB,OAAS,SAExB,eAAoB,OAAM,OAAe,aAC3B,MAAM,QAAQ,MAE5B,GADA,eAAe,OAAS,WACpB,eAAe,QAAQ,QAAU,IACnC,WAA+B,CAC7B,cACA,YACA,WAAY,wBAAwB,gBACpC,OAAQ,UAAU,OAClB,YAAa,UAAU,YACvB,YAAa,UAAU,aAErB,UAAU,WAAa,MACzB,QAAO,UAAY,UAAU,WAE3B,UAAU,qBAAuB,MACnC,QAAO,oBAAsB,UAAU,qBAErC,UAAU,kBAAoB,MAChC,QAAO,iBAAmB,UAAU,kBAEtC,QAAQ,UAGZ,iBAAiB,QAAU,OACvB,OAAO,6CAA6C,UACxD,iBAAiB,kBAAkB,WAAW,YAIpD,WAAW,QAAU,OAAS,OAC1B,sEACc,SAAS,6EAE3B,WAAW,WAAW,YAOlB,4CAEN,cAA4B,aACV,MAAM,IAAI,MAAQ,SAAS,KAAK,kBACP,GAC3C,gBAAoB,UAClB,MAAM,MAAM,QAAQ,OAClB,iBAAqB,SAAS,MAC9B,GAAI,UAAU,QAAQ,gBAAkB,GACtC,KAAM,IAAI,OACN,uDACI,iBAGV,GADA,UAAU,KAAK,cACX,UAAU,QAAQ,gBAAkB,GACtC,KAAM,IAAI,OACN,8BAA8B,kCAElC,WAAW,MAAQ,MAAM,UAAU,QAAQ,iBAKjD,GAAI,UAAU,SAAW,MAAM,OAC7B,KAAM,IAAI,OACN,wDACI,UAAU,oDACV,MAAM,YAEhB,MAAO,qCAIqC,KACzC,MAAM,QAAQ,eAGb,CAAC,MAAM,QAAQ,MAAQ,IAAI,WAAW,iBAAiB,YAClD,iBAAiB,IAAI,MAAM,iBAAiB,WAAW,SAHzD,KASX,iBAAiB,mBAAmB,wBAyC9B,yCAA4C,SAChD,MAAO,IAAI,kBAAiB,gBA2CxB,6BACJ,MAAO,IAAI,cAAa,OCnVpB,gFAGJ,cAAc,UACd,cAAgB,eAAiB,KAAO,EAAI,cAC5C,YAAc,aAAe,KAAO,EAAI,YACxC,cAAc,cAAe,aAC7B,oBAAsB,kBAEE,SACtB,SAAQ,KAAK,QACX,aAAiB,cACb,GAAE,gBAAkB,SAAS,OAAU,aAAc,eAEzD,MAAA,YAAW,UACJ,QAEF,SAGT,kCACE,OACI,WAAY,MAAQ,MAAM,QAAQ,YAAa,UAAS,OAAS,EACjE,IAAM,uCAGZ,oDACE,OACI,gBAAiB,GAAK,gBAAiB,EACvC,IAAM,oEACmB,kBAC7B,OACI,cAAe,GAAK,cAAe,EACnC,IAAM,kEACiB,gBAC3B,OACI,cAAe,eACf,IAAM,yEACmB,kCAClB,gBAGb,MAAO,SAAQ,IAAI,SAAS,IAAI,kBCnClC,+DAEM,aAAe,MACjB,aAAc,IAGhB,cAAkB,YAAY,WAAa,KAAO,MAAM,SAAS,MACf,YAAY,mBAG7C,UAAU,IACvB,UACI,UAAU,SAAU,YAAY,YAAa,CAAC,SAAU,yBAErC,mBACF,aAEP,YAAY,YAAc,KACxC,KAAM,SAAQ,IAAI,UAClB,KAAM,yBACF,SAAU,YAAY,WAAY,mBAClC,iCAEe,UAAU,IAAI,UAAY,SAAS,mCAE9B,qBACF,UAEV,YAAY,YAAc,KACtC,KAAM,SAAQ,IAAI,gBAClB,KAAM,yBACF,eAAgB,YAAY,WAAY,oBACxC,mBACR,MAAO,SAYT,mDACsD,4BASpD,iBAAqB,WACjB,yBAAyB,UAAW,CAAC,2BACrB,qBAAqB,cAEzC,MAAO,cAAY,SAAU,eAAgB,aA2BzC,oDAIJ,MAAO,+BACsD,kBAI3D,2BAA+B,SAAS,IAAI,IAAM,wBAM9C,gBAEA,aAAe,KAAO,YAAY,IAAI,IAAM,IAAS,0BAChB,GAwCzC,GAvCA,SAAS,QAAQ,mCACf,gBAAkB,EAClB,oBAAoB,QAAQ,QAAQ,eAClC,aAAkB,gBAAkB,cAChC,aAAa,aAAa,MAC1B,aAAa,mBAEI,qBAAqB,UACjC,cAAc,aAAa,mCAEA,KAClC,uBAAuB,YAAc,GACjC,oBAAoB,aAAe,MACrC,qBAAoB,YAAc,IAGpC,oBAAoB,YAAY,KAAK,CACnC,cAAe,aACf,YACA,UAAW,gBAIX,aAAe,KACjB,YAAY,QAAQ,2BACd,aAAe,aAAa,MAC9B,+BACA,aAAa,aAAe,MAIhC,8BAGF,uBAAuB,KAAK,aAAa,MACzC,aAAe,iBAIf,CAAC,aAAa,MAAM,OAAS,QAC/B,oBAAwB,YAAY,OAAO,OAAU,CAAC,aAAa,IACnE,KAAM,IAAI,OACN,kDACG,gBAAgB,KAAK;wCAErB,uBAAuB,KAAK,UAKrC,wBACI,uBAAuB,OAAO,6BACxB,cACF,YAAY,KAAK,GAEZ,aACN,cAEqB,GAC5B,oBAAoB,QAAQ,IAC1B,SAAS,GAAG,MAAM,QAAQ,WACxB,aAAiB,eACX,gBAAe,SAAS,KAAa,GAAN,KAAY,SACjD,UAAU,KAAK,cAGnB,YAAgB,KAAM,sBAAqB,4BAEF,qBACjB,EACxB,MAAA,qBAAoB,QAAQ,IAC1B,eAAmB,SAAS,GAAG,MAAM,kBAEpB,EACjB,WAAa,EAAG,GAAI,WAAY,KAC9B,YAAc,QAAQ,kBAAoB,IAAG,WAI/C,gBAAoB,GAAI,aAAY,4BACZ,GAAI,YAAW,+BACf,EACxB,WAAa,EAAG,GAAI,WAAY,MAC9B,YAAe,GAAI,YAAW,QAAQ,kBAAoB,KAC1D,gBAAgB,IAAI,QAAQ,mBAC5B,mBAAqB,QAAO,WAG9B,mBAAuB,oBAAoB,GAC3C,eAAe,QAAQ,eACrB,eAAmB,YAAY,MAC3B,aAAa,YACb,aAAa,YAAc,aAAa,2BAExC,cAAc,WAAY,CAAC,aAAa,gBAC5C,eAAmB,iBACjB,iBAAiB,MAAQ,gBAAgB,QAI7C,mBAAqB,aAGhB,kBCrNX,2BAA+B,qCACb,+BAhClB,MA+CE,8BAgCE,GAvCO,KAAA,eAAiB,OAQpB,aAAe,MACjB,aAAc,IAEhB,KAAK,iBAAmB,YAAY,iBACpC,KAAK,WAAa,YAAY,WAC9B,KAAK,mBAAqB,YAAY,mBAElC,YAAY,WAAa,KAC3B,QACI,MAAO,aAAY,WAAc,WACjC,IAAM,+HAGV,KAAK,MAAQ,YAAY,WAEzB,KAAK,MAAQ,MAAM,SAAS,MAG9B,OACI,MAAQ,MAAQ,KAAK,OAAS,EAC9B,IAAM,2DAGN,MAAM,QAAQ,OAChB,OACI,KAAK,SAAW,EAChB,IAAM,iEACmB,KAAK,YAEpC,KAAK,KAAO,KAER,YAAY,aAAe,MAC3B,YAAY,YAAY,MAAQ,KAClC,KAAM,IAAI,OACN,sEAEN,KAAK,YAAc,YAAY,aAAe,QAG1C,sBACJ,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,2FAIN,UAAa,OAAO,OAAO,CAAC,OAAQ,KAAK,gBAAiB,KAAK,aAC/D,MAAK,KAAO,GAAI,UAEhB,oBAA+C,CAAC,CAC9C,MAAO,CAAC,uBACR,QAAS,eAAe,6CAEwB,CAChD,cAAe,eAAe,cAC9B,OAAQ,eAAe,OACvB,YAAa,eAAe,YAC5B,YAAa,eAAe,YAC5B,iBAEE,eAAe,WAAa,MAC9B,gCAA+B,UAAY,eAAe,WAExD,eAAe,qBAAuB,MACxC,gCAA+B,oBAC3B,eAAe,qBAEjB,eAAe,kBAAoB,MACrC,gCAA+B,iBAC3B,eAAe,kBAGrB,MAAK,KAAK,OACN,aACA,GAAI,MACA,CAAC,KAAK,UAAU,iCAChB,CAAC,KAAM,YACX,cAEA,eAAe,YAAc,MAC/B,MAAK,KAAK,OACN,oBACA,GAAI,MAAK,CAAC,eAAe,YAAa,CAAC,KAAM,yBAC7C,qBAGN,aAAiB,KAAM,MAAK,MAAM,KAAK,KAAM,OAE7C,GAAI,SAAS,GACX,MAAO,CACL,mBAAoB,6BAA6B,gBACjD,UAAW,CAAC,WAGd,KAAM,IAAI,OACN,gEACG,SAAS,gBAYd,QACJ,uBAA2B,KAAM,MAAK,MAAM,KAAK,KAAM,KAAK,aAE5D,GAAI,CAAC,mBAAmB,GACtB,KAAM,IAAI,OACN,cAAc,KAAK,gCAChB,mBAAmB,iFAG5B,gBACA,IACE,YAAc,KAAM,oBAAmB,gBAEvC,YAAc,+CAA+C,KAAK,QAGlE,KAAI,MAAK,KAAK,SAAS,OACrB,SAAW,+UAOX,SAAW,uEAGP,GAAI,OAAM,SAElB,kBAAsB,YAAY,8BACV,YAAY,4BAChB,YAAY,wBACZ,YAAY,mBACjB,YAAY,iBACT,YAAY,8BACF,YAAY,oBAGxC,GAAI,eAAiB,MAAQ,iBAAmB,KAC9C,KAAM,IAAI,OACN,2BAA2B,KAAK,iEAItC,2BAEA,GAAI,iBAAmB,MACrB,YAAgB,KAAM,MAAK,YAAY,iBACvC,CAAC,YAAa,YAAc,QAG9B,cAAkC,CAChC,cACA,YACA,WACA,YACA,YACA,QAGE,WAAa,MACf,WAAU,UAAY,WAEpB,qBAAuB,MACzB,WAAU,oBAAsB,qBAGlC,gBAAoB,YAAY,iBAChC,MAAI,cACF,WAAU,iBAAmB,aAGxB,eAGK,8BAEZ,eAAmB,MAAM,QAAQ,KAAK,MAAQ,KAAK,KAAK,GAAK,KAAK,qBACzC,SAAS,uBACf,KAAK,kBAAoB,mBAExB,GACpB,gBAAoB,iBAClB,YAAY,KAAK,GAAG,MAAM,SAG5B,cAA4B,eACgB,GAC5C,uBAA2B,iBACzB,eAAmB,cAAa,MAC1B,KAAK,oBAAsB,KAC7B,YAAY,KAAK,KAAK,mBAAmB,OAEzC,UAAU,KAAK,WAAa,KAAO,QAKrC,KAAK,oBACP,UAAU,KAAK,GAAG,KAAM,SAAQ,IAAI,cAGtC,YAAgB,KAAM,0BAAyB,UAAW,CACxD,YAAa,KAAK,YAClB,UAAW,KAAK,MAChB,WAAY,KAAK,aAEnB,MAAO,CAAC,YAAa,wBAAwB,YA7N/B,YAAA,iBAAmB,eA4O/B,uBACJ,cAAkB,IAAI,YAAY,qBACV,IAAI,YAAY,YACzB,IAAI,UAAU,EAAG,kBAE5B,gBAAkB,UAAY,IAAI,UAAU,iBAAmB,GACnE,MAAO,CAAC,OAAS,IAAK,QAGlB,2BACJ,MAAO,KAAI,MAAM,YAAY,mBAAqB,KAG7C,eACH,oBACE,GAAI,MAAO,QAAU,aAChB,cAAe,MAAQ,YAAY,WAAa,MAInD,MAAO,MACF,CACL,WAAa,GAMb,GALI,MAAM,QAAQ,KAChB,OAAS,IAAI,MAAM,SAAW,aAAa,UAE3C,OAAS,aAAa,KAEpB,OACF,MAAO,MAAK,IAAK,aAGrB,MAAO,OAEb,iBAAiB,mBAAmB,YACpC,iBAAiB,mBAAmB,YAwE9B,gCACJ,MAAO,IAAI,aAAY,KAAM,aAQzB,8CAEJ,MAAO,MAAK,KAAM,aC5YpB,sBAAA,MAwBE,4BAA6B,KAAA,eAAA,oBAEvB,QACJ,MAAO,MAAK,kCA3BhB,MAgCE,yBACqB,KAAA,YAAA,iBAGf,sBACJ,MAAO,MAAK,YAAY,kBAyBtB,0EAGJ,GAAI,UAAU,SAAW,GACvB,qBACK,eAAkC,eAAiB,MACnD,eAAkC,aAAe,KACtD,MAAI,kBACK,GAAI,mBAAkB,gBAI7B,SAAQ,KACJ,yNAIG,GAAI,mBAAkB,CAAC,cAAe,sBAK/C,OAAA,SAAQ,KACJ,yNAIG,GAAI,mBAAkB,CAC3B,cAAe,eACf,YACA,WACA,iBAoBA,sCAGJ,MAAO,IAAI,kBAAiB,aEpH9B,iBAAA,GAAA,UAAA,aAAA,CAAA,gBAAA,IAAA,kBC2CA,gCAC6D,cAC5C,IACf,OAAS,gBAAgB,EAAG,IAAK,aACxB,gBAAgB,EAAG,IAAK,UACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAAkC,CAAC,EAAG,GAAI,EAAG,UACb,CAAC,WAAY,YAE7C,MAAO,QAAO,UACV,YAAa,OAAgC,OAG5C,WAAe,GAAG,CAAC,UCX1B,uCACyD,WAC1C,GACb,GAAI,MAAQ,EACV,KAAM,IAAI,OAAM,iDAAiD,SAEnE,aAAiB,gBAAgB,QAAS,UAAW,SAAU,gBAElC,CAAC,QAAS,gBACZ,CAAC,MAAO,QAAS,UAE5C,MAAO,QAAO,UACV,OAAQ,OACR,OAGC,WAAe,GAAG,CAAC,UCf1B,4BACE,OAAW,gBAAgB,EAAG,IAAK,aAgBnC,GAdI,MAAQ,MACV,MAAO,GAAG,MAAM,IAAI,OAAU,GAAG,WAE9B,OACD,GAAG,OAAS,KAAK,OACjB,IAAM,qCAAqC,GAAG,kCACb,SACrC,KAAK,QAAQ,OACN,OACD,MAAQ,GAAK,KAAO,GAAG,KACvB,IAAM,+CAA+C,GAAG,KAAO,aAC/C,UAGlB,GAAG,MAAQ,EACb,MAAO,IAAG,QAGZ,WAAgC,CAAC,EAAG,UACN,CAAC,MAE/B,MAAO,QAAO,UACV,UAAW,OAAgC,OAG1C,cAAkB,GAAG,CAAC,aClBvB,yDAGJ,YAAgB,gBAAgB,OAAQ,SAAU,gCAE9C,gBAAgB,YAAa,cAAe,mBAE3C,OACD,YAAc,MAAQ,WAAa,GAAK,OAAO,UAAU,YACzD,IAAM,+DACS,cACd,OACD,QAAQ,OAAS,EACjB,IAAM,gDAAgD,QAAQ,QAC7D,OACD,aAAa,OAAS,EACtB,IAAM,qDACS,aAAa,QAC3B,OACD,QAAQ,MAAM,KAAO,aAAa,MAAM,GACxC,IAAM,uCACC,QAAQ,MAAM,UAAU,aAAa,MAAM,uEAEjD,OACD,WAAa,GAAK,OAAO,UAAU,YACnC,IAAM,4DACC,cAIX,iBAAqB,OAAO,KAAK,QAAS,SAAU,8BAEhD,OAAO,KAAK,aAAc,SAAU,0BACR,UAAU,sBAChB,OAAO,cAAe,mBAChD,MAAO,MAAK,QAAS,SAGhB,oBAAwB,GAAG,CAAC,mCE/FnC,GAAA,UAAA,gBAAA,CAAA,WAAA,IAAA,WAAA,SAAA,IAAA,WC+CM,sCAIJ,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,mDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,oEAEN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,YAAW,OAAQ,MAAO,cAAe,OCnClD,wBAyBA,wCAGkB,GAEhB,GAAI,YAAc,EAChB,KAAM,IAAI,OACN,kEAEN,GAAI,QAAU,KACZ,KAAM,IAAI,OAAM,4DAElB,gBAAkB,eACA,WACJ,WACA,gBACK,GACnB,GAAK,OAAqB,eAAgB,YACxC,YAAc,WAEZ,MAAQ,YAAe,aAAe,iBAAkB,WAC1D,YAAc,WAEZ,MAAQ,mBAAsB,aAC9B,iBAAkB,kBACpB,QAAU,WAER,MAAQ,mBAAsB,aAC9B,iBAAkB,kBACpB,QAAU,WAEA,OAAe,YAAc,KACvC,aAAe,OAEf,MAAM,IAAI,OACN,qPAIY,OAAc,YAAY,QAE5C,GAAI,SACF,kCAAsC,EACtC,GAAI,SACC,OAA4B,WACzB,8BACN,KAAM,IAAI,OACN,yGAMR,WAAe,UAAU,WAAY,OAAO,aAC5C,GAAI,QAAU,MACZ,WAAiC,CAAC,cACH,CAAC,aAChC,MAAO,QAAO,UACV,WAAY,OACZ,OAGN,kBAAwB,QACpB,CACG,OAA4B,WAC5B,OAA4B,aAE/B,CAAC,OAAO,MAAO,OAAO,aAGtB,aACF,KAEK,OAAe,WAAW,MAAM,aAAa,EAAG,EAAG,MAAO,QAAQ,KAC9D,aAAe,YACxB,KAAQ,OAAiC,KAChC,UAAW,UAChB,sBAAuB,MACzB,qBAAsB,SAAS,cAAc,UAAU,WAAW,OAEpE,oBAAoB,OAAO,MAAQ,MACnC,oBAAoB,OAAO,OAAS,OACpC,oBAAoB,UAChB,OAA4B,EAAG,EAAG,MAAO,QAC7C,KAAO,oBAAoB,aAAa,EAAG,EAAG,MAAO,QAAQ,MAE/D,WACA,GAAI,cAAgB,EAClB,OAAS,GAAI,YAAW,WAExB,cAAkB,MAAQ,OAC1B,OAAS,GAAI,YAAW,UAAY,aACpC,UAAa,EAAG,EAAI,UAAW,IAC7B,gBAAmB,EAAG,QAAU,YAAa,EAAE,QAC7C,OAAO,EAAI,YAAc,SAAW,KAAK,EAAI,EAAI,SAIvD,aAA2C,CAAC,OAAQ,MAAO,aAC3D,MAAO,UAAS,OAAQ,SAAU,SAsBpC,oCAGE,SAAW,gBAAgB,IAAK,MAAO,YACvC,GAAI,CAAE,eAAe,UAEnB,sBAA0B,KAC1B,KAAO,KAAK,kBAAmB,SAC/B,kBAAkB,UAEpB,GAAI,KAAK,OAAS,GAAK,KAAK,OAAS,EACnC,KAAM,IAAI,OACN,wDAAwD,KAAK,SAEnE,kBAAwB,KAAK,MAAM,MAAM,EAAG,SAC9B,KAAK,OAAS,EAAI,EAAI,KAAK,MAAM,GAE/C,GAAI,MAAQ,GAAK,QAAU,EACzB,KAAM,IAAI,OACN,0DACqB,SAG3B,GAAI,KAAK,QAAU,WAAa,KAAK,QAAU,QAC7C,KAAM,IAAI,OACN,kCAAkC,KAAK,+CAI7C,SAAa,KAAM,MAAK,kBACL,KAAK,QAAU,UAAY,IAAM,QACtC,GAAI,mBAAkB,MAAQ,OAAS,GAErD,UAAa,EAAG,EAAI,OAAS,MAAO,EAAE,GACpC,SAAa,CAAC,EAAG,EAAG,EAAG,KAEvB,UAAa,EAAG,EAAI,MAAO,KACzB,UAAc,KAAK,EAAI,MAAQ,GAE/B,GAAI,KAAK,QAAU,WACjB,GAAI,MAAQ,GAAK,MAAQ,EACvB,KAAM,IAAI,OACN,mFACiC,kBAE9B,KAAK,QAAU,SACpB,OAAQ,GAAK,MAAQ,KACvB,KAAM,IAAI,OACN,mFACmC,UAIvC,QAAU,EACZ,MAAK,GAAK,MAAQ,WAClB,KAAK,GAAK,MAAQ,WAClB,KAAK,GAAK,MAAQ,YAElB,KAAK,GAAK,MAAQ,WAItB,MAAU,EAAI,EACd,MAAM,EAAI,GAAK,KAAK,MAAM,KAAK,IAC/B,MAAM,EAAI,GAAK,KAAK,MAAM,KAAK,IAC/B,MAAM,EAAI,GAAK,KAAK,MAAM,KAAK,IAC/B,MAAM,EAAI,GAAK,KAAK,MAAM,KAAK,IAGjC,GAAI,QAAU,MACZ,OAAO,MAAQ,MACf,OAAO,OAAS,OAChB,QAAY,OAAO,WAAW,gBACZ,GAAI,WAAU,MAAO,MAAO,QAC9C,IAAI,aAAa,UAAW,EAAG,GAEjC,MAAI,QAAS,KACX,KAAK,UAEA,MAGF,eAAmB,GAAG,CAAC,qCChP9B,GAAA,UAAA,uBAAA,CAAA,mBAAA,IAAA,qBCUM,+CAEJ,eAAmB,UAAO,MAAM,mBACZ,QAAQ,MAAM,OAClC,GAAI,WAAa,EACf,KAAM,IAAI,OACN,4EACqB,eAE3B,GAAI,YAAc,EAChB,KAAM,IAAI,OACN,8EACqB,gBAE3B,GAAI,QAAQ,QAAU,QACpB,KAAM,IAAI,OACN,yEACsB,QAAQ,UAEpC,GAAI,QAAQ,MAAM,YAAc,GAAK,WACnC,KAAM,IAAI,OACN,iEACG,QAAQ,MAAM,YAAc,UAAU,cAG/C,GAAI,cAAc,UAAO,SAAW,EAClC,KAAM,IAAI,OACN,mEACiB,UAAO,UAG9B,iBAAqB,QAAQ,gBACX,aAAa,aAAa,OAAS,WAIvC,EACd,UAAa,EAAG,EAAI,aAAa,OAAS,EAAG,EAAE,EAC7C,SAAW,aAAa,GAG1B,eAAmB,UAAO,kBAEN,aAAa,QACjC,YAAY,MAEZ,cAAgB,EAChB,UAAa,UAAW,EAAI,WAAY,EAAE,EACxC,WAAa,WAAW,GACxB,YAAY,KAAK,WAAW,IAG9B,YACI,CAAC,GAAG,eAAe,UAAO,OAAO,IAAI,QAAU,OAAS,WACvD,GAAG,MAAM,EAAG,WAEjB,MAAO,CAAC,YAAa,QAAS,UAAW,SCjE3C,4BAAA,GAAA,UAAA,wBAAA,CAAA,gBAAA,IAAA,gBAAA,cAAA,IAAA,cAAA,oBAAA,IAAA,sBCQM,oDAEJ,aAAkB,QAAQ,KAAO,EAAK,QAAQ,MAAM,QAAQ,KAAO,GAAK,WACtD,QAAQ,KAAO,EAAK,QAAQ,KAAO,EAAI,aAEtC,6FACyB,QAAQ,yBAC5B,QAAQ,iBAAiB,oBAC9B,2BAA2B,YAE9C,GAAI,QAAQ,KAAO,SACjB,KAAM,IAAI,OAAM,WAAa,kBAAkB,cAEjD,GAAI,MAAM,OAAS,SAAY,SAAQ,KAAO,UAC5C,KAAM,IAAI,OACN,WACA,0BAA0B,SAAY,SAAQ,KAAO,aAE3D,GAAI,QAAQ,OAAS,SAAW,MAAM,OAAS,SAC7C,KAAM,IAAI,OACN,WAAa,mBAAmB,SAAW,MAAM,OAAS,YAEhE,UAAa,EAAG,EAAI,SAAU,EAAE,EAC9B,GAAI,QAAQ,MAAM,KAAO,QAAQ,MAAM,GACrC,KAAM,IAAI,OACN,WACA,kBAAkB,OAAO,QAAQ,MAAM,wBAAwB,OAC3D,QAAQ,MAAM,QAG1B,UAAa,EAAG,EAAI,QAAQ,KAAO,SAAU,EAAE,EAC7C,GAAI,QAAQ,MAAM,EAAI,YAAc,MAAM,EAAI,UAC5C,KAAM,IAAI,OACN,WACA,kBAAkB,EAAI,cAClB,QAAQ,MAAM,EAAI,uBAAuB,EAAI,cAC7C,MAAM,EAAI,cAmBlB,8CAEJ,GAAI,QAAQ,KAAO,EACjB,KAAM,IAAI,OACN,+EACqB,QAAQ,SAEnC,GAAI,QAAQ,KAAO,EACjB,KAAM,IAAI,OACN,+EACqB,QAAQ,SAEnC,GAAI,QAAQ,QAAU,QACpB,KAAM,IAAI,OAAM,0DACZ,QAAQ,SAEd,GAAI,MAAM,OAAS,EACjB,KAAM,IAAI,OACN,6DAA6D,SAGnE,GAAI,MAAM,SAAW,GACnB,GAAI,QAAQ,OAAS,EACnB,KAAM,IAAI,OAAM,sDACZ,QAAQ,SAEd,GAAI,QAAQ,OAAS,EACnB,KAAM,IAAI,OAAM,sDACZ,QAAQ,SAIhB,oBAAoB,MAAO,QAAS,SAYhC,gDAIJ,gBAAoB,QAAQ,MAAM,iBACf,YAAc,EAAK,QAAQ,MAAM,YAAc,GAAK,UAKvD,MAAM,iBAEN,EAChB,UAAa,UAAW,EAAI,QAAS,EAAE,EACrC,WAAa,MAAM,GAGrB,iBAAsB,UAAY,EAAK,EAAI,qBACxB,cAAc,QAAQ,OAAS,qBAElC,CAAC,GAAG,eAAe,MAAM,MAAM,EAAG,YAAa,cAC5C,cAAc,OACjC,MAAO,CAAC,UAAW,WAAY,UAAW,QAAS,YCnJrD,uBAAA,GAAA,UAAA,mBAAA,CAAA,kBAAA,IAAA,kBAAA,kBAAA,IAAA,kBAAA,gBAAA,IAAA,gBAAA,kBAAA,IAAA,kBAAA,iBAAA,IAAA,iBAAA,WAAA,IAAA,WAAA,iBAAA,IAAA,iBAAA,UAAA,IAAA,UAAA,aAAA,IAAA,aAAA,2BAAA,IAAA,2BAAA,YAAA,IAAA,YAAA,0BAAA,IAAA,0BAAA,eAAA,IAAA,eAAA,sBAAA,IAAA,wBC8BM,8CAEJ,cAAkB,OAAM,MAAM,OACzB,OACD,YAAc,MAAM,OACpB,IAAM,iBAAiB,+BAA+B,2CAClB,eACnC,OACD,YAAc,KAAK,OACnB,IAAM,iBAAiB,8BAA8B,0CACjB,eAExC,UAAa,EAAG,EAAI,UAAW,EAAE,EAC1B,OACD,MAAM,GAAK,KAAK,IAAM,OAAM,MAAM,GAClC,IAAM,iBAAiB,qBAAqB,aAAa,OACjD,MAAM,GAAK,KAAK,kCAAkC,OAChD,OAAM,MAAM,OAKxB,0BACJ,SAAa,QACF,EACX,KAAO,KAAO,GACR,KAAO,GACT,KAAK,KAAK,MAEZ,MAAQ,EACR,OAEF,MAAO,MAIH,4CAEJ,SAAa,GACb,aAAgB,EAAG,KAAO,MAAM,OAAQ,OACtC,KAAK,MAAQ,KAAK,KAAM,KAAI,MAAQ,MAAM,OAAS,QAAQ,OAE7D,MAAO,MAKH,wFAGJ,eAAmB,CAAC,GAAG,SACvB,UAAa,WAAW,OAAQ,EAAI,WAAW,OAAQ,IACrD,WAAW,KAAK,GAElB,UAAa,EAAG,EAAI,cAAe,IAC7B,IAAM,EACR,WAAW,wBAA0B,EAErC,YAAW,OACP,uBAAwB,EACxB,GACJ,WAAW,OAGf,MAAO,YAGT,8EAGE,MAAI,iBAAkB,uBACb,eAGF,eAAkB,eAAgB,GAG3C,6DACE,eAAmB,GACnB,UAAa,EAAG,EAAI,cAAe,IACjC,WAAW,KAAK,uBAAyB,GAE3C,MAAO,YAIH,yHAKJ,cAAkB,WAAW,uBACP,GAAI,OAAM,yBACZ,GAAI,OAAM,6BACN,GAAI,OAAM,WAClC,GAAI,aAAa,QAAU,oBAAsB,GAC/C,cAAkB,aAAa,iBAIT,oBAAsB,EAC5C,gBAAkB,2BACd,UAAW,UAAW,cAAe,MAAO,YAChD,cAAgB,0BACZ,QAAS,UAAW,cAAe,IAAK,YAC5C,kBACI,sBAAsB,QAAS,UAAW,cAAe,gBAE7D,cAAgB,EAAG,KAAO,UAAW,OACnC,gBAAgB,MAAQ,aACpB,UAAW,MAAO,QAAS,WAAY,KAAM,cACjD,cAAc,MACV,YAAY,QAAS,IAAK,QAAS,WAAY,KAAM,cACzD,kBAAkB,MAAQ,eAAe,QAAS,KAAM,cAI5D,MAAO,CACL,MAAO,gBACP,IAAK,cACL,QAAS,mBAMP,6GAGJ,eAAmB,CAAC,GAAG,uBACJ,cAAc,cAAe,wBAEhD,aAAgB,EAAG,KAAO,WAAW,OAAQ,OAC3C,GAAI,WAAW,QAAQ,MAAQ,GAC7B,WAAW,MAAQ,OAEnB,iBACI,gBAAgB,uBAAwB,cAAe,oBACvC,cAAc,cAC9B,UAAY,GAAK,cACnB,eAAgB,GAGlB,WAAW,MAAQ,cAGvB,MAAO,YAKH,wGAGJ,eAAmB,CAAC,GAAG,uBACJ,cAAc,cAAe,wBAEhD,aAAgB,EAAG,KAAO,WAAW,OAAQ,OAC3C,GAAI,WAAW,QAAQ,MAAQ,GAC7B,WAAW,MAAQ,OAAO,sBAE1B,iBACI,gBAAgB,uBAAwB,cAAe,oBACvC,YAAY,cAC5B,QAAU,GAAK,cACjB,eAAgB,OAAO,kBAEzB,WAAW,MAAQ,cAIvB,UAAa,EAAG,EAAI,WAAW,OAAQ,KAErC,aAAiB,WAAW,GACxB,WAAW,GAAK,GAClB,YAAW,IAAM,UAEnB,WAAW,GAAU,MAAM,EAAG,WAAW,GAAI,WAAW,IAE1D,MAAO,YAGH,mDAEJ,WAAa,QAAQ,MACrB,MAAI,cAAgB,GAAK,MAAS,QAAU,OAC1C,QAAS,GAGJ,OAGH,mFAIJ,UAAY,aAAa,aACV,QAAQ,OAAS,EAI5B,AAAA,WAAY,GAAK,MAAQ,aAAe,GAAK,MAAQ,OAAS,OAC5D,QAAS,EAIX,MAAQ,OAAO,iBAGf,MAAQ,OAAO,kBAKnB,aAAiB,WAAW,MAC5B,MAAI,OAAQ,GACV,QAAS,UAIX,MAAa,MAAM,EAAG,MAAO,SAAW,GAEjC,MAGH,+EAIJ,SAAW,YAAY,aACR,QAAQ,OAAS,EAI5B,AAAA,SAAW,GAAK,MAAS,aAAgB,GAAK,MAAS,MAAQ,OAC7D,QAAS,EAGX,KAAO,OAAO,iBAGd,KAAO,OAAO,kBAKlB,aAAiB,WAAW,MAC5B,MAAI,MAAO,GACT,OAAQ,UAMN,OAAS,EAEX,KAAY,MAAM,EAAG,KAAM,UAG3B,KAAY,MAAM,GAAI,KAAM,SAAW,GAGlC,KAOH,4CAGJ,oBAAsB,KAAK,OAC3B,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,GAAI,KAAK,GAAK,GACZ,gBAAkB,EAClB,MAIJ,UAAa,gBAAkB,EAAG,EAAI,KAAK,OAAQ,IACjD,GAAI,MAAM,GAAK,GAAK,KAAK,KAAO,MAAM,GACpC,MAAO,GAGX,MAAO,GAGH,0CACJ,eAAiB,MAAM,OAAS,EAAI,MAAM,MAAM,OAAS,GAAK,EAC9D,UAAa,EAAG,EAAI,MAAM,OAAS,EAAG,IACpC,YAAc,MAAM,GAAK,QAAQ,GAEnC,MAAO,YAGH,wCAGJ,iBACc,EAAE,MAAM,OAClB,MAAO,QAAU,SACnB,OAAS,CAAC,MAAO,GAAG,GAAI,OAAM,MAAQ,GAAG,KAAK,IACrC,MAAM,OAAS,MACxB,OAAS,MAAM,OAAO,GAAI,OAAM,MAAQ,MAAM,QAAQ,KAAK,IAE3D,OAAS,MAAM,QAEjB,OAAO,QAAQ,IACR,OACD,IAAM,GAAI,IAAM,uDAEtB,UACA,MAAI,OAAQ,KACV,MAAQ,GAAI,OAAM,OAAO,KAAK,IACrB,MAAO,OAAS,SACzB,MAAQ,CAAC,KAAM,GAAG,GAAI,OAAM,MAAQ,GAAG,KAAK,KACnC,KAAK,OAAS,MACvB,MAAQ,KAAK,OAAO,GAAI,OAAM,MAAQ,KAAK,QAAQ,KAAK,KAExD,MAAQ,KAEV,MAAQ,MAAM,IAAI,OACZ,GAAK,EACA,EAEF,QACD,IAAM,GACN,IAAM,qDACC,mCAAmC,MACvC,EAAE,MAAM,GAAK,OAAO,KAGxB,CAAC,OAAQ,OAGZ,uGAKJ,WAAa,MAAM,aACR,IAAI,iBACA,QAEX,SAAW,MACb,UAAW,GAAI,OAAM,OAAO,SAG9B,iBAAqB,WAAW,cAChC,GAAI,aAAa,OAAS,EACxB,KAAM,IAAI,OAAM,8CAGlB,GAAI,eAAiB,GAAK,cAAgB,EACxC,KAAM,IAAI,OACN,iEAGN,GAAI,eAAiB,GAAK,iBAAmB,EAC3C,KAAM,IAAI,OACN,oEAGN,wBAA4B,OAAO,OAAS,OAAO,kBAGhC,WAAW,sBACb,OAAO,QACxB,WAAW,QAAQ,OACjB,OAAO,MAAQ,EACf,KAAK,MAAQ,EACb,SAAS,OAAO,KAAM,EAAG,KAG3B,IACE,sBACA,kBACA,2BAEE,kBACI,SAAU,aAAc,oBAAqB,OAAQ,KAAM,SAC3D,UAAW,QAAS,cAC5B,OAAS,gBACT,KAAO,cACP,SAAW,kBAEX,eAAmB,WAAW,gBAE9B,WAAW,QAAQ,OACjB,KAAK,MAAQ,OAAO,MAAQ,EAC5B,SAAS,MAAQ,IAInB,SAAa,gBAAgB,OAAQ,KAAM,mBAE1B,KAAK,OAAO,UAAa,WAAW,QAAQ,QAAU,eAEpD,SAAS,MAAM,GAAK,IAAM,GAE7C,MAAO,CAAC,WAAY,OAAQ,KAAM,SAAU,KAAM,SAAU,UC/a9D,0BAAA,GAAA,UAAA,sBAAA,CAAA,aAAA,IAAA,aAAA,iBAAA,IAAA,iBAAA,cAAA,IAAA,gBCAA,iBAAA,MA0EE,eACE,MAAQ,MAAK,YACR,gBAiBA,yBAEL,MAAO,IAAI,KAAI,4BA/FnB,MAiHE,cACE,KAAK,aAAe,SAMf,UACL,MAAI,kBAAiB,UAAY,MAC/B,kBAAiB,SAAW,GAAI,mBAE3B,iBAAiB,eAMnB,eACL,iBAAiB,SAAS,aAAa,IAAI,WACvC,CAAC,IAAK,IAAI,cA4BZ,4BAEJ,OACI,IAAI,WAAa,KACjB,IAAM,+EAEV,OACI,MAAO,KAAI,WAAc,SACzB,IAAM,sDACF,MAAO,KAAI,WACnB,OACI,IAAI,UAAU,OAAS,EACvB,IAAM,qFAGV,iBAAiB,SAAS,KC/K5B,sBAAA,GAAA,UAAA,kBAAA,CAAA,qBAAA,IAAA,qBAAA,cAAA,IAAA,cAAA,wBAAA,IAAA,wBAAA,kBAAA,IAAA,kBAAA,kBAAA,IAAA,kBAAA,mBAAA,IAAA,mBAAA,oBAAA,IAAA,oBAAA,oBAAA,IAAA,oBAAA,YAAA,IAAA,cCsBA,yBAA6B,0BACO,GAE9B,sDAGJ,MAAI,YAAW,MACb,WAAU,eAEL,sBACH,OAAQ,SAAU,OAAU,SAAS,EAAa,EAAa,YAG/D,uBACJ,MAAO,QAAO,QAAQ,mBAAqB,GAAK,qBACA,qBAGlD,0DAGE,mBAAqB,GAOrB,GANI,cAAa,SAAW,aAAa,YACvC,gBAAiB,IAEf,aAAa,SAAW,aAAa,WACvC,gBAAiB,IAEf,gBACF,UAAc,OAAO,YAAY,WACnB,SAAS,YAAY,KAEnC,GAAI,QAAU,MACZ,KAAM,IAAI,OACN,yCAAyC,oBAC5B,SAIrB,GAAI,MAAM,QAAQ,SAAW,MAAM,QAAQ,WACzC,gBAAoB,WAAW,sBACT,WAAW,UACjC,GAAI,CAAC,YAAY,YAAa,eAC5B,KAAM,IAAI,OACN,0CACY,4BAA4B,kBAIhD,eACI,aAAa,QAAU,OAAS,QAAQ,qBACvB,aAAa,UAC9B,SACA,QAAQ,UAEZ,GAAI,WAAW,SAAW,aAAa,OACrC,KAAM,IAAI,OACN,yCAAyC,WAAW,uBACvC,aAAa;YACb;YACA,iBAEnB,UAAa,EAAG,EAAI,aAAa,OAAQ,EAAE,GACzC,MAAU,WAAW,KACX,aAAa,GAEvB,GAAI,CAAC,UAAU,EAAG,GAChB,KAAM,IAAI,OACN,yBAAyB,QAAQ,eAAe,QAAQ;YAC3C;YACA,kBAUjB,sCACJ,KAAK,KAAK,IAAM,KAAK,OAAQ,IAAM,QAG/B,4CACJ,UAAY,MAAO,WAAa,UAAY,MAAO,WAAa,UACxD,MAAO,WAAa,UACxB,CAAC,UACD,SACJ,MAAI,UAAS,SAAW,SAAU,OAAoB,KAClD,SAAS,WAAa,SAAU,SAAsB,IAEjD,sBAAsB,OAAQ,MAAK,OAAU,GAAK,GAEpD,sBACH,OAAQ,SAAU,OAAU,SAAS,EAAa,EAAa,IAG/D,2CAIJ,GAHI,WAAW,MACb,WAAU,eAER,CAAC,SAAS,EAAG,EAAG,WAClB,KAAM,IAAI,OAAM,8BAA8B,mBAAmB,KAIrE,iCACE,MAAI,CAAC,SAAS,IAAM,CAAC,SAAS,GACrB,GAEL,CAAA,OAAM,IAAM,MAAM,IAAM,KAAK,IAAI,EAAI,GAAK,WAM1C,8CAEJ,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,GAAI,OAAO,GAAK,KAAO,OAAO,GAAK,KACjC,KAAM,IAAI,OACN,sBAAsB,OAAO,WAAW,cAAc,QAK1D,kDAIJ,OAAO,GAAI,cAAa,SAAS,QAAQ,GAAI,cAAa,WAItD,0BAEJ,UAAa,EAAG,EAAK,EAAgB,OAAQ,KAC3C,QAAY,EAAE,GACV,MAAM,QAAQ,KAChB,cAAc,KAEd,EAAE,GAAK,aAAa,KAGxB,MAAO,GCpKT,YAAgB,QC6BV,0BACJ,MAAM,IAAI,OAAQ,IAiBd,2BACJ,MAAM,IAAI,QAAS,IAIf,sCACJ,MAAM,IAAI,+BAAgC,IAC1C,QAAQ,KAAK,0DAIT,8BACA,MAAM,QAAQ,iCAChB,QAAQ,KACJ,IAAM,+EAId,wBAAwB,iBAOlB,4BACJ,OAAO,mBAQH,oBACJ,MAAO,QAwBH,kBACJ,MAAO,QAAO,SAkCV,oBAEJ,MAAO,QAAO,QAAQ,GA2ClB,2BAEJ,MAAO,QAAO,KAAK,SAAU,IAczB,6BACJ,YAAgB,sBAAsB,YACtC,QAAQ,QAAQ,WAAU,UAAO,WAmC7B,sBACJ,MAAO,QAAO,KAAK,QA4Bf,iBACJ,MAAO,QAAO,KAAK,GAkBf,iCACJ,MAAO,QAAO,WAAW,aAUrB,iBACJ,MAAO,QAAO,QASV,sBACJ,MAAO,QAAO,YAQV,6BACJ,OAAO,cAAc,MAOjB,2BACJ,MAAO,QAAO,YAAY,MAQtB,kCAEJ,MAAO,QAAO,mBAAmB,MAkB7B,+CAES,GACb,MAAO,QAAO,gBAAgB,KAAM,QAAS,UAWzC,oBACJ,MAAO,QAAO,QASV,4CACJ,MAAM,YAAY,aAAc,UC7UlC,mBACE,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA0B,CAAC,EAAG,GAAI,EAAG,IAErC,MAAO,QAAO,UAAU,IAAK,QAGxB,SAAY,GAAG,CAAC,OCNvB,wBAEE,OAAS,gBAAgB,EAAG,IAAK,eACxB,gBAAgB,EAAG,IAAK,YACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA+B,CAAC,EAAG,GAAI,EAAG,IAE1C,MAAO,QAAO,UAAU,SAAU,QAG7B,aAAiB,GAAG,CAAC,YCZ5B,mBACE,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OAGjC,GAFA,CAAC,GAAI,IAAM,eAAe,GAAI,IAE1B,GAAG,QAAU,SAAW,GAAG,QAAU,QACvC,MAAO,UAAS,GAAI,IAGtB,WAA8B,CAAC,EAAG,GAAI,EAAG,UAC3B,GAGd,MAAO,QAAO,UAAU,QAAS,OAAgC,OAG5D,QAAY,GAAG,CAAC,OChBvB,mBACE,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA+B,CAAC,EAAG,GAAI,EAAG,IAE1C,MAAO,QAAO,UAAU,SAAU,QAE7B,QAAY,GAAG,CAAC,OCvBvB,iBACE,OAAW,gBAAgB,EAAG,IAAK,OAEnC,GAAI,GAAG,QAAU,aACf,WAAiC,CAAC,EAAG,IACrC,MAAO,QAAO,UAAU,WAAY,aAEpC,WAA0B,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,SAI1B,QAAY,GAAG,CAAC,OCdvB,kBACE,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QCHxB,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBACP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SCNzB,wBACO,OACD,MAAM,QAAQ,SACd,IAAM,8DACL,OACD,QAAQ,QAAU,EAClB,IAAM,uDACC,QAAQ,UAEnB,aACI,QAAQ,IAAI,OAAU,gBAAgB,EAAG,UAAU,IAAK,qBAExC,SAAS,GAC7B,SAAS,QAAQ,IACf,GAAI,EAAE,QAAU,YAAY,MAC1B,KAAM,IAAI,OACN,8DAIR,SAAS,QAAQ,IACf,GAAI,CAAM,YAAY,EAAE,MAAO,YAAY,OACzC,KAAM,IAAI,OACN,8DAIR,WAA2B,SAE3B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCfxB,qBACkD,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,MAAO,eAEhB,CAAC,EAAG,UACN,CAAC,KAAM,UAE/B,MAAO,QAAO,UACV,IAAK,OAAgC,OAGpC,QAAY,GAAG,CAAC,OCXvB,qBACkD,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,MAAO,eAEhB,CAAC,EAAG,UACN,CAAC,KAAM,UAE/B,MAAO,QAAO,UACV,IAAK,OAAgC,OAIpC,QAAY,GAAG,CAAC,OCjBvB,wBAAgE,GAC9D,OAAW,gBAAgB,EAAG,IAAK,iBAEN,CAAC,EAAG,UACN,CAAC,MAE5B,MAAO,QAAO,UACV,OAAQ,OAAgC,OAGvC,WAAe,GAAG,CAAC,UCV1B,wBAAgE,GAC9D,OAAW,gBAAgB,EAAG,IAAK,iBAEN,CAAC,EAAG,UACN,CAAC,MAE5B,MAAO,QAAO,UACV,OAAQ,OAAgC,OAGvC,WAAe,GAAG,CAAC,UCxB1B,kBACE,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QCJxB,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SCRzB,kBACE,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QCFxB,qBAEE,OAAS,gBAAgB,EAAG,IAAK,YACxB,gBAAgB,EAAG,IAAK,SACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA4B,CAAC,EAAG,GAAI,EAAG,IAEvC,MAAO,QAAO,UAAU,MAAO,QAG1B,UAAc,GAAG,CAAC,SCfzB,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SCmDnB,+EAG+C,kBAMnD,kBAAsB,WAAW,gBAE7B,CAAC,GAAG,YAAa,2BACD,wBAAwB,YAE5C,MAAO,mBACH,WAAY,aAAc,QAAS,UAAW,MAC9C,KAAyB,KAAsB,aAG/C,8FAK2C,gBAC/C,8BAAoC,gBAAgB,wBAGpD,GAAI,aAAe,eACjB,YAAc,CAAC,aAAc,YAAa,QAAQ,GAAI,QAAQ,YACrD,aAAe,gBACxB,YAAc,CAAC,aAAc,YAAa,QAAQ,GAAI,QAAQ,QAE9D,MAAM,IAAI,OAAM,sBAAsB,cAGxC,MAAO,mBACH,QAAS,YAAa,QAAS,UAAW,MAAK,aAAc,GAC7D,YAMA,8FAM4B,SAChC,0CAAiD,iBAAiB,oCAIlE,GAAI,aAAe,QACjB,YAAc,eACd,YACI,CAAC,YAAa,aAAc,YAAa,QAAQ,GAAI,QAAQ,YACxD,aAAe,QACxB,YAAc,gBACd,YACI,CAAC,YAAa,aAAc,YAAa,QAAQ,GAAI,QAAQ,QAEjE,MAAM,IAAI,OAAM,sBAAsB,cAGxC,MAAO,mBACH,QAAS,YAAa,QAAS,UAAW,MAAK,GAAO,YACtD,cAOA,8FAKiD,cACN,gBAC/C,2CAAiD,CAAC,GAAI,GAAI,GAAI,IAC9D,GAAI,aAAe,eACjB,CAAC,UAAW,SAAU,QAAS,YAAc,gBACpC,aAAe,gBACxB,CAAC,UAAW,WAAY,SAAU,SAAW,YAE7C,MAAM,IAAI,OAAM,sBAAsB,cAGxC,8CAAsD,uCAClB,gBAAgB,wCACZ,gBAAgB,iCAGpD,uBAAuB,aAAc,qCAErC,uBAAuB,YAAa,gBACjC,QAAS,UAAW,UAAY,iBACnC,MAAK,SAAU,QAAS,aAAc,YAAa,sBACnD,qBAAsB,aAAc,wBAEpB,UAAY,eAAiB,WAAa,wBAG9D,MAAI,cAAe,gBACjB,SAAW,CAAC,UAAW,YAAa,UAAW,UACtC,aAAe,gBACxB,UAAW,CAAC,UAAW,UAAW,SAAU,cAGvC,CACL,UACA,WACA,SACA,QACA,WACA,UACA,SACA,YACA,QACA,aACA,YACA,aACA,YACA,sBACA,qBACA,eACA,cACA,QACA,SACA,aA0CE,iFAKU,cACiC,6BAE/C,mDACI,CAAC,GAAI,GAAI,GAAI,GAAI,IACrB,GAAI,aAAe,eACjB,CAAC,UAAW,QAAS,SAAU,QAAS,YAAc,gBAC7C,aAAe,gBACxB,CAAC,UAAW,WAAY,QAAS,SAAU,SAAW,YAEtD,MAAM,IAAI,OAAM,sBAAsB,cAGxC,0DACI,mDAC6C,iBAAiB,sDAE9D,iBAAiB,gCAGjB,uBAAuB,YAAa,qCAEpC,uBAAuB,aAAc,qCAErC,uBAAuB,YAAa,gBACjC,QAAS,SAAU,UAAW,UAAY,mBAC7C,MAAK,QAAS,SAAU,QAAS,YAAa,aAAc,YAC5D,qBAAsB,sBAAuB,qBAC7C,0BAEgB,UAAY,eAAiB,WAAa,wBAG9D,MAAI,cAAe,gBACjB,SAAW,CAAC,UAAW,YAAa,SAAU,UAAW,UAChD,aAAe,gBACxB,UAAW,CAAC,UAAW,SAAU,UAAW,SAAU,cAGjD,CACL,UACA,WACA,QACA,SACA,QACA,WACA,SACA,UACA,SACA,YACA,QACA,YACA,aACA,YACA,YACA,aACA,YACA,qBACA,sBACA,qBACA,cACA,eACA,cACA,QACA,SACA,aAIJ,6EAGM,SAAW,MACb,SAAU,kBAAkB,QAAS,UAAW,SAElD,cAAkB,QAAQ,aACR,QAAQ,cAGtB,MAAO,WAAY,UAAY,EAAI,SAAW,OAAS,EAAG,yBAE1D,MAAO,WAAY,UAAY,EAAI,SAAW,OAAS,EAAG,cAE9D,MAAO,CAAC,WAAY,YAGtB,yFAIM,SAAW,MACb,SAAU,kBAAkB,QAAS,UAAW,SAElD,eAAmB,QAAQ,aACT,QAAQ,aACR,QAAQ,gBAGtB,MAAO,YAAa,UAAY,EAAI,SAAW,OAAS,EAAG,yBAE3D,MAAO,WAAY,UAAY,EAAI,SAAW,OAAS,EAAG,yBAE1D,MAAO,WAAY,UAAY,EAAI,SAAW,OAAS,EAAG,cAE9D,MAAO,CAAC,aAAc,WAAY,WAAY,aAG1C,gEAE4C,GAChD,uBAA2B,uBAAuB,UAAW,UAC7D,MAAO,MAAK,MACP,YAAW,GAAM,QAAS,GAAK,OAAS,oBAAsB,GAGrE,gCACE,MAAI,OAAO,QAAU,SACZ,CAAC,MAAO,MAAO,OAEpB,MAAM,SAAW,EACZ,CAAC,MAAM,GAAI,MAAM,GAAI,GAEvB,MAGT,iCAEE,MAAO,OAAO,QAAU,SAAW,CAAC,MAAO,MAAO,OAAS,MAc7D,qDACE,MAAI,WAAY,EACP,WAGF,WAAc,YAAa,GAAM,UAAW,GAGrD,4HAOE,+BAIA,GAAI,MAAO,QAAQ,UACjB,YAAiB,QAAQ,EAAK,QAAU,SACxC,QAAU,CAAC,IAAK,MAAK,OAAQ,MAAK,KAAM,MAAK,MAAO,MAAK,KAAM,SAC/D,aAAiB,qBACb,CAAC,SAAU,SAAU,aAAc,aAAc,MAAK,cAC1D,UAAY,SAAS,GACrB,SAAW,SAAS,WACX,QAAQ,QACjB,UAAY,KAAK,KAAK,SAAW,cACjC,SAAW,KAAK,KAAK,QAAU,aAC/B,mBACI,KAAK,IAAI,EAAI,WAAY,GAAK,aAAe,aAAe,wBAE5D,KAAK,IAAI,EAAI,UAAW,GAAK,YAAc,YAAc,aACjD,KAAK,MAAM,eAAiB,UACzB,eAAiB,SACnB,KAAK,MAAM,cAAgB,SAC1B,cAAgB,KAC9B,QAAU,CAAC,IAAK,OAAQ,KAAM,MAAO,KAAM,gBAClC,QAAQ,QACjB,QAAU,CAAC,IAAK,EAAG,OAAQ,EAAG,KAAM,EAAG,MAAO,EAAG,KAAM,SACvD,UAAY,KAAK,KAAM,UAAW,aAAe,GAAK,cACtD,SAAW,KAAK,KAAM,SAAU,YAAc,GAAK,qBAC1C,MAAO,QAAQ,UACxB,QAAY,aAAe,eAAiB,MAAI,GAAG,GAAK,MAAI,GAAG,UAChD,aAAe,eAAiB,MAAI,GAAG,GAAK,MAAI,GAAG,QACrD,aAAe,eAAiB,MAAI,GAAG,GAAK,MAAI,GAAG,SAClD,aAAe,eAAiB,MAAI,GAAG,GAAK,MAAI,GAAG,WAChD,MAAQ,GAAK,SAAW,GAAK,OAAS,GAAK,QAAU,EAClE,QACA,WACJ,QAAU,CAAC,IAAK,OAAQ,KAAM,MAAO,KAAM,SAC3C,UAAY,MACP,UAAW,aAAe,IAAM,QAAU,aAAe,EAC1D,cACJ,SAAW,MACN,SAAU,YAAc,KAAO,OAAS,YAAc,EAAG,kBAE9D,MAAM,OAAM,8BAA8B,SAE5C,MAAO,CAAC,QAAS,UAAW,UAG9B,mJAUE,wCAKA,GAAI,MAAO,QAAQ,UACjB,YAAiB,QAAQ,EAAK,QAAU,SACxC,QAAU,CACR,IAAK,MACL,OAAQ,MACR,KAAM,MACN,MAAO,MACP,MAAO,MACP,KAAM,MACN,KAAM,SAER,aAAiB,qBACb,CAAC,QAAS,SAAU,QAAS,GAAI,YAAa,EAAG,YAAa,MAC9D,cACJ,SAAW,SAAS,GACpB,UAAY,SAAS,GACrB,SAAW,SAAS,WACX,QAAQ,QACjB,SAAW,KAAK,KAAK,QAAU,aAC/B,UAAY,KAAK,KAAK,SAAW,cACjC,SAAW,KAAK,KAAK,QAAU,aAC/B,kBAAuB,UAAW,GAAK,YAAc,YAAc,uBAE9D,WAAY,GAAK,aAAe,aAAe,uBAC7B,UAAW,GAAK,YAAc,YAAc,cACrD,KAAK,MAAM,cAAgB,QAC5B,cAAgB,UACjB,KAAK,MAAM,eAAiB,UACzB,eAAiB,SACnB,KAAK,MAAM,cAAgB,SAC1B,cAAgB,KAE9B,QAAU,CAAC,IAAK,OAAQ,KAAM,MAAO,MAAO,KAAM,KAAM,gBAC/C,QAAQ,QACjB,QAAU,CACR,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,EACP,MAAO,EACP,KAAM,EACN,KAAM,SAER,SAAW,KAAK,KAAM,SAAU,YAAc,GAAK,aACnD,UAAY,KAAK,KAAM,UAAW,aAAe,GAAK,cACtD,SAAW,KAAK,KAAM,SAAU,YAAc,GAAK,iBAEnD,MAAM,OAAM,8BAA8B,SAE5C,MAAO,CAAC,QAAS,SAAU,UAAW,UASxC,mCACE,GAAI,CAAC,aACH,MAAO,MAAK,MAAM,OAEpB,OAAQ,kBACD,QAEH,MAAO,MAAK,MAAM,WACf,OAEH,MAAO,MAAK,KAAK,WACd,QACH,MAAO,MAAK,MAAM,eAElB,KAAM,IAAI,OAAM,wBAAwB,iBAIxC,kCACJ,oBAA2B,gBAAgB,OAC3C,MAAO,QAAS,GAAK,OAAS,GAAK,OAAS,EAGxC,2DAEJ,MAAO,mBAAkB,UAAY,kBAAkB,WAUnD,6CAEJ,GAAI,aAAe,OACjB,MAAO,eACF,GAAI,aAAe,OACxB,MAAO,gBAEP,KAAM,IAAI,OAAM,sBAAsB,cC9hB1C,2BAEE,OAAW,gBAAgB,EAAG,IAAK,UAAW,aAEhB,CAAC,EAAG,UACN,CAAC,OAC7B,MAAO,QAAO,UACV,QAAS,OAAgC,OAExC,YAAgB,GAAG,CAAC,WCX3B,8DAIE,OAAW,gBAAgB,EAAG,IAAK,UAAW,qBAC5B,EAEb,OACS,+BAA+B,QAAS,WAClD,IAAM,wEACa,0BAA0B,cAEjD,QAAU,gBACS,GACf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGtD,OACD,IAAI,OAAS,EACb,IAAM,mDAAmD,IAAI,SAE7D,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,wEACiB,+BAA+B,UAG5D,WAA8B,CAAC,EAAG,WAEN,CAAC,WAAY,QAAS,IAAA,MAAK,qBAG7C,OAAO,UACH,QAAS,OACT,OAId,MAFA,KAAM,KAAK,IAAK,GAAG,OAEf,aACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGtD,IAGF,YAAgB,GAAG,CAAC,WCvB3B,0EAIkC,mBAE5B,WAAa,KACf,UAAY,CAAC,EAAG,EAAG,GAEnB,gBACI,+DAIN,OAAW,gBAAgB,EAAG,IAAK,YAAa,eAEtC,gBACS,GACf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGnE,OACD,IAAI,OAAS,EACb,IAAM,qDAAqD,IAAI,SAC9D,OACD,aAAe,QACf,IAAM,gFACuB,cAC5B,OACS,+BAA+B,QAAS,WAClD,IAAM,0EACa,0BAA0B,cAE7C,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,0EACiB,+BAA+B,UAG5D,WAAgC,CAAC,EAAG,WAGhC,CAAC,WAAY,QAAS,IAAA,MAAK,gBAAiB,WAAY,eAGlD,OAAO,UACH,UAAW,OACX,OAId,MAFA,KAAM,KAAK,IAAK,IAAI,OAEhB,aACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAIhE,IAGF,cAAkB,GAAG,CAAC,aCvE7B,8BAAwE,GACtE,OAAO,QAAQ,QAAU,EAAG,IAAM,sCAElC,aAAiB,qBAAqB,QAAS,UAAW,UAW1D,GATI,SAAS,GAAG,QAAU,aACxB,SAAS,QAAQ,YACf,GAAI,UAAO,QAAU,YACnB,KAAM,IAAI,OAAM;uBACD,UAAO,aAKxB,SAAS,SAAW,EACtB,MAAO,OAAM,SAAS,IAGxB,WAA6B,cACH,CAAC,MAE3B,MAAO,QAAO,UACV,OAAQ,OAAgC,MAGvC,WAAe,GAAG,CAAC,UCvD1B,qBACE,OAAW,gBAAgB,EAAG,IAAK,kBAEL,CAAC,EAAG,IAElC,MAAO,QAAO,UAAU,QAAS,QAE5B,YAAgB,GAAG,CAAC,WCgB3B,8BAEE,OAAW,gBAAgB,EAAG,IAAK,QAAS,MAE5C,GAAI,GAAG,OAAS,EACd,KAAM,IAAI,OAAM,kCAGlB,WAA4B,CAAC,EAAG,UACN,CAAC,MAAO,MAElC,MAAO,QAAO,UACV,MAAO,OAAgC,OAGtC,UAAc,GAAG,CAAC,SCtCzB,kBACE,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,UAAa,GAAG,CAAC,QCCxB,iEAIE,gBACI,gBAAgB,WAAY,aAAc,6BAE1C,gBAAgB,WAAY,aAAc,2BAC5B,gBAAgB,SAAU,WAAY,uBAC1C,gBAAgB,KAAM,OAAQ,oBACjC,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,0BAElB,OAAO,CAAC,MAAO,IAAK,YACpB,OAAO,SAAU,iBACZ,KAAI,SAAU,qBAGlB,IAAI,MAAM,aACV,IAAI,MAAM,GAAK,YACG,CAAC,UAAW,aACtC,MAAM,IAAK,CAAC,EAAG,GAAI,aACnB,MAAM,IAAK,CAAC,EAAG,WAAY,aAC3B,MAAM,IAAK,CAAC,EAAG,UAAY,GAAI,aAC/B,MAAM,IAAK,CAAC,EAAG,UAAY,GAAI,gBAGrC,KAAI,IAAI,QAAQ,GAAI,MAAK,IACrB,IAAI,GAAI,QAAQ,KAAI,YAAa,WAClB,IAAI,MAAK,MAAO,QAAQ,IAC/C,MAAO,CAAC,KAAM,MAGT,kBAAsB,GAAG,CAAC,iBCHjC,6CAEE,OAAW,gBAAgB,EAAG,IAAK,wBACtB,WAAW,OAAO,OAAU,EAAI,GAExC,OACD,GAAG,MAAQ,EAAI,WAAW,OAC1B,IAAM,iBAAiB,GAAG,+CACtB,WAAW,UAEd,OACD,MAAM,SAAW,WAAW,OAC5B,IAAM,mBACF,MAAM,oDACN,WAAW,UAEd,OACD,GAAG,MAAM,GAAK,QAAS,EACvB,IAAM,yBACI,GAAG,MAAM,wEACe,WAAW,KAAK,cAAc,SAEpE,WAAqC,CAAC,EAAG,UACN,CAAC,WAAY,OAEhD,MAAO,QAAO,UACV,eAAgB,OAChB,OAGC,mBAAuB,GAAG,CAAC,kBCtF5B,kBACJ,QACA,MAAI,GAAE,OAAS,GAAK,EAAE,OAAS,EAC7B,IAAM,QAAQ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAE,OACpB,EAAE,OAAS,EACpB,IAAM,QAAQ,EAAG,CAAC,EAAG,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,KACnC,EAAE,OAAS,EACpB,IAAM,QAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,KAErD,IAAM,EAGD,ICwBT,qEAMM,iBAAmB,MACrB,iBAAkB,MAEpB,OAAW,gBAAgB,EAAG,IAAK,mBACrB,gBAAgB,MAAM,OAAQ,uBAC1B,gBAAgB,SAAU,WAAY,oBAEpD,SAAS,MACX,QAAS,gBAAgB,QAAO,QAAS,cAE3C,YACI,QAAU,MACZ,SAAU,gBAAgB,OAAQ,SAAU,cAGzC,OACD,MAAM,OAAS,UAAU,KACzB,IAAM,gFAEL,OACD,SAAW,MAAQ,MAAM,OAAS,QAAQ,KAC1C,IAAM,8EAEL,OACD,QAAU,MAAQ,MAAM,OAAS,OAAO,KACxC,IAAM,6EAGV,QAAsB,MAAM,WAES,CACnC,EAAG,IACH,MAAO,OACP,OAAQ,QACR,KAAM,MACN,SAAU,iBAGuB,CAAC,qBAGxB,OAAO,UACH,eAAgB,OAChB,OAEhB,MAAO,SAAQ,IAAK,GAAG,OAGlB,cAAkB,GAAG,CAAC,aC3E7B,uEAKE,OAAW,gBAAgB,EAAG,IAAK,mBACrB,gBAAgB,MAAM,OAAQ,uBAC1B,gBAAgB,SAAU,WAAY,oBAEpD,SAAS,MACX,QAAS,gBAAgB,QAAO,QAAS,cAE3C,YACA,MAAI,SAAU,MACZ,SAAU,gBAAgB,OAAQ,SAAU,cAEzC,OACD,GAAG,OAAS,EACZ,IAAM,uDACC,GAAG,SACT,OACD,MAAM,OAAS,GAAK,MAAM,OAAS,EACnC,IAAM,oEACU,MAAM,SACrB,OACD,UAAU,OAAS,GAAK,UAAU,OAAS,EAC3C,IAAM,wEACc,UAAU,SAC9B,QAAU,MACP,OACD,OAAO,OAAS,GAAK,OAAO,OAAS,EACrC,IAAM,qEACc,OAAO,SAE7B,SAAW,MACR,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,sEACc,QAAQ,SAG3B,UAAU,GAAI,MAAO,UAAW,QAAS,OAAQ,iBAGnD,gBAAoB,GAAG,CAAC,eC5C/B,uEAKE,OAAW,gBAAgB,EAAG,IAAK,mBACrB,gBAAgB,MAAM,OAAQ,uBAC1B,gBAAgB,SAAU,WAAY,oBAEpD,SAAS,MACX,QAAS,gBAAgB,QAAO,QAAS,cAE3C,YACA,MAAI,SAAU,MACZ,SAAU,gBAAgB,OAAQ,SAAU,cAEzC,OACD,GAAG,OAAS,EACZ,IAAM,uDACC,GAAG,SACT,OACD,MAAM,OAAS,GAAK,MAAM,OAAS,EACnC,IAAM,oEACU,MAAM,SACrB,OACD,UAAU,OAAS,GAAK,UAAU,OAAS,EAC3C,IAAM,wEACc,UAAU,SAC9B,QAAU,MACP,OACD,OAAO,OAAS,GAAK,OAAO,OAAS,EACrC,IAAM,qEACc,OAAO,SAE7B,SAAW,MACR,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,sEACc,QAAQ,SAG3B,UAAU,GAAI,MAAO,UAAW,QAAS,OAAQ,iBAGnD,gBAAoB,GAAG,CAAC,eC5C/B,uEAKE,OAAW,gBAAgB,EAAG,IAAK,mBACrB,gBAAgB,MAAM,OAAQ,uBAC1B,gBAAgB,SAAU,WAAY,oBAEpD,SAAS,MACX,QAAS,gBAAgB,QAAO,QAAS,cAE3C,YACA,MAAI,SAAU,MACZ,SAAU,gBAAgB,OAAQ,SAAU,cAEzC,OACD,GAAG,OAAS,EACZ,IAAM,uDACC,GAAG,SACT,OACD,MAAM,OAAS,GAAK,MAAM,OAAS,EACnC,IAAM,oEACU,MAAM,SACrB,OACD,UAAU,OAAS,GAAK,UAAU,OAAS,EAC3C,IAAM,wEACc,UAAU,SAC9B,QAAU,MACP,OACD,OAAO,OAAS,GAAK,OAAO,OAAS,EACrC,IAAM,qEACc,OAAO,SAE7B,SAAW,MACR,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,sEACc,QAAQ,SAE3B,UAAU,GAAI,MAAO,UAAW,QAAS,OAAQ,iBAGnD,gBAAoB,GAAG,CAAC,eCjC/B,mCAEE,OAAW,gBAAgB,EAAG,IAAK,qBAClB,gBAAgB,QAAS,UAAW,YAEhD,OACD,GAAG,QAAU,QACb,IAAM,yDAC8B,GAAG,SACtC,OAAO,MAAQ,EAAG,IAAM,sCAAsC,SAC9D,OACD,SAAS,OAAS,GAAG,MAAQ,SAAS,OAAS,EAC/C,IAAM,gGACgC,GAAG,yBAClC,SAAS,UAEpB,WAA+B,CAAC,EAAG,GAAI,QAAS,gBACnB,CAAC,MAE9B,MAAO,QAAO,UACV,SAAU,OAAgC,OAGzC,aAAiB,GAAG,CAAC,YCzB5B,+BAEE,WAAY,gBAAgB,EAAG,cAAe,YAC/B,OAAM,MAErB,GAAI,MAAM,KAAK,GAAK,CAAE,GAAI,IAAM,EAAI,IAAM,GACxC,KAAM,IAAI,OAAM,2CAA2C,WAG7D,GAAI,MAAM,OAAS,OAAM,KACvB,KAAM,IAAI,OAAM,+BAA+B,MAAM,uBACjD,OAAM,SAGZ,GAAI,MAAM,OAAS,OAAM,MACvB,aAAiB,OAAM,MAAM,QAC7B,KAAO,SAAS,OAAS,MAAM,QAC7B,SAAS,QAAQ,GAEnB,OAAQ,QAAQ,OAAO,UAGzB,eAAmB,OAAM,WACF,MAAM,KAAK,OAClC,UAAa,MAAM,OAAS,EAAG,GAAK,EAAG,IACrC,GAAI,WAAW,KAAO,MAAM,GAC1B,KAAK,GAAK,UACD,OAAM,MAAM,KAAO,EAC5B,KAAM,IAAI,OACN,mBAAmB,mCAAmC,WAG9D,SAAa,KAAK,IAAI,OAAU,EAAI,EAAI,EAAI,IAAI,OAAO,GAAK,GAAK,GAEjE,GAAI,KAAK,SAAW,EAClB,MAAO,OAAM,QAIf,WAA2B,CAAC,EAAG,cACN,CAAC,MAC1B,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,gBAAoB,GAAG,CAAC,eClD/B,kBACE,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAC/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QCHxB,mDAEE,OAAW,gBAAgB,EAAG,IAAK,eAC9B,OACA,cAAgB,aACjB,IAAM,uBAAuB,oDACK,kBAEtC,WAAkC,CAAC,EAAG,UACN,CAAC,aAAc,cAE/C,MAAO,QAAO,UACV,YAAa,OAAgC,OAG5C,gBAAoB,GAAG,CAAC,eCvB/B,4BACE,MAAO,QAAO,QAAS,GAGlB,aAAiB,GAAG,CAAC,YCY5B,iCAEE,MAAO,QAAO,QAAS,MAGlB,aAAiB,GAAG,CAAC,YCD5B,iCAEE,MAAO,QAAO,QAAS,MAGlB,aAAiB,GAAG,CAAC,YC5B5B,iCAEE,MAAO,QAAO,QAAS,MAGlB,aAAiB,GAAG,CAAC,YC0B5B,mDAIgC,iBACS,CAAC,EAAG,oBAE3C,OAAW,gBAAgB,EAAG,IAAK,kBACnB,gBAAgB,OAAQ,SAAU,cAExC,gBACS,GAEf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGtD,OACD,IAAI,OAAS,EACb,IAAM,uDAAuD,IAAI,SAChE,OACD,QAAQ,OAAS,EACjB,IAAM,wDACC,QAAQ,SACf,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,uEACiB,+BAA+B,UAG5D,YAAgB,aAAe,OAAS,IAAI,MAAM,GAAK,IAAI,MAAM,GAC5D,OACD,UAAY,QAAQ,MAAM,GAC1B,IAAM,oCAAoC,8CACZ,QAAQ,MAAM,OAC3C,OACS,+BAA+B,QAAS,WAClD,IAAM,uEACa,0BAA0B,cAEjD,WAA6B,CAAC,EAAG,IAAK,OAAQ,eAE5B,CAAC,QAAS,IAAA,MAAK,WAAY,UAAW,qBAG5C,OAAO,UACH,OAAQ,OACR,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,WAAe,GAAG,CAAC,UChE1B,kDAG8B,eAAkB,mBAE9C,OAAW,gBAAgB,EAAG,IAAK,kBACnB,gBAAgB,OAAQ,SAAU,cAExC,gBACS,GACf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,MAGzC,OACD,IAAI,OAAS,EACb,IAAM,uDAAuD,IAAI,SAChE,OACD,QAAQ,OAAS,EACjB,IAAM,wDACC,QAAQ,SACf,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,uEACiB,+BAA+B,UAGvD,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,oCAAoC,IAAI,MAAM,yCACtB,QAAQ,MAAM,OAC3C,OACS,+BAA+B,OAAQ,UACjD,IAAM,oEACY,wBAAwB,aACzC,OACD,aAAe,MACf,IAAM,sCACF,mDAER,aAAiB,QACb,QAAS,CAAC,EAAG,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,aACnD,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,EAAG,IAAI,MAAM,GAAI,IAAI,MAAM,aACrC,CAAC,EAAG,kBACF,CAAC,EAAG,2BAEf,WAEb,OACP,QAAuB,SAAuB,QAAS,MACxD,iBAAkB,UAAW,iBAEjC,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,KAGxC,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGtD,WAAe,GAAG,CAAC,UChE1B,wEAIgC,wBAEzB,OACD,OAAO,SAAW,GAAG,KACrB,IAAM,sBACE,OAAO,2BAA2B,GAAG,oBAEjD,aAAe,YACJ,gBACQ,GACf,GAAG,OAAS,GACd,cAAe,GACf,KAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,KAC1D,SAAW,CAAC,EAAG,OAAO,GAAI,OAAO,GAAI,OAAO,KAGzC,OACD,SAAS,SAAW,EACpB,IACI,qEACG,SAAS,WACf,OACD,KAAK,OAAS,EACd,IAAM,4DACM,KAAK,QAChB,OACD,OAAO,OAAS,EAChB,IAAM,gEACM,OAAO,QACvB,YAAgB,aAAe,OAAS,SAAS,GAAK,SAAS,YAC9C,aAAe,OAAS,KAAK,MAAM,GAAK,KAAK,MAAM,GAC/D,OACD,UAAY,OAAO,MAAM,GACzB,IAAM,4CAA4C,8CACd,OAAO,MAAM,OAChD,OACD,WAAa,OAAO,MAAM,GAC1B,IAAM,6CAA6C,gDACd,OAAO,MAAM,OAClD,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,+EACiB,+BAA+B,UAG5D,WAA0C,CAAC,GAAI,KAAM,cAGjD,CAAC,QAAS,IAAA,MAAK,WAAY,gBAAiB,WAAY,cAGhD,OAAO,UACH,oBAAqB,OACrB,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,wBAA4B,GAAG,CAAC,uBC1EvC,8EAKE,OAAW,gBAAgB,EAAG,IAAK,2BACnB,gBAAgB,OAAQ,SAAU,mBAElD,MAAO,qBACH,YAAa,GAAI,QAAS,QAAS,MAAK,OAAQ,iBAG/C,oBAAwB,GAAG,CAAC,mBCMnC,mDAGkC,kBACe,CAAC,EAAG,EAAG,IACtD,OAAW,gBAAgB,EAAG,IAAK,kBACnB,gBAAgB,OAAQ,SAAU,cAExC,gBACS,GAEf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAEnE,OACD,IAAI,OAAS,EACb,IAAM,uDAAuD,IAAI,SAChE,OACD,QAAQ,OAAS,EACjB,IAAM,wDACC,QAAQ,SACd,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,oCAAoC,IAAI,MAAM,yCACtB,QAAQ,MAAM,OAC3C,OACD,+BAA+B,QAAS,WACxC,IAAM,uEACa,0BAA0B,cAC5C,OACD,aAAe,QACf,IAAM,sCACF,qDAER,WAA6B,CAAC,EAAG,IAAK,OAAQ,eAEnB,CAAC,QAAS,IAAA,MAAK,WAAY,eAG1C,OAAO,UACH,OAAQ,OACR,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGhE,IAGF,WAAe,GAAG,CAAC,UCrE1B,8DAMO,OACD,OAAO,SAAW,GAAG,KACrB,IAAM,sBACE,OAAO,2BAA2B,GAAG,oBAEjD,aAAe,YACJ,gBACQ,GACf,GAAG,OAAS,GACd,cAAe,GACf,KAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,KACvE,SAAW,CAAC,EAAG,OAAO,GAAI,OAAO,GAAI,OAAO,GAAI,OAAO,KAGzD,YAAgB,SAAS,YACR,KAAK,MAAM,GACvB,OACD,SAAS,SAAW,EACpB,IACI,qEACG,SAAS,WACf,OACD,KAAK,OAAS,EACd,IAAM,4DACM,KAAK,QAChB,OACD,OAAO,OAAS,EAChB,IAAM,gEACM,OAAO,QAClB,OACD,UAAY,OAAO,MAAM,GACzB,IAAM,4CAA4C,8CACd,OAAO,MAAM,OAChD,OACD,WAAa,OAAO,MAAM,GAC1B,IAAM,6CAA6C,gDACd,OAAO,MAAM,OAEtD,WAA4C,CAAC,GAAI,KAAM,cAGtB,CAAC,IAAA,MAAK,QAAS,WAAY,cAGhD,OAAO,UACH,sBAAuB,OACvB,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGhE,IAGF,wBAA4B,GAAG,CAAC,uBChEvC,8DAME,OAAW,gBAAgB,EAAG,IAAK,2BACnB,gBAAgB,OAAQ,SAAU,mBAElD,MAAO,qBAAoB,YAAa,GAAI,QAAS,QAAS,OAGzD,oBAAwB,GAAG,CAAC,mBChBnC,iBACE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAE9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OCPvB,kBACE,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QCMxB,wBACiC,YAAe,aAAiB,IAC/D,OAAW,gBAAgB,EAAG,IAAK,iBAEN,CAAC,EAAG,UACN,CAAC,KAAM,UAAW,QAAA,WAE7C,MAAO,QAAO,UACV,OAAQ,OAAgC,OAGvC,WAAe,GAAG,CAAC,UCd1B,oDAEmB,IACjB,OAAW,gBAAgB,EAAG,IAAK,0BAClB,gBAAgB,QAAS,UAAW,iBAEhD,OACD,GAAG,QAAU,QACb,IAAM,8DAC8B,GAAG,SACtC,OACD,GAAG,MAAQ,EACX,IAAM,sEACM,GAAG,SACd,OAAO,MAAQ,EAAG,IAAM,sCAAsC,SAC9D,OACD,SAAS,OAAS,GAAG,MAAQ,SAAS,OAAS,EAC/C,IACI,+FAC8B,GAAG,yBAC9B,SAAS,UAEpB,WAAoC,CAAC,EAAG,GAAI,QAAS,gBACnB,CAAC,KAAM,cAEzC,MAAO,QAAO,UACV,cAAe,OACf,OAGC,kBAAsB,GAAG,CAAC,iBCZjC,8CAEgC,QAC9B,OAAW,gBAAgB,EAAG,IAAK,4BAEd,aAAe,OAAU,GAAG,MAAM,GAAK,GAAG,MAAM,cACjD,aAAe,OAAU,GAAG,MAAM,GAAK,GAAG,MAAM,cAChD,aAAe,OAAU,GAAG,MAAM,GAAK,GAAG,MAAM,GAE/D,OACD,YAAc,WAAa,EAC3B,IAAM;MACN,mBAAmB;MACnB,GAAG,SAEF,OACD,WAAa,WAAa,EAC1B,IAAM;MACN,kBAAkB;UACd,GAAG,SAEN,OACA,WAAc,WAAY,aAAe,EAC1C,IAAM,8CACF,UAAY,oBACZ,gDAAgD,GAAG,SAE3D,WAAmC,CAAC,EAAG,UACN,CAAC,UAAW,YAE7C,MAAO,QAAO,UACV,aAAc,OACd,OAGC,iBAAqB,GAAG,CAAC,gBC3BhC,4DAGgC,iBACS,CAAC,EAAG,oBAE3C,OAAW,gBAAgB,EAAG,IAAK,2BACnB,gBAAgB,OAAQ,SAAU,uBAExC,gBACS,GACf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAEtD,OACD,IAAI,OAAS,EACb,IAAM,gEACM,IAAI,SACf,OACD,QAAQ,OAAS,EACjB,IAAM,iEACC,QAAQ,SACd,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,uDACE,IAAI,MAAM,qDACJ,QAAQ,MAAM,OAE5B,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,gFACiB,+BAA+B,UAG5D,WAA4C,CAAC,EAAG,IAAK,OAAQ,eAEzD,CAAC,QAAS,IAAA,MAAK,WAAY,UAAW,qBAG9B,OAAO,UACH,sBAAuB,OACvB,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,oBAAwB,GAAG,CAAC,mBC9EnC,kBACE,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCMxB,sDAGyC,CAAC,EAAG,cACpB,QACvB,OAAW,gBAAgB,EAAG,IAAK,sBACnB,gBAAgB,OAAQ,SAAU,cAE7C,OACD,GAAG,OAAS,GAAK,GAAG,OAAS,EAC7B,IAAM,gEACC,GAAG,SACT,OACD,QAAQ,OAAS,EACjB,IAAM,4DACC,QAAQ,SACd,OACD,aAAe,OACf,IAAM,gFACuB,cAEjC,QAAU,gBACS,GAEf,GAAG,OAAS,GACd,KAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,KACzD,aAAe,IAGjB,WAAiC,CAAC,EAAG,IAAK,OAAQ,eACnB,CAAC,QAAS,IAAA,MAAK,eAGlC,OAAO,UACH,WAAY,OACZ,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGtD,IAGF,eAAmB,GAAG,CAAC,cC9ExB,4CAEJ,WAAe,QAAQ,YACA,GACvB,UAAa,EAAG,EAAI,OAAQ,KAC1B,QAAY,OAAS,EAAI,IACf,QAAQ,MAAQ,IAChB,SAAS,SAAS,OAAS,EAAI,IAAM,EAC3C,EAAI,GAAK,IAAM,GACjB,KAAK,QAAQ,KAGjB,MAAO,MAOH,4CAEJ,WAAyB,GACzB,UAAa,EAAG,EAAI,SAAS,OAAQ,KACnC,UAAc,QAAQ,QAAQ,OAAS,EAAI,WAC3B,SAAS,OAAS,EAAI,SACvB,SAAS,SACpB,AAAA,QAAS,MAAS,QAAU,GAAK,OAAS,IAC5C,OAAO,QAAQ,SAGnB,MAAO,QAGH,mDAEJ,WAAyB,KACf,KAAK,IAAI,OAAO,OAAQ,OAAO,QAEzC,UAAa,EAAG,EAAI,EAAG,KACrB,MAAQ,OAAO,OAAO,OAAS,EAAI,GAC/B,GAAK,MACP,GAAI,GAEN,MAAQ,OAAO,OAAO,OAAS,EAAI,GAInC,GAHI,GAAK,MACP,GAAI,GAEF,IAAM,EACR,OAAO,QAAQ,WACN,IAAM,EACf,OAAO,QAAQ,WACN,IAAM,GACf,WAAe,wDACR,cAAc,UACrB,KAAM,OAAM,YAEZ,QAAO,QAAQ,GAGnB,MAAO,QC3CT,qBAEE,OAAS,gBAAgB,EAAG,IAAK,YACxB,gBAAgB,EAAG,IAAK,SACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA4B,CAAC,EAAG,GAAI,EAAG,IAEvC,MAAO,QAAO,UAAU,MAAO,QAG1B,UAAc,GAAG,CAAC,SCHzB,+BAEE,OAAW,gBAAgB,EAAG,IAAK,YACxB,gBAAgB,EAAG,IAAK,oBAChB,gBAAgB,UAAW,YAAa,QAAS,uBAI7C,2BAA2B,GAAG,MAAO,GAAG,qBACzC,YAAY,GAAI,8BAChB,YAAY,GAAI,gBAClC,WAAW,OAAS,GAGtB,OACI,WAAW,MAAM,KAAO,GAAG,MAAM,GACjC,IAAM,kEAGR,WAAW,OAAS,GAEtB,kBACI,WAAW,MAAO,cAAc,MAAO,oBAG7C,WAA6B,CAC3B,UAAW,WACX,EAAG,cACH,EAAG,eAEL,MAAO,QAAO,UAAU,OAAQ,QAG3B,UAAc,GAAG,CAAC,SC9CzB,uBACE,OAAW,gBAAgB,EAAG,IAAK,oBACH,CAAC,EAAG,IACpC,MAAO,QAAO,UAAU,UAAW,QAE9B,cAAkB,GAAG,CAAC,aCc7B,wBAGE,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,cAAkB,IAAI,GAAI,WACZ,UAAU,uBACJ,MAAM,GAAI,QAC9B,MAAO,OAAM,YAAa,OAAO,WAG5B,aAAiB,GAAG,CAAC,YC5B5B,qBACE,QAAY,gBAAgB,GAAI,KAAM,WAC1B,gBAAgB,GAAI,KAAM,OAEjC,OACA,KAAI,OAAS,GAAK,IAAI,OAAS,IAAO,KAAI,OAAS,GAAK,IAAI,OAAS,GACtE,IAAM,+DACC,IAAI,YAAY,IAAI,SAE/B,YAAiB,IAAI,OAAS,EAAI,IAAI,KAAO,IAAI,MAAM,WACtC,IAAI,OAAS,EAAI,IAAI,KAAO,IAAI,MAAM,GAOvD,GALK,OACD,UAAY,QACZ,IAAM,gEACC,eAAe,YAEtB,IAAI,OAAS,GAAK,IAAI,OAAS,GACjC,SAAa,QAAQ,IAAK,CAAC,EAAG,UACjB,QAAQ,IAAK,CAAC,GAAI,SAClB,OAAO,KAAM,MAC1B,MAAO,SAAQ,KAAM,YACZ,IAAI,OAAS,GAAK,IAAI,OAAS,GACxC,SAAa,QAAQ,IAAK,CAAC,EAAG,UACjB,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,UACtC,OAAO,KAAM,MAC1B,MAAO,SAAQ,KAAM,CAAC,KAAK,eAClB,IAAI,OAAS,GAAK,IAAI,OAAS,GACxC,SAAa,QAAQ,IAAK,CAAC,GAAI,SAClB,OAAO,IAAK,MACzB,MAAO,SAAQ,KAAM,CAAC,KAAK,YAE3B,SAAa,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,UACtC,OAAO,IAAK,MACzB,MAAO,OAIJ,QAAY,GAAG,CAAC,OC3CvB,iBACE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAE9B,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OCLvB,iBACE,OAAS,gBAAgB,EAAG,IAAK,OAC5B,OACD,GAAG,QAAU,SAAW,GAAG,QAAU,UACrC,IAAM,6CAEN,GAAG,QAAU,SACf,IAAK,KAAK,GAAI,YAGhB,WAA0B,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OChBvB,iBACE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OCAvB,4BAAoE,GAClE,YAA0B,QACf,gBAAgB,EAAG,IAAK,aAAc,SAE5C,OAAO,MAAQ,GAAG,KAAM,IAAM,sCAEnC,WAAiC,CAAC,MAAO,UACV,CAAC,IAAK,MAErC,MAAO,QAAO,UACV,WAAY,OAAgC,OAG3C,eAAmB,GAAG,CAAC,cClB9B,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAChC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SCQzB,uBACE,YAA0B,QACf,gBAAgB,EAAG,IAAK,OAAQ,SACtC,OACD,GAAG,OAAS,KAAK,OACjB,IAAM,qCAAqC,GAAG,kCACb,SAErC,WAA2B,CAAC,EAAG,UACN,CAAC,MAE1B,MAAO,QAAO,UACV,KAAM,OACN,OAGC,SAAa,GAAG,CAAC,QC7BxB,kDAOsB,WAChB,YAAc,MAChB,YAAa,SAEf,SAAa,OAAO,CAAC,QAAS,YAAa,SACjC,SAAW,WAAa,QAAU,WAC5C,UAAa,EAAG,EAAI,EAAG,EAAE,EACvB,KAAK,IAAI,EAAG,EAAG,GAEjB,QAAsB,QAAQ,KAAK,WAAY,CAAC,QAAS,aACzD,GAAI,YAAc,KAChB,MAAO,KAEP,GAAI,WAAW,SAAW,EACxB,MAAO,MAAK,WAAW,IAAK,GAAI,CAAC,WAAW,GAAI,EAAG,IAC9C,GAAI,WAAW,SAAW,EAE/B,MAAO,MACI,WAAW,WAAW,IAAK,GAAI,GAC/B,CAAC,WAAW,GAAI,WAAW,GAAI,EAAG,IACxC,GAAI,WAAW,SAAW,EAE/B,MAAO,MAAK,WAAW,WAAW,WAAW,IAAK,GAAI,GAAI,GAAI,CACrD,WAAW,GAAI,WAAW,GAAI,WAAW,GAAI,EAAG,IAGzD,KAAM,IAAI,OACN,qEAE8B,WAAmB,YAKpD,QAAY,GAAG,CAAC,OC5CvB,iCAEE,UAAyB,CAAC,MAAO,MAAO,OAExC,MAAO,QAAO,UAAU,KAAM,GAAI,OCJpC,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAChC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SCUzB,gCACwD,YAAe,GACrE,OAAW,gBAAgB,EAAG,IAAK,mBAClB,gBAAgB,QAAS,UAAW,SAAU,gBAEhC,CAAC,EAAG,GAAI,QAAS,gBACnB,CAAC,KAAM,WAEpC,MAAO,QAAO,UACV,SAAU,OAAgC,OAGzC,WAAe,GAAG,CAAC,UCvB1B,uBAEE,OAAS,gBAAgB,EAAG,IAAK,cACxB,gBAAgB,EAAG,IAAK,WACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA8B,CAAC,EAAG,GAAI,EAAG,IAEzC,MAAO,QAAO,UAAU,QAAS,QAG5B,YAAgB,GAAG,CAAC,WCb3B,4BAEE,OAAS,gBAAgB,EAAG,IAAK,mBACxB,gBAAgB,EAAG,IAAK,gBACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAmC,CAAC,EAAG,GAAI,EAAG,IAE9C,MAAO,QAAO,UAAU,aAAc,QAGjC,iBAAqB,GAAG,CAAC,gBCjBhC,uBACE,WAAe,gBAAgB,OAAO,QAAS,eAEpB,CAAC,MAAO,QACnC,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCPxB,sBACE,OAAW,gBAAgB,EAAG,IAAK,mBAEJ,CAAC,EAAG,IAEnC,MAAO,QAAO,UAAU,SAAU,QAE7B,cAAiB,GAAG,CAAC,YCP5B,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SCPzB,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBACP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,WAAc,GAAG,CAAC,SCAzB,4BAA+D,IAC7D,OAAW,gBAAgB,EAAG,IAAK,oBAEH,CAAC,EAAG,UACN,CAAC,OAE/B,MAAO,QAAO,UACV,UAAW,OAAgC,OAG1C,cAAkB,GAAG,CAAC,aCb7B,oBAEE,OAAS,gBAAgB,EAAG,IAAK,WACxB,gBAAgB,EAAG,IAAK,QACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA2B,CAAC,EAAG,GAAI,EAAG,IAEtC,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCZxB,yBAEE,OAAS,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAgC,CAAC,EAAG,GAAI,EAAG,IAE3C,MAAO,QAAO,UAAU,UAAW,QAG9B,cAAkB,GAAG,CAAC,aCrBvB,kCACJ,GAAI,KAAO,EACT,KAAM,IAAI,OAAM,4CAGlB,UAA6B,CAAC,MAAO,KAAM,KAC3C,MAAO,QAAO,UAAU,SAAU,GAAI,OCIxC,mDACmC,OAAU,QAAW,OAAU,IAChE,OAAW,gBAAgB,EAAG,IAAK,8BAC9B,OACD,GAAG,OAAS,GAAK,GAAG,OAAS,EAC7B,IAAM;sBACU,GAAG,SAClB,OACI,MAAM,aACX,IAAM,2FAC6B,gBAEvC,QAAU,gBACS,GACf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG3D,WAA0B,CAAC,EAAG,WAEN,CAAC,YAAa,KAAM,MAAO,UAGvC,OAAO,UACH,IAAK,OACL,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEpD,IAIJ,+BAAmC,GAAG,CAAC,8BCzC9C,iBACE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OCLvB,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAChC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SCazB,iBAEE,MAAK,QACI,WAAW,GAAI,IAAM,8CACvB,SAEL,OAAW,gBAAgB,EAAG,IAAK,UAAW,UAEzC,IAAM,KAAQ,gBAAgB,GAAI,KAAM,WAAa,KAC1D,MAAO,QAAO,KAAK,KACjB,IAAO,MAAO,cAAS,OAAO,UAAU,IAAM,EAAE,IAAK,CAAC,IAAK,KAC3D,MAAI,MAAO,MACJ,kBACD,MAAM,MAAO,IAAI,MACjB,kFAGN,WAAW,QACJ,OAAM,MAkCnB,kBAEE,MAAK,QACI,WAAW,GAAI,IAAM,+CACvB,YACA,OACD,MAAM,QAAQ,MACd,IAAM,oFAGV,UAAc,qBAAqB,KAAM,OAAQ,WAAY,UAExD,IAAM,KAAQ,gBAAgB,GAAI,KAAM,YAAc,KAC3D,MAAO,QAAO,KAAK,KACjB,IAAO,MAAO,cAAS,OAAO,UAAU,IAAM,EAAE,GAAG,OAAQ,MAAO,KAClE,MAAI,MAAO,MACJ,kBACD,MAAM,MAAO,IAAI,MACjB,iGAGN,WAAW,QACJ,UA8Bb,yBAKE,MAAK,QACI,WAAW,GAChB,IAAM,sDACH,SACA,OACD,YAAa,QACb,IAAM,uDACL,OACD,IAAM,MAAQ,aAAc,QAC5B,IAAM,4DACV,IAAO,aAAO,OAAS,OAAO,UAAU,IAAM,EAAE,GAAI,CAAC,GAAI,IACzD,MAAA,YAAW,QACJ,CAAC,KAAM,OAAM,GAAS,QAmCjC,0BAKE,MAAK,QACI,WAAW,GAChB,IAAM,uDACH,YACA,OACD,MAAM,QAAQ,OAAS,KAAK,MAAM,KAAO,cAAe,SACxD,IAAM,sEAEL,OACD,IAAM,MAAQ,aAAc,QAC5B,IAAM,gEACV,QAAY,OAAO,UAAU,IAAM,EAAE,GAAG,MAAO,KAAM,IACrD,MAAI,KAAM,MACH,kBACD,IAAI,MAAM,MAAO,GAAG,MACpB,yGAGN,WAAW,IAAI,OACR,KAkCX,kCAEO,OACI,WAAW,GAChB,IAAM,uDACL,OACD,SAAW,MACP,MAAM,QAAQ,UAAY,QAAQ,MAAM,GAAK,YAAa,WAC9D,IACI,iFAGR,qBAAyB,SAAW,KACpC,GAAI,CAAC,kBAEH,QAAU,GACV,kBAAsB,QAAO,oBAC3B,QAAQ,KAAK,OAAO,oBAAoB,UAI5C,0BACI,iBAAmB,QAAQ,OAAO,WAAY,CAAC,UAAS,WAAa,sBAGhD,QAAQ,OACjC,QAAU,QAAQ,OAAO,WAAY,UAAS,WACzC,OACD,QAAQ,OAAS,EACjB,IAAM,gGAC+B,4CAGzC,qBAAyB,IAClB,MAAO,cAAS,OAAO,UAAU,EAAG,QAAS,KAAM,kBAErD,OACD,OAAM,KAAK,GAAK,GAAK,MACrB,IAAM,gMAGL,OACD,MAAM,OAAS,EACf,IAAM,iFACiB,MAAM,eAEjC,eAAmC,GACnC,MAAA,SAAQ,QAAQ,QACV,OAAM,IAAM,MACd,YAAW,EAAE,MAAQ,OAAM,MAG3B,uBAAyB,MAG3B,sBAAsB,QAAQ,GAAK,WAAW,EAAE,MAAQ,MAEnD,CAAC,MAAO,MAAO,YA2CxB,uBAEE,MAAO,QAAO,WAAW,GAG3B,4BACE,qBAAyB,OAAM,OAAO,GAAK,GAAK,MAAM,OACtD,GAAI,iBAAmB,EACrB,KAAM,IAAI,OACN;sECtVR,iBACE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OCPvB,sBACE,OAAW,gBAAgB,EAAG,IAAK,mBAEJ,CAAC,EAAG,IACnC,MAAO,QAAO,UAAU,SAAU,QAE7B,aAAiB,GAAG,CAAC,YCH5B,wBACE,OAAW,gBAAgB,EAAG,IAAK,uBAKlB,WAAW,KAI1B,UAAc,IAAI,SAAS,IAAI,eAEd,KACf,SAAa,IAAI,GAAI,QAAQ,IAAI,MACjC,MAAO,OAET,MAAO,CAAC,MAAO,YAGjB,MAAO,UAAS,IAEX,eAAmB,GAAG,CAAC,cCN9B,qBACkD,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,UACN,CAAC,iBAAkB,KAAM,UAEjD,MAAO,QAAO,UACV,IAAK,OAAgC,OAGpC,QAAY,GAAG,CAAC,OClBvB,mBACE,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA0B,CAAC,EAAG,GAAI,EAAG,IAErC,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OCFvB,qBACkD,cAAiB,IACjE,OAAS,gBAAgB,EAAG,IAAK,OAC7B,GAAG,QAAU,QACf,IAAK,KAAK,GAAI,UAGhB,WAA0B,CAAC,EAAG,UACN,CAAC,KAAM,UAE/B,MAAO,QAAO,UACV,IAAK,OAAgC,OAGpC,SAAY,GAAG,CAAC,OCjBvB,iCAAoE,IAClE,YAAgB,gBAAgB,OAAQ,SAAU,cAKlD,GAHI,OAAS,IACX,MAAO,QAAQ,KAAO,GAEpB,OAAS,QAAQ,KAAO,EAC1B,KAAM,OACF,gFACmB,QAAQ,qBAAqB,QAetD,aAAiB,WAAW,iBAC1B,aAAiB,QACJ,IAAI,QAAQ,KAAM,YACf,IAAI,QAAQ,YAExB,IAAI,KAAK,QAAS,WAAY,IAAI,KAAI,IAAI,SAAU,KAAM,YAC9D,KAAK,CAAC,QAEN,aAAiB,aACf,YAAgB,gBACC,YACD,IAAI,QACpB,MAAO,KAAI,GAAI,IAAI,KAAI,GAAI,KAAM,WAAW,YAE9C,MAAO,CAAC,MAAO,YAGjB,MAAO,UAAS,SAUX,eAAmB,GAAG,CAAC,cClFxB,yCACJ,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,EACjC,GAAI,KAAK,KAAK,OAAS,EAAI,KAAO,KAAO,EAAI,EAC3C,MAAO,GAGX,MAAO,GAGH,oDAEJ,SAAa,UAAU,OAAS,UAAU,WAC9B,UACC,YACG,EACd,YAAe,EAAG,IAAM,KAAM,MAC1B,KAAK,QAAQ,OAAS,GACxB,IAAI,KAAK,UAAU,WAEnB,IAAI,KAAK,UAAU,cAGvB,MAAO,KAGH,gDAEJ,aAAiB,QACJ,OAAO,OACpB,YAAe,EAAG,IAAM,KAAM,MACxB,KAAK,QAAQ,OAAS,IACxB,SAAS,KAAK,OAAO,MAGzB,gBAAoB,KAAK,IAAI,KAAO,OAAO,MAC3C,MAAO,CAAC,SAAU,aAGd,0CAEJ,mBAAuB,KAAK,IAAI,GAAK,GACrC,MAAO,kBAAiB,MAAO,eAAgB,MAG3C,mDAEC,OACD,qBAAqB,KAAM,MAC3B,IAAM,GAAG,uDACO,iBAAiB,eAQjC,uCAEJ,GAAI,qBAAqB,KAAM,MAC7B,MAAO,MAET,WAAyB,GACzB,UAAa,EAAG,EAAI,KAAM,EAAE,EACtB,KAAK,QAAQ,KAAO,IACtB,OAAO,KAAK,GAGhB,MAAA,MAAK,QAAQ,MAAQ,OAAO,KAAK,OAC1B,OAIH,sCACJ,MAAO,MAAK,IAAI,UAAa,CAAC,EAAG,OAC5B,KAAK,OAAU,EAAE,GAAK,EAAE,IACxB,IAAI,GAAK,EAAE,IAGZ,wCACJ,QAAsB,GACtB,UAAa,KAAO,QAAS,EAAI,KAAM,EAAE,EACvC,IAAI,KAAK,GAEX,MAAO,KC9CT,2BACkD,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,kBAEtB,eAAe,KAAM,GAAG,YACxB,IAAI,GAAI,KAAM,MACjB,IAAI,GAAI,QACR,IAAI,KACJ,KAAI,EAAG,QACP,IAAI,OACF,KAAI,QAAQ,KAAM,EAAE,OAAQ,GAExC,GAAI,UACF,aAAiB,qBAAqB,IAAI,MAAO,MACjD,MAAO,SAAQ,IAAK,UAEtB,MAAO,KAGF,cAAkB,GAAG,CAAC,aCvC7B,0BAEE,OAAW,gBAAgB,EAAG,IAAK,aAAc,WACtC,gBAAgB,EAAG,IAAK,aAAc,QACjD,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAiC,CAAC,EAAG,GAAI,EAAG,IAE5C,MAAO,QAAO,UAAU,WAAY,QAG/B,eAAmB,GAAG,CAAC,cCd9B,wBACE,OAAW,gBAAgB,EAAG,IAAK,aAAc,eAChB,CAAC,EAAG,IACrC,MAAO,QAAO,UAAU,WAAY,QAG/B,eAAmB,GAAG,CAAC,cCJ9B,yBAEE,OAAW,gBAAgB,EAAG,IAAK,YAAa,WACrC,gBAAgB,EAAG,IAAK,YAAa,QAChD,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAgC,CAAC,EAAG,GAAI,EAAG,IAC3C,MAAO,QAAO,UAAU,UAAW,QAE9B,cAAkB,GAAG,CAAC,aCP7B,0BAEE,OAAW,gBAAgB,EAAG,IAAK,aAAc,WACtC,gBAAgB,EAAG,IAAK,aAAc,QACjD,MAAA,4BAA2B,GAAG,MAAO,GAAG,OAGjC,WAAW,UAAU,EAAG,GAAI,WAAW,WAAW,EAAG,KAGvD,eAAmB,GAAG,CAAC,cCG9B,8DAIE,OAAW,gBAAgB,EAAG,IAAK,qBACjB,MAER,gBACS,GACf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGtD,OACD,IAAI,OAAS,EACb,IAAM,uDAAuD,IAAI,SAChE,OACS,+BAA+B,QAAS,WAClD,IAAM,wEACa,0BAA0B,cAC7C,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,wEACiB,+BAA+B,UAG5D,WAA8B,CAAC,EAAG,WAEN,CAAC,WAAY,QAAS,IAAA,MAAK,qBAG3C,OAAO,UACH,QAAS,OACT,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,YAAgB,GAAG,CAAC,WCxB3B,iCACmE,CAAC,EAAG,EAAG,4CAGxC,mBAE5B,WAAa,KACf,UAAY,CAAC,EAAG,EAAG,GAEnB,gBACI,+DAIN,OAAW,gBAAgB,EAAG,IAAK,iBAEzB,gBACS,GACf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGnE,OACD,IAAI,OAAS,EACb,IAAM,qDAAqD,IAAI,SAC9D,OACD,aAAe,QACf,IAAM,gFACuB,cAC5B,OACS,+BAA+B,QAAS,WAClD,IAAM,0EACa,0BAA0B,cAC7C,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,0EACiB,+BAA+B,UAG5D,WAAgC,CAAC,EAAG,WAGhC,CAAC,WAAY,QAAS,IAAA,MAAK,gBAAiB,WAAY,eAGhD,OAAO,UACH,UAAW,OACX,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAIhE,IAGF,cAAkB,GAAG,CAAC,aC1E7B,2EAG0B,IACxB,OAAW,gBAAgB,EAAG,IAAK,4BAEK,CAAC,EAAG,UAEf,CAAC,WAAY,QAAS,IAAA,MAAK,4BAGzC,OAAO,UACH,kBAAmB,OACnB,OAEnB,MAAO,CAAC,OAAQ,OAAO,GAAI,QAAS,OAAO,IAGtC,sBAA0B,GAAG,CAAC,qBCtBrC,uBAEE,OAAS,gBAAgB,EAAG,IAAK,cACxB,gBAAgB,EAAG,IAAK,WACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE1B,GAAG,QAAU,QACf,IAAK,KAAK,GAAI,SACd,GAAK,KAAK,GAAI,UAEhB,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA8B,CAAC,EAAG,GAAI,EAAG,IAEzC,MAAO,QAAO,UAAU,QAAS,QAG5B,YAAgB,GAAG,CAAC,WCjB3B,sBACkD,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,UACN,CAAC,KAAM,UAEhC,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,SAAa,GAAG,CAAC,QCZxB,qBACkD,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,UACN,CAAC,KAAM,UAG/B,MAAO,QAAO,UACH,IAAK,OACL,OAGN,QAAY,GAAG,CAAC,OCZvB,uBAEE,OAAS,gBAAgB,EAAG,IAAK,cACxB,gBAAgB,EAAG,IAAK,WACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE1B,GAAG,QAAU,QACf,IAAK,KAAK,GAAI,SACd,GAAK,KAAK,GAAI,UAGhB,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA8B,CAAC,EAAG,GAAI,EAAG,IAEzC,MAAO,QAAO,UAAU,QAAS,QAG5B,YAAgB,GAAG,CAAC,WCrB3B,qCAGO,OACD,OAAS,WAAa,OAAS,YAC/B,IAAM,+DACK,SAEf,OAAW,gBAAgB,EAAG,IAAK,aACnC,GAAI,GAAG,OAAS,EACd,KAAM,IAAI,OACN,kEAGD,OACD,SAAS,SAAW,GAAG,KACvB,IAAM,wCAAwC,GAAG,aACtC,SAAS,WACxB,gBAAoB,OAAS,UAAY,EAAI,EAC7C,UAAa,EAAG,EAAI,GAAG,KAAM,IACtB,OACD,SAAS,GAAG,SAAW,EACvB,IAAM,yDACL,OACD,SAAS,GAAG,IAAM,GAAK,SAAS,GAAG,IAAM,GAAG,MAAM,GAAK,aACnD,SAAS,GAAG,IAAM,GAAK,SAAS,GAAG,IAAM,GAAG,MAAM,GAAK,YAC3D,IAAM,wBAAwB,wCACpB,GAAG,MAAM,GAAK,iDACX,GAAG,SAGtB,UAA8B,CAAC,SAAU,aACT,CAAC,EAAG,IACpC,MAAO,QAAO,UACV,UAAW,OAAgC,OAG1C,cAAkB,GAAG,CAAC,aCnC7B,mBACE,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA0B,CAAC,EAAG,GAAI,EAAG,IAErC,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OC9BvB,oBACE,OAAW,gBAAgB,EAAG,IAAK,gBACrB,GACd,MAAO,QAAO,UAAU,SAAU,CAAC,EAAG,IAAK,OAGtC,WAAe,GAAG,CAAC,UCG1B,yBACkD,cACnC,IACb,EAAI,gBAAgB,EAAG,IAAK,WAC5B,SAAa,eAAe,KAAM,EAAE,aACtB,KAAK,EAAG,KAAM,wBACR,MAAM,MACrB,UACH,eAAgB,qBAAqB,MAAM,MAAO,OAEpD,eACI,OAAO,IAAI,KAAK,EAAG,WAAY,QAAQ,MAAO,0BACjC,KAAK,WAAY,KAAM,UACxC,MAAO,CAAC,KAAM,MAAO,UAGhB,YAAgB,GAAG,CAAC,WChB3B,2CAIE,UAAc,gBAAgB,KAAM,OAAQ,mBACjC,qBAAqB,EAAG,IAAK,mBAC7B,qBAAqB,EAAG,IAAK,uBAE5B,gBACM,GAClB,UAAa,EAAG,EAAI,UAAU,OAAQ,KACpC,WAAe,UAAU,GAAG,OAAO,GAAG,GAAI,GAAG,IAC7C,UAAU,KAAK,OAAO,IACtB,UAAU,KAAK,OAAO,IACtB,OAAQ,OAAO,GAEjB,SAAyB,QACA,GACzB,UAAa,EAAG,EAAI,UAAU,OAAQ,GAAK,EACzC,KAAK,KAAK,UAAU,IACpB,KAAK,KAAK,UAAU,EAAI,IAE1B,MAAO,CAAC,KAAM,MAET,iBAAqB,GAAG,CAAC,gBCpBhC,wDAEiB,IACf,YAAgB,gBAAgB,OAAQ,SAAU,2BAC9B,QAAQ,cACX,QAAQ,KACzB,GAAI,YAAc,EAChB,KAAM,IAAI,OACN,+DACG,gBAET,GAAI,SAAW,EACb,KAAM,IAAI,OAAM,gDAAgD,YAIlE,KAAO,MAAQ,KAAK,SAGpB,aACI,WAAa,EAAI,QAAQ,QAAS,CAAC,EAAG,KAAO,eAEf,CAAC,OAAQ,gBACX,CAAC,WAAY,KAAM,gBAGvC,OAAO,UACH,YAAa,OACb,OAGhB,MAAO,YAAa,EAAI,QAAQ,IAAK,CAAC,IAAI,OAAqB,IAG1D,gBAAoB,GAAG,CAAC,eCzC/B,wBAEE,OAAS,gBAAgB,EAAG,IAAK,eACxB,gBAAgB,EAAG,IAAK,YACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA+B,CAAC,EAAG,GAAI,EAAG,IAE1C,MAAO,QAAO,UAAU,SAAU,QAG7B,aAAiB,GAAG,CAAC,YCjBtB,2BACoC,WACxC,GAAI,QAAU,aACZ,UAAa,MAAM,MAAO,iBACb,MAAM,MAAO,WAC1B,MAAO,SAAQ,MAAM,OAEvB,WAAe,oBAAoB,cAAc,OAAQ,OACzD,MAAO,QAAO,WAAW,OAAQ,MAAO,OCPpC,2BACoC,WACxC,GAAI,QAAU,aACZ,UAAa,MAAK,MAAO,iBACZ,MAAM,MAAO,WAC1B,MAAO,SAAQ,MAAM,OAEvB,WAAe,mBAAmB,cAAc,OAAQ,OACxD,MAAO,QAAO,WAAW,OAAQ,MAAO,OCR1C,sBACE,OAAW,gBAAgB,EAAG,IAAK,mBAEJ,CAAC,EAAG,IACnC,MAAO,QAAO,UAAU,SAAU,QAG7B,aAAiB,GAAG,CAAC,YCN5B,8BAEE,QAAY,gBAAgB,GAAI,KAAM,oBAC1B,gBAAgB,GAAI,KAAM,gBAEjC,OACD,IAAI,OAAS,GAAK,IAAI,OAAS,EAC/B,IAAM,+DACC,IAAI,YAAY,IAAI,SAE/B,SAAa,QAAQ,IAAK,CAAC,GAAI,SAClB,QAAQ,IAAK,CAAC,EAAG,KAC9B,MAAO,QAAO,KAAM,MAGf,iBAAqB,GAAG,CAAC,gBCFhC,uCACwE,GACtE,OAAW,gBAAgB,EAAG,IAAK,OACnC,GAAI,GAAG,OAAS,EACd,KAAM,IAAI,OAAM,sDAGlB,UAA0B,CAAC,SAAU,sBACT,CAAC,EAAG,IAChC,MAAO,QAAO,UACV,MAAO,OACP,OAGC,QAAY,GAAG,CAAC,OCzCvB,yCAEoB,GAClB,MAAA,QACI,SAAS,SAAW,EACpB,IAAM,oDACH,IAAI,EAAG,CAAC,UAAW,eAGrB,UAAc,GAAG,CAAC,SCTzB,yCAEoB,GAClB,MAAA,QACI,SAAS,SAAW,GAAK,SAAS,GAAG,SAAW,GAC5C,SAAS,GAAG,SAAW,EAC3B,IAAM,yDACH,IAAI,EAAG,SAAU,eAGnB,UAAc,GAAG,CAAC,SCVzB,yCAGoB,GAClB,MAAA,QACI,SAAS,SAAW,GAAK,SAAS,GAAG,SAAW,GAC5C,SAAS,GAAG,SAAW,GAAK,SAAS,GAAG,SAAW,EACvD,IAAM,yDACH,IAAI,EAAG,SAAU,eAGnB,UAAc,GAAG,CAAC,SCXzB,yCAMoB,GAClB,MAAA,QACI,SAAS,SAAW,GAAK,SAAS,GAAG,SAAW,GAC5C,SAAS,GAAG,SAAW,GAAK,SAAS,GAAG,SAAW,GACnD,SAAS,GAAG,SAAW,EAC3B,IAAM,yDACH,IAAI,EAAG,SAAU,eAGnB,UAAc,GAAG,CAAC,SCoCzB,gDAEE,OAAW,gBAAgB,EAAG,IAAK,kBAE9B,OACD,GAAG,MAAQ,EAAI,WAAW,OAC1B,IAAM,cAAc,GAAG,sCACnB,WAAW,UAEd,OACD,SAAS,SAAW,WAAW,OAC/B,IAAM,qBACF,SAAS,wCAAwC,WAAW,UAE/D,OACD,GAAG,MAAM,OACL,SACM,EAAI,GAAK,GAAK,WAAW,OACpB,GACD,GAAI,SAAS,EAAI,GAAG,GAAK,SAAS,EAAI,GAAG,IACtC,WAAW,EAAI,KACnB,EAEA,EAET,IACJ,IAAM,4BAA4B,GAAG,MAAM,MAAM,oBAC7C,SAAS,+CACT,WAAW,cAEnB,WAAqC,CAAC,EAAG,UACN,CAAC,WAAY,UAEhD,MAAO,QAAO,UACV,eAAgB,OAChB,OAGC,mBAAuB,GAAG,CAAC,kBC1DlC,uEAIM,WAAa,MACf,WAAY,CAAC,EAAG,IAEd,SAAW,MACb,SAAU,GAER,QAAQ,GACV,OAAM,SAGR,OAAW,gBAAgB,OAAO,IAAK,eAC7B,gBACS,GAEf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGtD,OACS,+BAA+B,QAAS,WAClD,IAAM,qEACa,0BAA0B,cAEjD,aAA2B,kBACvB,IAAI,MAAO,YAAa,QAAS,UAAW,gBAE5C,CAAC,SAAS,eAAgB,SAAS,2BAQnC,QAAQ,OACV,YAAc,6BACV,CAAC,SAAS,aAAc,SAAS,aAAc,UAEnD,YAAc,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,IAG7B,kBAAsB,SAAS,KAAO,GAAK,SAAS,KAAO,kCAClB,6BACrC,CAAC,SAAS,SAAU,SAAS,SAAU,SAAU,0BAChC,cAAgB,MAAM,mBAEvC,cAAgB,IAAM,eAAe,IAAK,SAAU,2BAEtC,cAAgB,MAC9B,IAAM,QAAQ,WAAY,YAAa,QAAS,cAChD,IAAM,QAAQ,WAAY,YAAa,QAAS,gBAC1C,gBAEE,cAAgB,EAAI,eAAe,EAAG,SAAU,eAE5D,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGtD,IAMT,yEAGE,aAAiB,YAAY,IAAI,GAAK,EAAE,eACrB,YAAY,IAAI,GAAK,EAAE,mBACnB,WAAW,OAAO,SAAU,wBAC/B,WAAW,IAAI,OAAW,GAAI,eAAe,GAAK,GAAK,UAC5D,WAAW,IAAI,OAAU,EAAI,YAAY,aACvC,WAAW,IAAI,OAAU,CAAC,SAAS,GAAI,OAAO,WACjD,WAAW,IAAI,OAAU,CAAC,EAAG,YAAY,KACvD,MAAO,CAAC,SAAU,OAMpB,4DAIE,uBAA2B,YAAY,IAAI,OAClC,EAAK,GAAI,GAAM,UAAS,GAAK,kBAEhB,mBAAmB,IAAI,GAAK,EAAI,iBAIhC,cAAc,IAAI,GAAK,KAAK,MAAM,EAAI,gBACxC,cAAc,IAAI,OAAU,EAAI,cAAc,IAClE,MAAO,eAAc,IAAI,OAChB,CAAC,cAAc,GAAI,YAAY,KAInC,SAAa,GAAG,CAAC,QC1GxB,2BAEE,UAAY,gBAAgB,MAAM,OAAQ,YAC/B,gBAAgB,MAAK,MAAO,OACvC,CAAC,MAAO,MAAQ,eAAe,MAAO,MAEtC,WAA0B,CAAC,EAAG,MAAO,EAAG,MAExC,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OCvBvB,yBACE,OAAW,gBAAgB,EAAG,IAAK,gBACpB,gBAAgB,MAAO,QAAS,gBAEnB,CAAC,EAAG,GAAI,MAAO,QAC3C,MAAO,QAAO,UAAU,MAAO,QAG1B,UAAc,GAAG,CAAC,SCQzB,sBACkD,cAAiB,IACjE,OAAS,gBAAgB,EAAG,IAAK,QAE7B,GAAG,QAAU,QAEf,IAAK,KAAK,GAAI,UAGhB,WAA2B,CAAC,EAAG,UACN,CAAC,KAAM,UAEhC,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,SAAa,GAAG,CAAC,QCzCxB,yCAGE,SAAa,cAAc,cACd,KACb,GAAI,OAAS,MAAQ,QAAU,UAC7B,OAAS,GAAI,cAAa,cACjB,QAAU,QACnB,OAAS,GAAI,YAAW,cACf,QAAU,OACnB,OAAS,GAAI,YAAW,UAExB,MAAM,IAAI,OAAM,qBAAqB,SAEvC,UAAa,EAAG,EAAI,KAAM,IACxB,OAAO,GAAK,eAEd,MAAO,QAAO,WAAW,OAAQ,MAAO,OAGnC,SAAa,GAAG,CAAC,mBCpCI,YAAA,mCCjB5B,MAmDE,qDAGE,KAAK,KAAO,MACZ,KAAK,OAAS,aACd,KAAK,MAAQ,MACb,KAAK,QAAU,IACf,KAAK,UAAY,UACb,KAAK,WACP,MAAK,MAAQ,KAAK,KAAO,KAAK,OAAS,EACvC,KAAK,MAAQ,KAAK,KAAO,KAAK,OAAS,GAEzC,cAAkB,MAAc,KAAK,SACrC,KAAK,OAAoB,WAAA,KAAK,UAAU,YAInC,YACL,GAAI,CAAC,MAAM,KAAK,UACd,UAAc,KAAK,QACnB,MAAA,MAAK,QAAU,IACR,MAGT,4BACc,GACd,KAAO,CAAC,UACN,YACA,EACE,IAAK,EAAI,KAAK,SAAW,EACzB,GAAK,EAAI,KAAK,SAAW,EACzB,EAAI,GAAK,GAAK,GAAK,SACZ,GAAK,GAAK,IAAM,GAEzB,UAAY,KAAK,KAAK,GAAO,KAAK,IAAI,GAAK,GAC3C,QAAU,KAAK,KAAO,KAAK,OAAS,GAAK,MACzC,QAAU,KAAK,KAAO,KAAK,OAAS,GAAK,MAErC,EAAC,KAAK,WAAa,KAAK,iBAAiB,WAC3C,SAAU,IAId,MAAI,EAAC,KAAK,WAAa,KAAK,iBAAiB,WAC3C,MAAK,QAAU,KAAK,aAAa,UAE5B,KAAK,aAAa,SAInB,oBACN,MAAI,MAAK,OAAS,MAAQ,KAAK,QAAU,UAChC,MAEF,KAAK,MAAM,OAIZ,wBACN,MAAO,QAAS,KAAK,OAAS,OAAS,KAAK,kBA9GhD,MA6HE,mCAGE,KAAK,MAAQ,MACb,KAAK,KAAO,EAAI,KAChB,KAAK,MAAQ,MAEb,cAAkB,MAAc,KAAK,SACrC,KAAK,MAAmB,WAAA,KAAK,UAAU,YACvC,KAAK,MAAQ,GAAI,aAAY,EAAG,EAAG,MAAO,GAAO,KAAK,SAElD,MAAQ,EACV,KAAK,EAAI,MAAS,EAAI,EAEtB,KAAK,EAAI,MAAS,EAAI,EAExB,KAAK,EAAI,EAAI,KAAK,KAAK,EAAI,KAAK,GAI3B,YACL,mBACA,QACE,EACE,GAAI,KAAK,MAAM,YACf,EAAI,EAAK,KAAK,EAAI,QACX,GAAK,GAMd,GALA,GAAK,EAAI,EACT,GAAK,EAAI,EACT,GAAK,EAAK,KAAQ,GAAK,GACvB,GAAM,GAAM,GAAO,KAAK,EAAK,GAAI,EAAI,KAAK,IAAI,IAC9C,EAAI,KAAK,QACL,EAAI,IAAM,KAAK,IAAI,GAAK,GAC1B,MAGJ,MAAA,GAAK,EAAI,KAAK,KAAQ,KAAK,EAAI,EAC3B,KAAK,MAAQ,GACf,IAAK,KAAK,IAAI,KAAK,QAAS,EAAI,KAAK,QAEhC,KAAK,aAAa,GAGnB,oBACN,MAAI,MAAK,QAAU,UACV,MAEF,KAAK,MAAM,uBA5KtB,MAsLE,iBACU,QAAS,cAYjB,GAQM,KAAA,eAAiB,IACpB,KAAK,OAAS,MAAQ,KAAK,QAAU,UAnBxC,KAAK,IAAM,KACX,KAAK,MAAQ,MAAM,KACnB,KAAK,MAAQ,MACT,MAAQ,MACV,MAAO,KAAK,UAEV,MAAO,OAAS,UAClB,MAAO,KAAK,YAGV,CAAC,KAAK,kBAAoB,KAAK,OAAS,EAC1C,KAAM,IAAI,OACN,0BAA0B,UAAS,qCAEzC,KAAK,OAAoB,WAAA,KAAK,MAOxB,oBACN,MAAI,MAAK,iBACA,MAEF,KAAK,MAAM,OAGpB,YACE,MAAO,MAAK,aAAa,KAAK,IAAM,KAAK,MAAQ,KAAK,YC9K1D,uCAC8C,QACf,gBAO7B,GANI,MAAQ,MACV,MAAO,GAEL,OAAS,MACX,OAAQ,WAEN,QAAU,WAAa,QAAU,QACnC,KAAM,IAAI,OAAM,yBAAyB,SAE3C,WAAe,GAAI,WAAU,MAAO,KAAM,MAAO,UACrC,OAAO,MAAO,OAC1B,UAAa,EAAG,EAAI,IAAI,OAAO,OAAQ,IACrC,IAAI,OAAO,GAAK,OAAO,YAEzB,MAAO,KAAI,WAGN,gBAAoB,GAAG,CAAC,eCrB/B,mCAC+B,SAAY,cAEzC,GAAI,OAAS,MAAS,QAAuB,OAC3C,KAAM,IAAI,OAAM,yBAAyB,SAE3C,cACI,GAAI,aAAY,MAAM,OAAQ,MAAO,GAAuB,UACpD,OAAO,MAAO,OAC1B,UAAa,EAAG,EAAI,IAAI,OAAO,OAAQ,IACrC,IAAI,OAAO,GAAK,UAAU,YAE5B,MAAO,KAAI,WAGN,iBAAqB,GAAG,CAAC,gBCVhC,qCACiC,SAAY,QAAqB,gBAEhE,QAAY,OAAO,MAAO,cACX,GAAI,eAAc,OAAQ,OAAQ,KAAM,MACvD,UAAa,EAAG,EAAI,IAAI,OAAO,OAAQ,IACrC,IAAI,OAAO,GAAK,OAAO,YAEzB,MAAO,KAAI,WAGN,kBAAsB,GAAG,CAAC,iBCd3B,gCACkC,QACT,WAC7B,GAAI,QAAS,EACX,KAAM,IAAI,OAAM,8BAGlB,UAA0B,CAAC,MAAO,KAAM,KAAA,MAAM,OAE9C,MAAO,QAAO,UAAU,MAAO,GAAiB,OCVlD,uBACE,WAAe,gBAAgB,OAAO,QAAS,eAEpB,CAAC,MAAO,QACnC,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCTxB,wBACE,OAAW,gBAAgB,EAAG,IAAK,qBAEF,CAAC,EAAG,IACrC,MAAO,QAAO,UAAU,WAAY,QAE/B,eAAmB,GAAG,CAAC,cCL9B,kBACE,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCRxB,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAG1B,UAAc,GAAG,CAAC,SCWzB,0BAEE,OAAW,gBAAgB,EAAG,IAAK,kBAEL,CAAC,EAAG,UACN,CAAC,KAAM,MAEnC,MAAO,QAAO,UACV,QAAS,OAAgC,OAGxC,YAAgB,GAAG,CAAC,WCxC3B,uBACE,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IAAM,qDAAqD,GAAG,SAC3D,QAAQ,GAAI,GAGd,cAAkB,GAAG,CAAC,aCN7B,4BACE,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IAAM,qDAAqD,GAAG,SAC3D,QAAQ,GAAI,MAGd,cAAkB,GAAG,CAAC,aCR7B,4BACE,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IAAM,qDAAqD,GAAG,SAC3D,QAAQ,GAAI,MAGd,cAAkB,GAAG,CAAC,aCR7B,4BACE,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IAAM,qDAAqD,GAAG,SAC3D,QAAQ,GAAI,MAGd,cAAkB,GAAG,CAAC,aCA7B,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBACP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAG1B,WAAc,GAAG,CAAC,SCPzB,mBACE,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SCTnB,6BAEJ,GAAM,cAAa,QAAU,QAAU,UAAa,MAAM,QAAQ,SAC9D,QAAU,YACZ,KAAM,IAAI,OACN,kFAGN,GAAI,QAAU,UAAY,aAAa,QACnC,CAAE,iBAAiB,aACrB,KAAM,IAAI,OACN,6EAGN,UAAwB,iBACQ,GAChC,MAAO,YAAW,MAAO,MAAO,cAAe,OCbjD,kBACE,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCuBxB,mFAG6D,CAAC,EAAG,cACjC,QAC9B,OAAW,gBAAgB,EAAG,IAAK,oCAE/B,gBAAgB,gBAAiB,kBAAmB,oCAEpD,gBAAgB,gBAAiB,kBAAmB,uBAE9C,gBACS,GAMnB,GALI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGvD,aAAe,OACjB,KAAM,IAAI,OACN,sFAID,OACD,IAAI,OAAS,EACb,IAAM,gEACM,IAAI,SACf,OACD,iBAAiB,OAAS,EAC1B,IAAM,2EACU,iBAAiB,SAChC,OACD,iBAAiB,OAAS,EAC1B,IAAM,2EACU,iBAAiB,SAChC,OACD,iBAAiB,MAAM,KAAO,EAC9B,IACI,yFACuB,iBAAiB,MAAM,OACjD,OACD,iBAAiB,MAAM,KAAO,EAC9B,IAAM,yFAC2B,iBAAiB,MAAM,OAE5D,eAAmB,iBAAiB,MAAM,qBAChB,iBAAiB,MAAM,GAC5C,OACD,iBAAiB,MAAM,KAAO,WAAa,kBAC3C,IACI,6EACW,WAAa,8BACb,iBAAiB,MAAM,OAE1C,cAAkB,gBACd,IAAK,iBAAkB,QAAS,MAAK,WAAY,0BAC7B,MAEpB,OAAO,UAAW,iBAAkB,gBAAiB,QAAS,YAElE,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,oBAAwB,GAAG,CAAC,mBCxFnC,oCAEE,OAAW,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aAE9B,OACD,GAAG,QAAU,GAAG,MAChB,IAAM,kDACF,GAAG,iBAAiB,GAAG,WAE1B,OACD,GAAG,OAAS,EAAG,IAAM,qCAAqC,GAAG,WAE5D,OACD,GAAG,OAAS,EAAG,IAAM,qCAAqC,GAAG,WAEjE,UAAc,KAAM,IAAG,aACT,KAAM,IAAG,YACV,GAAI,KAAI,kBAEJ,EACjB,UAAa,EAAG,EAAI,MAAM,OAAQ,IAC3B,KAAK,IAAI,MAAM,KAClB,aAIJ,YAAe,GAAI,cAAa,CAAC,YAAa,GAAG,eACjC,GAAI,cAAa,CAAC,YAAa,SAC/C,UAAa,KAAO,EAAG,EAAI,MAAM,OAAQ,IAClC,KAAK,IAAI,MAAM,KAClB,SAAO,OAAO,IAAK,MAAM,GACzB,QAAQ,OAAO,IAAK,EACpB,MAGJ,MAAO,CAAC,QAAO,WAAY,QAAQ,YAE9B,mBAAuB,gBClD9B,kBACE,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAC/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QCLxB,iBACE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAE9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OCPvB,kBACE,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QCfxB,gCAEE,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IACI,mDAAmD,GAAG,eACvD,MAAM,GAAI,CAAC,OAAQ,CAAC,OAEtB,YAAgB,GAAG,CAAC,WCT3B,gCAGE,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IACI,mDAAmD,GAAG,eACvD,MAAM,GAAI,MAAO,MAEnB,YAAgB,GAAG,CAAC,WCV3B,gCAGE,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IACI,mDAAmD,GAAG,eACvD,MAAM,GAAI,MAAO,MAEnB,YAAgB,GAAG,CAAC,WCV3B,gCAGE,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IACI,mDAAmD,GAAG,eACvD,MAAM,GAAI,MAAO,MAEnB,YAAgB,GAAG,CAAC,WCS3B,6BAAgE,IAC9D,YAAgB,gBAAgB,OAAQ,SAAU,UAAW,WAK7D,GAHI,MAAQ,IACV,KAAM,QAAQ,KAAO,GAEnB,MAAQ,QAAQ,KAAO,EACzB,KAAM,OACF,4EACmB,QAAQ,oBAAoB,OAGrD,WAA8B,CAAC,OAAQ,eACX,CAAC,KAE7B,MAAO,QAAO,UACV,QAAS,OAAgC,OAGxC,YAAgB,GAAG,CAAC,WC1B3B,sBACE,OACI,OAAM,QAAU,YAChB,IAAM,6DACS,OAAM,UAEzB,WAA0B,CAAC,MAAA,QAE3B,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OCXvB,uBACE,OACI,OAAM,QAAU,YAChB,IAAM,8DACS,OAAM,UAEzB,WAA2B,CAAC,MAAA,QAE5B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCJxB,wBACE,uBAA2B,OAAM,MAAM,OAAM,MAAM,OAAS,SAC9C,OAAM,KAAO,uBAE3B,GAAI,oBAAsB,GACxB,iBAAqB,QAAQ,OAAO,CAAC,MAAO,qBAC5C,IAAM,KAAK,mBAIX,gBAAoB,CAAC,MAAO,EAAK,oBAAqB,cACpC,QAAQ,KAAK,QAAQ,CAAC,MAAO,+BAC7B,QAAQ,KAAK,QAAQ,CAAC,MAAO,mCAG3C,QAAQ,MAAM,UAAW,CAAC,EAAG,GAAI,CAAC,MAAO,mBAAqB,IAAK,iBACvC,IAC5B,QAAQ,MAAM,UAAW,CAAC,EAAG,GAAI,CAAC,MAAO,mBAAqB,IAAK,GACnE,OAAO,OAED,OAAO,CAAC,UAAW,eAAgB,KACnC,OAAO,CAAC,UAAW,eAAgB,gBAEzC,QAAQ,QAAQ,EAAG,GAAI,CAAC,YAAY,GAAI,YAAY,KACxD,IAAM,KAAK,cAIb,GAFA,IAAM,KAAK,KAEP,OAAM,OAAS,GAAK,OAAM,MAAM,KAAO,GACzC,SAAa,WACC,OAAM,MAAM,GAC1B,IAAM,QAAQ,IAAK,CAAC,OAAO,IAAI,MAAM,GAAK,OAAO,IAAI,MAAM,KAC3D,KAAK,UAEP,MAAO,KAGF,UAAc,GAAG,CAAC,SCxBzB,uCACmE,GACjE,OAAW,gBAAgB,EAAG,IAAK,gBAEN,CAAC,EAAG,SACP,CAAC,gBAAiB,MAE5C,MAAO,QAAO,UACH,OAAQ,OACR,MAGN,UAAc,GAAG,CAAC,SC1BzB,iCACE,OACI,OAAM,QAAU,UAChB,IAAM,mDAAmD,OAAM,SAEnE,uBAAyB,OAAM,MAAM,OAAM,MAAM,OAAS,SAC5C,OAAM,KAAO,iCAG3B,GAAI,WAAa,MAAQ,UAAY,oBAEnC,UAAc,OAAM,MAAM,IAAI,GAAK,QACtB,OAAM,MAAM,IAAI,GAAK,GAClC,KAAK,OAAM,MAAM,OAAS,GAAK,UAC/B,cAAgB,MAAM,OAAO,MAAO,MACpC,mBAAqB,kBACZ,WAAa,MAAQ,UAAY,oBAE1C,eAAmB,OAAM,MAAM,IAAI,GAAK,GACxC,WAAW,OAAM,MAAM,OAAS,GAAK,UAAY,mBACjD,cAAgB,OAAO,CAAC,OAAO,MAAM,aAAc,OAAM,MAAM,OAAS,GACxE,mBAAqB,cAErB,eAAgB,OAIlB,eAAmB,UAAU,4BAEzB,QAAQ,QAAQ,cAAe,YAAa,CAAC,MAAO,yBAE5C,IAAI,mBAGH,KAAK,MAAM,mBAAqB,GAAK,aAC/B,KAAK,gBACL,KAAK,0BACK,MACzB,WAAY,CAAC,KAAM,mBAAqB,MACxC,WAAW,MAAM,OAAS,wBACD,MACzB,WAAY,CAAC,KAAM,mBAAqB,MACxC,WAAW,MAAM,OAAS,eAEV,cAAc,MAAM,QACxC,MAAA,aAAY,cAAc,MAAM,OAAS,GAAK,KAEvC,QACH,QAAQ,qBAAqB,GAAI,qBAAqB,IAAK,aAG1D,SAAa,GAAG,CAAC,QC5DxB,kBACE,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QCOxB,iCAEE,OAAS,gBAAgB,EAAG,IAAK,wBACxB,gBAAgB,EAAG,IAAK,qBACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAwC,CAAC,EAAG,GAAI,EAAG,UACrC,GAEd,MAAO,QAAO,UACV,kBAAmB,OAAqC,OAGvD,sBAA0B,GAAG,CAAC,qBC3BrC,0BACE,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAO,SAAQ,GAAI,aAAa,GAAG,MAAO,MAAM,UAG3C,YAAgB,GAAG,CAAC,WCF3B,6BACyC,GACvC,aAAiB,qBAAqB,QAAS,UAAW,SAErD,OACD,SAAS,QAAU,EAAG,IAAM,wCAE5B,SAAS,OAAS,GACf,OACD,MAAQ,SAAS,GAAG,KAAM,IAAM,sCAGtC,WAA2B,eACF,CAAC,MAE1B,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,UAAc,GAAG,CAAC,SCtBzB,uBAA0D,GACxD,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,UACN,CAAC,OAE1B,MAAO,QAAO,UACV,KAAM,OAAgC,OAErC,SAAa,GAAG,CAAC,QCWxB,qDAEgB,UAAa,eAAkB,cAAiB,iBAC3C,GACnB,OAAW,gBAAgB,EAAG,IAAK,uBAEA,CAAC,EAAG,UACN,CAC/B,MACA,IACA,QACA,UACA,QACA,aACA,YACA,gBAGF,MAAO,QAAO,UACV,aAAc,OACd,OAGC,iBAAqB,GAAG,CAAC,gBC7ChC,iBACE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAE9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OCLjB,gCACJ,cAAc,QACd,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,EAC3B,KAAM,IAAI,OAAM,sDAElB,UAAwB,KACxB,MAAO,YAAW,OAAQ,MAAO,cAAe,OCA5C,sCAIJ,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,iDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,kEAEN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,gFAGN,MAAO,YAAW,OAAQ,MAAO,cAAe,OCjB5C,sCAIJ,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,kDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,sEAEN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,YAAW,OAAQ,MAAO,cAAe,OCjB5C,sCAIJ,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,kDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,wEAGN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,YAAW,OAAQ,MAAO,cAAe,OClB5C,sCAKJ,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,iDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,0EAGN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAA,OAAQ,OACJ,cACG,WAAW,OAAQ,MAAO,cAAe,OCjBlD,mBACyB,SAAY,IACnC,OAAW,gBAAgB,EAAG,IAAK,QACnC,GAAI,GAAG,OAAS,EACd,KAAM,IAAI,OAAM,sDAElB,YAAgB,GAAG,MAAM,GAAG,MAAM,OAAS,GAC3C,GAAI,EAAI,QACN,KAAM,IAAI,OACN,uDAAuD,oBAC5C,KAGjB,WAA2B,CAAC,EAAG,UACN,CAAC,EAAG,yBAEH,OAAO,UAC7B,KAAM,OAAgC,OAE1C,MAAO,CAAC,OAAQ,SAGX,SAAa,GAAG,CAAC,QC7BxB,sCAC+B,SAAY,cAEzC,GAAI,OAAS,MAAS,QAAuB,OAC3C,KAAM,IAAI,OAAM,qCAElB,cACI,GAAI,aAAY,MAAM,OAAQ,MAAO,GAAsB,UACnD,OAAO,MAAO,OAC1B,UAAa,EAAG,EAAI,IAAI,OAAO,OAAQ,IACrC,IAAI,OAAO,GAAK,UAAU,YAE5B,MAAO,KAAI,WAGN,oBAAwB,GAAG,CAAC,mBCkBnC,wBAC4B,GAE1B,OAAW,gBAAgB,EAAG,IAAK,SAAU,MAC7C,OAAO,GAAG,KAAO,EAAG,IAAM,wCAE1B,WAA6B,CAAC,EAAG,UACN,CAAC,uBACF,OAAO,UACH,OAAQ,OACR,OAC9B,MAAO,CAAC,OAAQ,SAGX,WAAe,GAAG,CAAC,UC7C1B,uDAEE,OAAW,gBAAgB,EAAG,IAAK,kCAE/B,gBAAgB,WAAY,aAAc,qBAAsB,SACpE,OAAO,MAAM,aAAc,IAAM,oCAEjC,WAAyC,CAAC,EAAG,GAAI,WAAY,mBACtB,CAAC,aAExC,MAAO,QAAO,UACV,mBAAoB,OACpB,OAGC,uBAA2B,GAAG,CAAC,sBCnBtC,yBAA+C,GAC7C,OAAW,gBAAgB,EAAG,IAAK,WAC9B,OACD,MAAQ,CAAC,GAAG,MAAM,QAAU,KAAO,GAAG,MAAM,OAC5C,IACI,UAAU,oBAAoB,GAAG,MAAM,WAAW,GAAG,MAAM,WAEnE,WAA6B,CAAC,MAAO,UACV,CAAC,MAE5B,MAAO,QAAO,UACV,OAAQ,OAAgC,OAGvC,YAAgB,GAAG,CAAC,WCnBrB,yCACmC,eAEvC,MAAO,QAAO,aAAa,aAAc,UAAW,KAAM,OCjBtD,uCACJ,YAAgB,GAChB,UAAa,EAAG,EAAI,SAAS,OAAQ,IAC/B,SAAS,IACX,QAAQ,KAAK,GAIjB,aAAiB,OAAO,UAAW,aAEvB,OAAO,CAAC,QAAQ,OAAQ,UAAU,QAAS,SACvD,UAAa,EAAG,EAAI,QAAQ,OAAQ,KAClC,QAAY,SAAS,WAAW,QAAQ,WACzB,EAAI,UAAU,OAC7B,IAAI,OAAO,IAAI,IAAK,QAEtB,MAAO,KAAI,WCEb,sCACE,eACI,gBAAgB,UAAW,YAAa,aAAc,aAC7C,KAAM,YAAW,WAClB,UAAU,WAAW,MAAO,MACxC,MAAI,aAAc,YAChB,WAAW,UAEN,IAGF,eAAmB,YCP1B,sDAGE,YAAgB,gBAAgB,UAAQ,SAAU,kBACpC,gBAAgB,KAAM,OAAQ,WAAY,iBAEvC,MAAQ,KAAO,EAAI,aACpB,MAAM,iBACF,QAAQ,MAEvB,OAAO,QAAU,EAAG,IAAM,yBAC1B,kBACD,YAAY,MAAM,SAAU,SAAW,SAAU,MAAM,MACvD,qEAEJ,gBAAkB,EAClB,UAAa,SAAU,EAAI,SAAW,QAAS,IAC7C,aAAe,YAAY,GAE7B,sBACI,YAAY,MAAM,EAAG,UAChB,OAAO,CAAC,aAAc,YAAY,MAAM,SAAW,yBACrC,QAAQ,QAAS,gCACnB,QAAQ,MAAO,CAAC,uBACX,KAAM,YAAW,sBAC3B,QAAQ,kBAAmB,CAAC,QAEhC,OAAO,eAAgB,QAAS,UAG5C,MAAI,aAAW,SACb,QAAQ,UAEN,OAAS,OACX,MAAM,UAER,QAAQ,UACR,eAAe,UACf,aAAa,UACb,kBAAkB,UAEX,IAGF,qBAAyB,kBClDhC,8BAEE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,qBACxB,gBAAgB,EAAG,IAAK,kBACnC,MAAA,mBAAkB,GAAG,MAAO,GAAG,MAAO,6BAC/B,SAAS,GAAI,IAYtB,0BACE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,iBACxB,gBAAgB,EAAG,IAAK,cACnC,MAAA,mBAAkB,GAAG,MAAO,GAAG,MAAO,yBAC/B,KAAK,GAAI,IAGlB,2BACE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,kBACxB,gBAAgB,EAAG,IAAK,eACnC,MAAA,mBAAkB,GAAG,MAAO,GAAG,MAAO,0BAC/B,MAAM,GAAI,IAGnB,+BAEE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,sBACxB,gBAAgB,EAAG,IAAK,mBACnC,MAAA,mBAAkB,GAAG,MAAO,GAAG,MAAO,8BAC/B,UAAU,GAAI,IAGvB,6BACE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,iBACnC,MAAA,mBAAkB,GAAG,MAAO,GAAG,MAAO,4BAC/B,QAAQ,GAAI,IAGrB,kCAEE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,yBACxB,gBAAgB,EAAG,IAAK,sBACnC,MAAA,mBAAkB,GAAG,MAAO,GAAG,MAAO,iCAC/B,aAAa,GAAI,IAGnB,gBAAoB,GAAG,CAAC,kCACG,GAAG,CAAC,oCACT,GAAG,CAAC,iCACF,GAAG,CAAC,8BACT,GAAG,CAAC,6BACA,GAAG,CAAC,kBCzElC,yBACE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,wBACpC,KAAI,GAAI,IAajB,yBACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,wBACpC,IAAI,GAAI,IAajB,iCACE,MAAA,iBACI,6EAGC,kBAAkB,MAAK,MAAO,MAAI,MAAO,wBACvC,IAAI,MAAM,OAanB,yBACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,6BACpC,IAAI,GAAI,IAWjB,yBACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,2BACpC,IAAI,GAAI,IAWjB,yBACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,wBACpC,IAAI,GAAI,IAWjB,6BACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,iBACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,4BACpC,QAAQ,GAAI,IAWrB,6BACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,iBACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,4BACpC,QAAQ,GAAI,IAarB,uCAEE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,8BACxB,gBAAgB,EAAG,IAAK,2BACnC,MAAK,mBACD,GAAG,MAAO,GAAG,MAAO,sCACjB,kBAAkB,GAAI,IAGxB,cAAkB,GAAG,CAAC,uBACJ,GAAG,CAAC,2BACA,GAAG,CAAC,+BACJ,GAAG,CAAC,2BACR,GAAG,CAAC,uBACJ,GAAG,CAAC,uBACJ,GAAG,CAAC,qCACU,GAAG,CAAC,qCAClB,GAAG,CAAC,aCpJ7B,qBAC0D,iBAC9B,cAAiB,IAC3C,EAAI,gBAAgB,EAAG,IAAK,QAE5B,UAAa,SAAS,EAAG,IAAK,oBACV,MAAK,MACzB,GAAI,UACF,SAAa,eAAe,KAAM,EAAE,OACpC,cAA0B,qBAAqB,MAAK,MAAO,MAE7D,MAAO,SAAQ,MAAM,eAGvB,4BACyD,MACvD,GAAI,EAAE,OAAS,EACb,MAAO,KAAI,GAIb,GAAI,EAAE,OAAS,GAAK,OAAS,KAC3B,MAAO,UAAS,QAAQ,EAAG,CAAC,KAAM,GAAG,MAIvC,GAAI,EAAE,OAAS,GAAK,MAAO,OAAS,UAChC,MAAM,QAAQ,OAAS,KAAK,SAAW,GACzC,GAAI,KAAM,EACR,MAAO,MAAI,IAAI,GAAI,MAErB,GAAI,KAAM,SACR,MAAO,KAAI,IAAI,GAAI,MAErB,GAAI,KAAM,UACR,MAAO,KAAI,IAAI,GAAI,MAErB,GAAI,KAAM,aAAe,KAAM,EAE7B,MAAO,MAAK,KAAI,IAAI,IAAI,GAAI,OAAO,EAAG,UAAW,OAGnD,KAAM,IAAI,OAAM,qCAAqC,MAIvD,GAAI,MAAM,QAAQ,OAAS,KAAK,SAAW,GACzC,GAAI,KAAM,EACR,MAAO,KAAI,KAAI,IAAI,GAAI,KAAK,IAAK,KAAK,GAAK,GAE7C,GAAI,KAAM,SACR,MAAO,KAAI,KAAI,IAAI,GAAI,KAAK,IAAK,KAAK,IAExC,GAAI,KAAM,UACR,MAAO,KAAI,KAAI,IAAI,GAAI,KAAK,IAAK,KAAK,IAExC,GAAI,KAAM,OAAS,KAAM,YAEvB,MAAO,MAAK,KAAI,OAAO,GAAI,OAG7B,KAAM,IAAI,OAAM,qCAAqC,MAGvD,KAAM,IAAI,OAAM,gCAAgC,QAG3C,SAAa,GAAG,CAAC,QChFxB,mDAEuC,IACrC,OAAW,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,wBACpB,gBAAgB,MAAO,QAAS,iBAE/C,iBAAiB,GAAI,IAChB,OACI,YAAY,GAAG,MAAO,GAAG,OAAQ,IAAM,6BAEhD,QAAY,OAAO,iBACG,IAAI,IAAK,eAElB,IAAI,IAAI,GAAI,IAAK,eAC9B,GAAI,YACG,OACD,OAAQ,KAAM,IAAM,kDACxB,UAAc,gBAAgB,MAAM,OAAQ,iBAC5C,OAAS,IAAI,OAAQ,IAAI,IAAK,IAAI,OAAQ,SAE5C,MAAO,MAAI,GAAI,QAGV,kBAAsB,GAAG,CAAC,iBCpCjC,2CAGE,aAAiB,gBAAgB,QAAS,UAAW,YAAa,kBACjD,gBAAgB,QAAS,UAAW,aACrC,cAAc,SAAU,SAAU,OAElD,WAAgC,CAAC,QAAS,SAAU,QAAS,gBAC/B,CAAC,OAG/B,MAAO,QAAO,UACH,UAAW,OACX,OAGN,cAAkB,GAAG,CAAC,aChCvB,8EAGJ,GAAI,cAAc,QAAU,QAC1B,KAAM,IAAI,OACN,8EACsB,cAAc,UAE1C,GAAI,cAAc,KAAO,EACvB,KAAM,IAAI,OACN,sEACkB,cAAc,UAGtC,aAAiB,cAAc,KAAO,EAAI,cAAc,MAAM,GAAK,UACnD,cAAc,KAAO,EAAI,cAAc,MAAM,GAAK,EAElE,GAAI,YAAY,SAAW,QACzB,KAAM,IAAI,OACN,kDACI,YAAY,sBAAsB,YAG5C,cAAkB,aAAa,KAC/B,GAAI,CAAE,cAAa,OAAS,GACtB,aAAa,OAAS,GAAK,YAAc,UAC7C,KAAM,IAAI,OACN,oCACG,aAAa,2BAA2B,aAGjD,GAAI,aAAa,QAAU,cAAc,MACvC,KAAM,IAAI,OAAM,qDCGpB,4EAEgE,GAC9D,mBACI,gBAAgB,cAAe,gBAAiB,gBAAiB,uBAEjE,gBAAgB,aAAc,eAAgB,+BAC5B,gBAClB,aAAc,eAAgB,gBAAiB,cAAc,OAEjD,eACZ,eAAgB,cAAe,YAAa,eAEhD,WAAoC,CAClC,cAAe,eACf,aAAc,cACd,aAAc,qBAGkB,CAAC,aAEnC,MAAO,QAAO,UACV,cAAe,OACf,OAGC,kBAAsB,GAAG,CAAC,iBC9BjC,8BACE,aAAiB,gBAAgB,QAAS,UAAW,WAAY,YACtD,gBAAgB,EAAG,IAAK,mBAEJ,CAAC,OAAQ,GAAI,QAAS,UAErD,MAAO,QAAO,UAAU,SAAU,QAG7B,aAAiB,GAAG,CAAC,YC3CtB,qCACJ,GAAI,YAAc,KAChB,MAAO,GAAE,MAAM,QAEjB,GAAS,YAAY,EAAE,MAAO,YAC5B,MAAO,YAET,GAAI,EAAE,MAAM,SAAW,WAAW,QAChC,iBAA+B,GAC/B,UAAa,EAAG,EAAI,EAAE,MAAM,OAAQ,IAC9B,WAAW,IAAM,MAAQ,EAAE,MAAM,IAAM,KACzC,aAAa,KAAK,EAAE,MAAM,IAE1B,aAAa,KAAK,WAAW,IAGjC,MAAO,cAGT,MAAO,YCKT,0CAGE,OAAW,gBAAgB,EAAG,IAAK,WAUnC,GARK,OACD,GAAG,QAAU,UACb,IAAM,gFACmB,GAAG,yBAC3B,OACD,MAAQ,GAAK,KAAO,EACpB,IAAM,qDAAqD,SAE3D,OAAS,EACX,MAAO,aAAa,QAAS,GAAG,QAAU,GAG5C,gBAAoB,cAAc,GAAI,qBACrB,EAAI,gBACF,IACf,MAAM,KAAI,cAAc,YAAa,EAAG,EAAG,UAAW,MAAO,WAC7D,UAEJ,MAAO,KAAI,GAAI,YAGV,YAAgB,GAAG,CAAC,WC1DrB,oCAEJ,MAAO,MAAK,MAAM,KAAK,IAAI,EAAG,KAAK,KAAK,KAAK,IAAI,OAAS,KAAK,IAAI,MAG/D,wCAEJ,SAAa,EAAI,aAAe,YACd,GAAI,cAAa,cACnC,UAAa,EAAG,EAAI,aAAc,EAAE,GAClC,WAAgB,EAAM,KAAK,GAAK,EAAM,cAAe,KAAO,GAC5D,UAAU,GAAK,EAAI,EAAI,KAAK,IAAI,QAElC,MAAO,UAAS,UAAW,WCO7B,kDAC0D,GACxD,iBAAqB,gBAAgB,YAAa,cAAe,mBAChD,gBAAgB,QAAS,UAAW,UAErD,OACI,aAAa,KAAO,EACpB,IAAM,uEACS,aAAa,QAChC,OACI,aAAa,KAAO,IAAM,SAAS,KACnC,IAAM,mFAEC,aAAa,yBAAyB,SAAS,QAC1D,kBACI,aAAa,MAAM,MAAM,EAAG,aAAa,MAAM,OAAS,GACxD,SAAS,MACT,2FAEJ,YAAgB,aAAa,MAAM,aAAa,MAAM,OAAS,GAC/D,OACI,EAAI,GAAK,GAAK,QACd,IAAM,4EACY,qBAAqB,KAE3C,oBAAwB,KAAM,cAAa,mBACvB,KAAM,UAAS,oBAIb,CAAC,gBAAgB,OAAS,QAAS,oBACvC,uBAAuB,OAAQ,OAEjD,UAAa,EAAG,EAAI,MAAO,KACzB,WAAe,EAAI,UACN,gBAAgB,SAAS,OAAQ,OAAS,gBACE,GACzD,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,UAAU,KAAK,CAAC,MAAO,KAAK,GAAI,MAAO,IAEzC,UAAU,KAAK,QAAU,GAAE,MAAQ,EAAE,OAErC,WAAU,GAAK,EACf,UAAa,EAAG,EAAI,EAAG,IACrB,GAAI,UAAU,GAAG,QAAU,YAAY,IACrC,WAAU,GAAK,EACf,OAKN,MAAI,eAAgB,cAClB,aAAa,UAEX,UAAY,UACd,SAAS,UAIJ,QAAO,WAAW,SAAS,MAAO,QAGpC,gBAAoB,+BCtG3B,GAAA,UAAA,kBAAA,CAAA,OAAA,IAAA,QAAA,gBAAA,IAAA,iBAAA,OAAA,IAAA,UC+CA,yEAIgC,wBAE9B,QAAU,EACN,EAAE,OAAS,GACb,KAAM,QAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEvD,SAAW,GACP,KAAK,OAAS,GAChB,MAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAEvD,OACD,IAAI,OAAS,EACb,IAAM,iEACC,IAAI,UACV,OACD,KAAK,OAAS,EACd,IAAM,8DACC,KAAK,UACX,OACD,YAAY,SAAW,EACvB,IAAM,mEACC,gBACX,YAAgB,aAAe,OAAS,IAAI,MAAM,GAAK,IAAI,MAAM,YAChD,aAAe,OAAS,KAAK,MAAM,GAAK,KAAK,MAAM,GAC/D,OACD,UAAY,YAAY,GACxB,IAAM,4CAA4C,8CACd,YAAY,OAC/C,OACD,WAAa,YAAY,GACzB,IAAM,0CAA0C,iDACV,YAAY,QAClD,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,gFACiB,+BAA+B,UAG5D,WAA2C,CAAC,EAAG,IAAK,GAAI,YAEpD,CAAC,QAAS,IAAA,MAAK,WAAY,gBAAiB,aAGhD,MAAO,QAAO,UACH,qBAAsB,OACtB,OAGN,yBAA6B,GAAG,CAAC,wBCpElC,gDAEJ,GAAI,aAAc,MAAQ,cAAe,SACvC,MAAO,IAET,GAAI,cAAe,OACjB,MAAO,KAAI,GAAI,KAAK,IAEtB,KAAM,IAAI,OACN,gDAAgD,gBAIhD,iDAEJ,QAAU,wBAES,iBAAiB,KAAK,MAAO,aAAa,OAC7D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,KAAK,OAGrB,8EAGJ,GAAI,cAAe,SACjB,MAAO,GACF,GAAI,cAAe,OACxB,MAAO,MAAK,GACP,GAAI,cAAe,MACxB,MAAO,KAAI,GACN,GAAI,cAAe,QACxB,MAAO,OAAM,GACR,GAAI,cAAe,QACxB,MAAO,OAAM,EAAG,wBACX,GAAI,cAAe,YACxB,MAAO,WAAU,EAAG,gBAEtB,KAAM,IAAI,OAAM,4BAA4B,gBAIvC,eAAmB,8BACxB,iBAAqB,cAAgB,EACrC,MAAO,CAAC,cAAgB,cAAe,UCiBzC,uBACE,EACA,OACA,QACA,UACA,WAAa,OACb,UAAY,CAAC,EAAG,GAChB,gBACA,KACA,uBAAa,SACb,uBACA,iBAgBA,GAFA,YAAa,aAAc,SAEvB,WAAW,OAAO,MAAM,cAAe,eAAgB,IACzD,WAAa,OACT,EAAG,OAAQ,QAAS,MAAK,WAAY,UAAW,iBACpD,MAAI,OAAQ,MACV,QAAS,KAAI,OAAQ,OAGhB,gBACI,OAAQ,YAAY,uBAAwB,gBAGzD,OAAW,gBAAgB,EAAG,IAAK,kBACnB,gBAAgB,OAAQ,SAAU,cAExC,gBACS,GAEf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAEtD,OACD,IAAI,OAAS,EACb,IAAM,6DACC,IAAI,SACV,OACD,QAAQ,OAAS,EACjB,IAAM,8DACC,QAAQ,SACf,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,6EACiB,+BAA+B,UAGvD,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,oCAAoC,IAAI,MAAM,yCACtB,QAAQ,MAAM,OAC3C,OACS,+BAA+B,QAAS,WAClD,IAAM,uEACa,0BAA0B,cAC5C,OACD,aAAe,OACf,IAAM,sCACF,oDAER,aAA2B,kBACvB,IAAI,MAAO,QAAQ,MAAO,QAAS,UAAW,MAAK,uBAGnD,MAAQ,MACV,OAAQ,gBAAgB,KAAM,OAAQ,gBACtC,CAAC,OAAS,eAAe,MAAO,IAEjB,2BAA2B,SAAS,SAAU,MAAM,QAGrE,4BACI,wBAA0B,MAC5B,yBAA0B,gBACtB,uBAAwB,gBAAiB,iBAG/C,UAAa,aACX,4BACI,mBAEiB,qBAAqB,GAAI,EAAG,aAE5C,OACS,kBAAkB,WAC5B,IAAM,uHAEoD,cAE9D,SACI,oBAAoB,KAAI,MAAO,aAAc,SAAS,QAAS,iBAE/D,qBAAqB,KAAK,aAAc,SAAQ,MAAO,QAAS,WAC9C,CAAC,KAAM,WAE7B,GAAI,QAAS,MACX,YAAgB,qBAAqB,OAAO,cAC5C,IAAI,KAAK,SAEX,MAAO,aAGyB,CAChC,EAAG,IACH,OAAQ,QACR,KAAM,MACN,uBAAwB,+BAGM,CAC9B,QACA,IAAA,MACA,WACA,UACA,gBACA,WAAA,YACA,gBAKF,GAAI,MAAQ,MACV,aACI,WAAW,sBACT,QAEI,OAAO,UACH,YAAa,OACb,OAER,MAAA,MAAK,CAAC,QAAQ,KAAK,MAEf,cAEF,KAAM,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAIrD,CAAC,MAAO,IAAK,SAAU,SAEpC,MAAO,UAAS,IAAK,cAErB,qBAAyB,WACrB,4BACE,QAA6B,OAAO,UAChC,YAAa,OACb,OAEJ,MAAA,MAAK,CAAC,QAAQ,KAAK,IAAK,QAEpB,cAEF,KAAM,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAIrD,CAAC,MAAO,IAAK,SAAU,SAGpC,MAAO,kBAAiB,IAAK,QAAS,QAGnC,YAAe,GAAG,CAAC,eCxP1B,uFAGyC,CAAC,EAAG,oBAE3C,QAAU,EACN,EAAE,OAAS,GACb,KAAM,QAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEvD,SAAW,GACP,KAAK,OAAS,GAChB,MAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG5D,WAA0D,CAAC,EAAG,IAAK,GAAI,YAEnE,CAAC,QAAS,IAAA,MAAK,gBAAiB,UAAW,aAG/C,MAAO,QAAO,UACH,oCACA,OAAgC,OAItC,wCACH,GAAG,CAAC,uCC1BR,sFAGyC,CAAC,EAAG,oBAE3C,SAAW,gBACQ,GACf,GAAG,OAAS,GACd,cAAe,GACf,KAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG5D,WAAyD,CAAC,GAAI,KAAM,cAEhE,CAAC,QAAS,IAAA,MAAK,gBAAiB,UAAW,WAAY,YAIvD,OAAO,UACH,mCAAoC,OACpC,OAER,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,uCACH,GAAG,CAAC,sCCoCR,gCACE,EACA,OACA,QACA,UACA,WAAa,OACb,UAAY,CAAC,EAAG,GAChB,gBACA,KACA,uBAAa,SACb,uBACA,iBAcA,GAAI,WAAW,OAAO,MAAM,cAAe,eAAgB,IACzD,WAAa,gBACT,EAAG,OAAQ,QAAS,MAAK,WAAY,UAAW,iBACpD,MAAI,OAAQ,MACV,QAAS,KAAI,OAAQ,OAGhB,gBACI,OAAQ,YAAY,uBAAwB,gBAGzD,OAAW,gBAAgB,EAAG,IAAK,2BACnB,gBAAgB,OAAQ,SAAU,uBAExC,gBACS,GACf,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAEtD,OACD,IAAI,OAAS,EACb,IAAM,sEACM,IAAI,SACf,OACD,QAAQ,OAAS,EACjB,IAAM,uEACc,QAAQ,SAC3B,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,6DACE,IAAI,MAAM,qDACJ,QAAQ,MAAM,OAC5B,WAAa,MACf,WAAY,CAAC,EAAG,IAEb,OACS,+BAA+B,QAAS,WAClD,IACI,sFACqB,0BAA0B,cAEnD,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,qFACuB,+BAA+B,UAGlE,aAA2B,kBACvB,IAAI,MAAO,QAAQ,MAAO,QAAS,UAAW,MAAK,gBACnD,UAGA,MAAQ,MACV,OAAQ,gBAAgB,KAAM,OAAQ,gBACtC,CAAC,OAAS,eAAe,MAAO,IAEjB,2BAA2B,SAAS,SAAU,MAAM,QAGrE,4BACI,wBAA0B,MAC5B,yBAA0B,gBACtB,uBAAwB,gBAAiB,0BAG/C,UAAa,aACN,OACS,kBAAkB,WAC5B,IAAM,mHAEE,cACZ,2BAAgC,mBAEX,qBAAqB,GAAI,EAAG,kBAEpC,mCACR,KAAiB,MAAO,aAAc,SAAqB,QAC5D,MAAK,UAAW,2BACF,oCACd,KAAiB,aAAe,SAAqB,MAAO,QAC5D,MAAK,UAAW,iBAEpB,GAAI,OAAQ,MACV,YAAgB,qBAAqB,MAAO,cAC5C,MAAO,CAAC,KAAM,UAAW,SAE3B,MAAO,CAAC,KAAM,mBAG2B,CACzC,EAAG,IACH,OAAQ,QACR,KAAM,MACN,uBAAwB,+BAEe,CACvC,QACA,IAAA,MACA,WACA,UACA,gBACA,WAAA,YACA,gBAKF,GAAI,MAAQ,MACV,aACI,WAAW,sBAET,QAA6B,OAAO,UAChC,qBAAsB,OACtB,OAEJ,MAAA,MAAK,CAAC,QAAQ,KAAK,MAEf,cAEF,KAAM,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAIrD,CAAC,MAAO,IAAK,SAAU,SAEpC,MAAO,UAAS,IAAK,cAErB,qBAAyB,WACrB,4BAEE,QAA6B,OAAO,UAChC,qBAAsB,OACtB,OAEJ,MAAA,MAAK,CAAC,QAAQ,KAAK,IAAK,QAEpB,cAEF,KAAM,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAIrD,CAAC,MAAO,IAAK,SAAU,SAGpC,MAAO,kBAAiB,IAAK,QAAS,QAGnC,qBAAwB,GAAG,CAAC,wBChNnC,uBACE,EACA,EACA,WAAa,GACb,WAAa,GACb,KACA,uBAAa,SACb,uBACA,iBAWE,GAAI,WAAW,OAAO,MAAM,cAAe,eAAgB,IACzD,WAAa,OAAc,EAAG,EAAG,WAAY,YAC7C,MAAI,OAAQ,MACV,QAAS,KAAI,OAAQ,OAGhB,gBACI,OAAQ,YAAY,uBAAwB,gBAIzD,OAAS,gBAAgB,EAAG,IAAK,mBACxB,gBAAgB,EAAG,IAAK,gBACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,gBACI,WAAa,GAAG,MAAM,GAAG,KAAO,GAAK,GAAG,MAAM,GAAG,KAAO,eAExD,WAAa,GAAG,MAAM,GAAG,KAAO,GAAK,GAAG,MAAM,GAAG,KAAO,eAGxD,WAAa,GAAG,MAAM,GAAG,KAAO,GAAK,GAAG,MAAM,GAAG,KAAO,eAExD,WAAa,GAAG,MAAM,GAAG,KAAO,GAAK,GAAG,MAAM,GAAG,KAAO,cAEzC,GAAG,MAAM,MAAM,EAAG,eAClB,GAAG,MAAM,MAAM,EAAG,cACd,cAAc,sBACd,cAAc,YAEhC,OACD,GAAG,MAAQ,GAAK,GAAG,MAAQ,GAAK,GAAG,OAAS,GAAG,KAC/C,IAAM,kFACoB,GAAG,YAAY,GAAG,SAE3C,OACI,YAAY,WAAY,YAC7B,IAAM,4CAA4C,oBAC3C,sCAAsC,GAAG,aACzC,GAAG,qBAET,OACD,cAAgB,YAChB,IAAM,wCAAwC,qBACvC,uCAAuC,GAAG,aAC1C,GAAG,wBAAwB,6BACX,0BAE3B,aAAiB,GAAG,MAAM,MAAM,EAAG,IAAI,OAAO,CAAC,YAAa,kBAEtC,WAClB,QAAQ,GAAI,CAAC,UAAW,YAAa,cACrC,QAAQ,GAAI,CAAC,UAAW,YAAa,kBACnB,WAClB,QAAQ,GAAI,CAAC,UAAW,YAAa,cACrC,QAAQ,GAAI,CAAC,UAAW,YAAa,oBAGrC,MAAQ,MACV,OAAQ,gBAAgB,KAAM,OAAQ,gBACtC,CAAC,OAAS,eAAe,MAAO,IAEjB,2BAA2B,SAAU,MAAM,QAG5D,4BACI,wBAA0B,MAC5B,yBAA0B,gBACtB,uBAAwB,gBAAiB,iBAG/C,UAAa,aACX,wBAA6B,mBAKzB,qBAAqB,QAAQ,GAAI,EAAE,OAAQ,EAAG,uBAkBlD,GAdI,CAAC,YAAc,CAAC,WAClB,MAAO,OAAc,aAAc,KAAK,GAAO,IAC/C,KAAO,OAAc,KAAK,aAAc,GAAM,KACrC,CAAC,YAAc,WACxB,MAAO,OAAc,aAAc,KAAK,GAAO,IAC/C,KAAO,OAAc,aAAc,KAAK,GAAM,KACrC,YAAc,CAAC,WACxB,MAAO,OAAc,KAAK,aAAc,GAAO,IAC/C,KAAO,OAAc,KAAK,aAAc,GAAO,KAE/C,MAAO,OAAc,KAAK,aAAc,GAAM,IAC9C,KAAO,OAAc,aAAc,KAAK,GAAM,KAG5C,MAAQ,MACV,YAAgB,qBAAqB,OAAO,cAC5C,MAAO,CAAC,KAAM,KAAM,aAEpB,OAAO,CAAC,KAAM,cAIiB,CACjC,EAAG,IACH,EAAG,IACH,KAAM,MACN,uBAAwB,+BAGtB,CAAC,WAAY,WAAY,WAAA,YAAY,gBAIzC,GAAI,MAAQ,MACV,aACI,WAAW,mBACT,QAEI,OAAO,UACH,aAAc,OACd,OAER,MAAA,MAAK,CAAC,KAAK,KAAK,MAET,CAAC,MAAO,QAAQ,IAAK,UAAW,SAAU,SAEvD,MAAO,UAAS,IAAK,UAErB,qBAAyB,WACrB,0BACE,QAEI,OAAO,UACH,aAAc,OACd,OAER,MAAA,MAAK,CAAC,KAAK,KAAK,IAAK,SAEd,CAAC,MAAO,QAAQ,IAAK,UAAW,SAAU,SAGvD,MAAO,kBAAiB,IAAK,IAAK,QAI/B,YAAe,GAAG,CAAC,eE7L5B,sCACE,MAAO,cAAa,aAAc,IAAM,KAEnC,kBAAsB,GAAG,CAAC,iBCHjC,mCACE,MAAO,cAAa,aAAc,GAAK,IAGlC,eAAmB,GAAG,CAAC,cCI9B,qDACuE,YACxD,GACb,UAAY,SACa,GACzB,KAAO,MAAQ,aAAe,QAAO,MACnC,OAAO,KAAK,MAAM,QAAQ,MAAO,cACjC,OAAS,UAGX,GAAI,OACF,KAAO,MAAQ,QAAO,OACpB,WAAgB,MAAQ,YAAe,QAAO,WAClC,OAAO,CACjB,MAAM,QAAQ,MAAO,YAAc,QAAS,KAAK,CAAC,QAAS,YAE7D,OAAO,KAAK,OACZ,OAAS,UAIb,MAAI,QAAO,SAAW,EACb,SAAS,GAAI,CAAC,EAAG,cAGnB,QAAQ,OAAO,QAAS,CAAC,OAAO,OAAQ,cAE1C,UAAc,GAAG,CAAC,SCxBzB,gEAG6C,YACvC,WAAa,MACf,WAAY,oBAAoB,cAElC,iBAAqB,MAAM,QAAQ,YAAa,0BACzB,IAAI,aAAc,SAAS,qBACzB,GACzB,UAAa,EAAG,EAAI,aAAa,MAAM,GAAI,IACzC,OAAO,KACH,KAAK,MAAM,eAAgB,CAAC,EAAG,GAAI,CAAC,EAAG,cAAe,YAE5D,MAAO,QAAO,QAET,SAAa,GAAG,CAAC,QCTxB,4DAKmC,8BACV,GAEvB,WAAe,gBAAgB,OAAO,QAAS,wBAChC,gBAAgB,MAAO,QAAS,gBAAiB,mBAChD,gBAAgB,OAAQ,SAAU,gBAAiB,kBAElD,OAAO,MAAM,GAEzB,OACD,OAAO,OAAS,EAChB,IAAM,6DACc,OAAO,SAC1B,OACD,OAAO,OAAS,GAAK,OAAO,MAAM,KAAO,EACzC,IAAM,oDAAoD,6BACrC,OAAO,UAC3B,OACD,QAAQ,OAAS,GAAK,QAAQ,MAAM,KAAO,SAC3C,IAAM,qDAAqD,2BACtC,OAAO,UAC3B,OACD,SAAS,SAAW,EACpB,IAAM,wEACQ,SAAS,WACtB,OACD,SAAS,IAAM,GAAK,SAAS,IAAM,EACnC,IAAM,2CAA2C,YAChD,OACD,SAAW,YAAc,SAAW,UACpC,IAAM,+CAA+C,UAEzD,WAC0B,CAAC,MAAO,OAAQ,MAAO,OAAQ,OAAQ,eAC/B,CAAC,OAAQ,mBAAoB,cACnD,OAAO,UACf,cAAe,OACf,OACJ,MAAO,KAGF,kBAAsB,GAAG,CAAC,iBChEjC,gCACE,WAAe,gBAAgB,OAAO,QAAS,gBAAiB,WAE3D,OACD,OAAO,OAAS,EAChB,IAAM,6DACc,OAAO,SAE/B,WAAoC,CAAC,MAAO,YAExC,OAAO,UAAU,cAAe,OAAgC,IACpE,MAAO,KAGF,kBAAsB,GAAG,CAAC,iBCHjC,oDAEiD,SACX,IACpC,WAAe,gBAAgB,OAAO,QAAS,mBAAoB,WAE9D,OACD,OAAO,OAAS,EAChB,IAAM,gEACc,OAAO,SAE/B,WAAuC,CAAC,MAAO,cACV,CAAC,QAAS,UAAW,YAC9C,OAAO,UACf,iBAAkB,OAClB,OACJ,MAAO,KAGF,qBAAyB,GAAG,CAAC,oBC3CpC,oGAQM,cAAgB,MAClB,cAAe,IAEb,gBAAkB,MACpB,gBAAiB,OAAO,mBAEtB,cAAgB,MAClB,cAAe,GAGjB,aAAiB,MAAM,MAAM,GAC7B,MAAA,eAAgB,KAAK,IAAI,cAAe,UAEnC,OACD,GAAK,cAAgB,cAAgB,EACrC,IAAM,4CAA4C,iBACjD,OACD,MAAM,OAAS,EACf,IAAM,+CAA+C,MAAM,SAC1D,OACD,MAAM,MAAM,KAAO,EACnB,IACI,oDAAoD,MAAM,MAAM,MACnE,OAAO,OAAO,OAAS,EAAG,IAAM,8BAChC,OACD,OAAO,MAAM,KAAO,SACpB,IAAM,sDAAsD,qBAC7C,OAAO,MAAM,MAC3B,OACD,GAAK,cAAgB,cAAgB,EACrC,IAAM,4CAA4C,iBAC/C,CAAC,cAAe,aAAc,eAAgB,cCfvD,oEAE0C,kBACrB,OAAO,mBAC1B,WAAe,gBAAgB,MAAO,QAAS,6BAC/B,gBAAgB,OAAQ,SAAU,4BAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,gBAClD,cAAgB,OAAO,cACvB,aAAe,OAAO,aACtB,eAAiB,OAAO,eAExB,UAAc,CAAC,cAAe,aAAc,gBAC5C,MAAO,QAAO,UACV,oBAAqB,CAAC,MAAO,OAAQ,OAAQ,SAAU,OAGtD,sBAA0B,GAAG,CAAC,qBChC/B,8CAEJ,UAAc,aAAa,IAAK,QAAS,2BAClB,MAAQ,EAAI,CAAE,OAAQ,GAAK,MAClD,IAAI,OAAO,eAAgB,EAAG,SAkB1B,6CAEJ,MAAO,eAAc,IAAK,OAAQ,YAAc,mBAUlD,gCACE,MAAO,GAAI,EAAI,EAAI,EAAI,EAAI,GAAK,EAGlC,8CAEE,SAAW,QACC,IAAI,cACH,QACD,GACZ,KAAO,KAAO,QACZ,OAAS,KAAS,OAAQ,OAAU,GACpC,kBAAsB,WAAW,OAAQ,IAAI,SACzC,cAAgB,EAClB,KAAO,OAAS,EAEhB,OAAQ,OAGR,MAAQ,CAAC,eAIb,MAAO,OAAQ,KAAO,CAAC,KAAO,ECpD1B,yFAGJ,MAAO,wBACH,MAAO,OAAQ,cAAe,aAAc,eAC5C,GAGA,4GAIJ,MAAO,wBACH,MAAO,OAAQ,cAAe,aAAc,eAC5C,EAAsB,GACtB,mBAA6C,IAI7C,sGAIJ,MAAO,wBACH,MAAO,OAAQ,cAAe,aAAc,eAAgB,aAC5D,IAGN,uHAGyB,sBAA4B,sBAC5B,IAGvB,eAAmB,GAEnB,UAAa,EAAG,EAAI,OAAO,OAAQ,IAC7B,OAAO,GAAK,gBACd,WAAW,KAAK,CAAC,MAAO,OAAO,GAAI,SAAU,EAAG,mBAAoB,IAIxE,WAAW,KAAK,qBAIhB,YAAc,aAAe,EAAK,IAAO,aAAgB,kBAEvB,kBACD,GAEjC,KAAO,gBAAgB,OAAS,eAAiB,WAAW,OAAS,IACnE,cAAkB,WAAW,OACtB,oBAAsB,SAAU,oBAAsB,UAE7D,GAAI,cAAgB,eAClB,MASF,oBAAsB,GACtB,UAAa,gBAAgB,OAAS,EAAG,GAAK,mBAAoB,EAAE,GAClE,SAAY,sBAAsB,MAAO,SAAU,gBAAgB,IAEnE,GAAI,MAAO,cACT,gBAAkB,GAClB,MAMF,GAHA,UAAU,MACN,UAAU,MAAQ,eAAe,aAAc,QAAO,MAEtD,UAAU,OAAS,eACrB,MAWJ,UAAU,mBAAqB,gBAAgB,OAE1C,iBAGC,WAAU,QAAU,cACtB,iBAAgB,KAAK,UACrB,eAAe,KAAK,UAAU,QACrB,UAAU,MAAQ,gBAG3B,aAAa,WAAY,UAAW,sBAM1C,iBAAqB,gBAAgB,kBAClB,cAAgB,aAE/B,oBAAsB,WAAa,GACrC,iBAAgB,KAAK,GAAG,GAAI,OAAM,YAAY,KAAK,IACnD,eAAe,KAAK,GAAG,GAAI,OAAM,YAAY,KAAK,KAGpD,WAAwC,CAAC,iBAEzC,MAAI,qBACF,QAAO,eAAoB,gBAGzB,oBACF,QAAO,aAAkB,cAGpB,OAGT,0CACE,WAAe,MAAM,SAAS,EAAI,EAAG,EAAI,EAAI,UAC9B,MAAM,SAAS,EAAI,EAAG,EAAI,EAAI,SAC/B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC1B,OAAQ,OAAU,OAAQ,aAC1B,OAAQ,OAAU,OAAQ,OACzC,GAAI,OAAS,GAAK,OAAS,EACzB,MAAO,GAET,qBAAyB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,iBAAmB,iBAAkB,GACnE,KAAK,IAAI,iBAAmB,iBAAkB,GAClD,MAAO,kBAAoB,OAAQ,MAAQ,kBAO7C,mDACE,WAAe,KAAK,IAAI,QAAQ,KAAM,MACtC,MAAO,OAAO,aAAe,OAAS,EAGxC,oCAKE,MAAQ,IAAG,MAAQ,GAAG,OAChB,GAAG,QAAU,GAAG,OAAW,GAAG,SAAW,GAAG,SC/JpD,+EAE0C,kBACrB,OAAO,mBAC1B,WAAe,gBAAgB,MAAO,QAAS,kCAC/B,gBAAgB,OAAQ,SAAU,iCAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,gBAClD,cAAgB,OAAO,cACvB,aAAe,OAAO,aACtB,eAAiB,OAAO,eAExB,mBAAuB,KAAM,SAAQ,IAAI,CAAC,OAAO,OAAQ,QAAQ,mBAC/C,eAAe,cACd,eAAe,IAK3B,iBAAmB,wBACtB,UAAW,WAAY,cAAe,aAAc,gBACxD,MAAI,UAAW,OACb,OAAO,UAEL,UAAY,QACd,QAAQ,UAGH,SAAS,gBAAiB,SAG5B,2BAA+B,wBCnBtC,6EAE0C,kBACrB,OAAO,+BACT,GACjB,WAAe,gBAAgB,MAAO,QAAS,6BAC/B,gBAAgB,OAAQ,SAAU,4BAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,eAC9C,cACJ,cAAgB,OAAO,cACvB,aAAe,OAAO,aACtB,eAAiB,OAAO,eACxB,aAAe,OAAO,aAEtB,WAA0C,CAAC,MAAO,OAAQ,OAAQ,eAE9D,CAAC,cAAe,aAAc,eAAgB,qBAGnC,OAAO,UACH,oBAAqB,OACrB,OAEnB,MAAO,CAAC,gBAAiB,OAAO,GAAI,eAAgB,OAAO,IAGtD,+BAAmC,GAAG,CAAC,8BChC9C,wFAE0C,kBACrB,OAAO,+BACT,GACjB,WAAe,gBAAgB,MAAO,QAAS,kCAC/B,gBAAgB,OAAQ,SAAU,iCAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,eAC9C,cACJ,cAAgB,OAAO,cACvB,aAAe,OAAO,aACtB,eAAiB,OAAO,eACxB,aAAe,OAAO,aAEtB,mBAAuB,KAAM,SAAQ,IAAI,CAAC,OAAO,OAAQ,QAAQ,mBAC/C,eAAe,cACd,eAAe,IAK3B,gBAAiB,gBAAkB,wBACtC,UAAW,WAAY,cAAe,aAAc,eACpD,cAEJ,MAAI,UAAW,OACb,OAAO,UAEL,UAAY,QACd,QAAQ,UAGH,CACL,gBAAiB,SAAS,gBAAiB,SAC3C,eAAgB,SAAS,iBAItB,oCAAwC,iCC1C/C,0EAE0C,kBACrB,OAAO,qCACH,IACvB,WAAe,gBAAgB,MAAO,QAAS,6BAC/B,gBAAgB,OAAQ,SAAU,4BAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,eAC9C,qBACmB,OAAO,4BACR,OAAO,6BACL,OAAO,sBAEW,CAAC,MAAO,OAAQ,OAAQ,eAC1B,CACtC,cAAe,eACf,aAAc,cACd,eAAgB,gBAChB,2BAIa,OAAO,UACH,oBAAqB,OACrB,OAEnB,MAAO,CAAC,gBAAiB,OAAO,GAAI,aAAc,OAAO,IAGpD,4BAAgC,GAAG,CAAC,2BClC3C,qFAE0C,kBACrB,OAAO,qCACH,IACvB,WAAe,gBAAgB,MAAO,QAAS,kCAC/B,gBAAgB,OAAQ,SAAU,iCAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,eAC9C,qBACmB,OAAO,4BACR,OAAO,6BACL,OAAO,sCAG3B,KAAM,SAAQ,IAAI,CAAC,OAAO,OAAQ,QAAQ,UAKvC,gBAAiB,cAAgB,wBACpC,UAAW,WAAY,eAAgB,cAAe,gBACtD,oBAEJ,MAAI,UAAW,OACb,OAAO,UAEL,UAAY,QACd,QAAQ,UAGH,CACL,gBAAiB,SAAS,gBAAiB,SAC3C,aAAc,OAAO,aAAc,UAIhC,iCAAqC,8BCxC5C,kDACiE,oBAC1C,IACrB,YAAgB,gBAAgB,OAAQ,SAAU,kBAE7C,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,gEACM,QAAQ,SACnB,OACD,KAAK,SAAW,EAChB,IAAM,6DACC,SACN,OACD,mBAAqB,IAAS,eAAiB,GAC/C,IAAM,qFAGV,gBAAkB,qBACC,GACf,QAAQ,OAAS,GACnB,cAAe,GACf,YAAc,QACV,QAAS,CAAC,EAAG,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,MAGrE,MAAW,YAE0B,CAAC,OAAQ,mBACX,CAAC,aAAc,iBAAkB,UAGxD,OAAO,UACH,eAAgB,OAChB,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,mBAAuB,GAAG,CAAC,kBCzClC,yDACiE,oBAC1C,IACrB,YAAgB,gBAAgB,OAAQ,SAAU,yBAE7C,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,uEACM,QAAQ,SACnB,OACD,KAAK,SAAW,EAChB,IACI,oEACG,SACN,OACD,QAAQ,QAAU,WAAa,QAAQ,QAAU,QACjD,IAAM,oDACL,OACD,mBAAqB,IAAS,eAAiB,GAC/C,IAAM,4FAEV,gBAAkB,qBACC,GACf,QAAQ,OAAS,GACnB,cAAe,GACf,YAAc,QACV,QAAS,CAAC,EAAG,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,MAErE,MAAW,YAEiC,CAAC,OAAQ,mBAEpB,CAAC,aAAc,iBAAkB,UAGtD,OAAO,UACH,sBAAuB,OACvB,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,0BAA8B,GAAG,CAAC,yBCnBzC,wCAEE,OACI,SAAW,IAAM,EACjB,IAAM,gDAAgD,aAC1D,OACI,SAAW,IAAM,EACjB,IAAM,gDAAgD,aAE1D,OAAW,gBAAgB,EAAG,IAAK,YAEnC,OACI,GAAG,MAAQ,EACX,IAAM,4CAA4C,GAAG,SAEzD,UAAc,GAAG,YACF,GAAG,MAAM,MAAM,IAE9B,GAAI,CAAE,WAAY,GAChB,KAAM,IAAI,OACN,yBAAyB,0DACwB,OAEvD,GAAI,CAAE,WAAY,GAChB,KAAM,IAAI,OACN,yBAAyB,6DAC2B,OAGtD,SAAW,GACb,UAAW,GAET,SAAW,GACb,UAAW,GAGb,MAAU,QAAQ,MAAM,EAAG,EAAG,EAAG,SAAU,CAAC,GAAI,MACtC,MAAM,EAAG,EAAG,EAAG,YACd,IAAI,EAAG,UAEH,WACX,UAAU,GAAI,OAAO,CAAC,SAAU,UAChC,aAAa,GAAI,OAAO,CAAC,SAAU,gBAE1B,MAAM,CAAC,EAAG,GAAI,GAAG,OAE9B,MAAO,SACI,MAAM,QAAQ,QAAQ,GAAI,CAAC,GAAI,EAAG,KACvB,IAAI,KAAO,MAAM,OAAQ,IAAK,QACzC,OAGN,aAAiB,GAAG,CAAC,YClE5B,0BACE,oBACA,GAAI,MAAM,QAAQ,KAChB,gBAAkB,GAClB,OACI,IAAM,MAAQ,GAAG,OAAS,EAC1B,IAAM,qEAEV,QAAY,GAAG,GAAG,MAAM,GACxB,UAAa,EAAG,EAAI,GAAG,OAAQ,EAAE,EAC/B,OACI,GAAG,GAAG,MAAM,KAAO,IACnB,IACI,iEACK,GAAkB,GAAG,MAAM,UAAU,YAGpD,iBAAkB,GAClB,GAAK,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,IAAI,GAAK,QAAQ,EAAG,CAAC,KAGtD,OACI,GAAG,QAAU,GAAG,GAAG,MAAM,GACzB,IAAM,oCACK,GAAkB,yCACC,GAAkB,GAAG,MAAM,QAE7D,OAAuB,QACV,GACb,UAAa,EAAG,EAAI,GAAG,OAAQ,EAAE,EAC/B,GAAG,KAAK,OAAO,KAAK,KAClB,MAAQ,KAAK,GACb,GAAI,EAAI,EACN,UAAa,EAAG,EAAI,EAAG,EAAE,GACvB,SAAa,IAAI,KAAI,IAAI,GAAG,GAAI,IAAK,GAAG,IACxC,EAAI,IAAI,EAAG,MAGf,MAAO,KAAI,EAAG,KAAK,EAAG,iBAI1B,MAAI,iBACK,MAAM,GAAI,GAEV,GAIJ,gBAAoB,GAAG,CAAC,eCzB/B,4BAAuC,IAMrC,GALA,OACI,EAAE,MAAQ,EACV,IAAM,gEACF,EAAE,QAEN,EAAE,OAAS,EACb,MAAO,MAAK,EAAe,cACtB,CAKL,kBAAsB,EAAE,MAAM,MAAM,EAAG,EAAE,MAAM,OAAS,GAC7B,OAAO,cAAiB,MAAQ,WAC9C,QACT,QACI,EACA,CACE,cAAe,EAAE,MAAM,EAAE,MAAM,OAAS,GACxC,EAAE,MAAM,EAAE,MAAM,OAAS,KAE/B,QACqB,QACA,GACzB,KAAK,QAAQ,MACX,aAAmB,KAAK,IAAiB,cACzC,KAAK,KAAK,KACV,KAAK,KAAK,OAEZ,MAAU,QAAQ,MAAM,KAAM,GAAI,EAAE,SAC1B,QAAQ,MAAM,KAAM,GAAI,EAAE,OACpC,MAAO,CAAC,EAAG,IAIf,6BAA0C,IACxC,MAAO,QAAO,KAAK,KACjB,OACI,EAAE,MAAM,SAAW,EACnB,IAAM,0CACF,EAAE,MAAM,mBAEhB,MAAU,EAAE,MAAM,KACR,EAAE,MAAM,KAEV,IAAI,KACJ,MAAM,SAEA,SAAS,CAAC,CAAC,IAAK,CAAC,EAAG,MAChB,MAAM,aAEV,GAAK,EAAI,EAAI,EAC3B,UAAa,EAAG,EAAI,MAAO,EAAE,GAG3B,UAAc,QACA,QACA,EACd,CAAC,EAAG,EAAG,GAAK,OAAO,KAAK,KAEtB,WAAe,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAI,EAAG,UAC1B,KAAK,YACP,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,MAGvB,MAAM,QAAQ,IAAK,GAAI,SAAS,CAAC,CAAC,MAAO,SAAS,CAAC,CAAC,SAEnD,IAAI,IAAK,IAAI,EAAG,aACd,IAAI,OAAQ,IACrB,KAAK,MAAM,KAAO,EACpB,EAAI,MAAM,OAEV,EAAI,OACA,CACE,MACA,MAAM,KAAM,CAAC,EAAG,GAAI,CAAC,KAAK,MAAM,GAAK,EAAG,KAAK,MAAM,MAGrD,GAEN,QAAY,IAAI,IAAI,OAAO,EAAG,IAAK,iBAGlB,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAI,EAAG,cACd,IAAI,IAAK,MAChB,UAAU,GAC/B,GAAI,IAAM,EACR,EAAI,IAAI,SAAU,OAAO,UAAW,OAAO,GAAI,iBAE/C,cACI,IAAI,SAAU,OAAO,UAAW,OAAO,GAAI,YAC/C,EAAI,OAAO,CAAC,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,WAAY,GAEpD,eAA6B,UAAU,oBACtB,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,EAAE,MAAM,GAAK,IACnD,GAAI,IAAM,EACR,EAAI,IAAI,SAAU,OAAO,OAAO,SAAU,GAAI,kBAE9C,cACI,IAAI,SAAU,OAAO,OAAO,SAAU,GAAI,aAC9C,EAAI,OAAO,CAAC,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,WAAY,GAEpD,MAAO,CAAC,EAAG,EAAG,KAEhB,QAAQ,CAAC,MAAO,MAAO,QAGzB,MAAI,CAAC,cAAgB,EAAI,GACvB,GAAI,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IACzB,EAAI,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,KAGpB,CAAC,EAAG,KAIR,OAAW,GAAG,CAAC,gBCvLtB,AAAA,sBACE,WAAA,WAAA,KAAA,GAAA,OACA,WAAA,WAAA,KAAA,GAAA,OACA,WAAA,WAAA,IAAA,GAAA,MACA,WAAA,WAAA,uBAAA,GAAA,2BAJU,WAAA,WAAS,KCyBrB,yDAEgB,UAAU,wBACxB,YAAgB,gBAAgB,QAAQ,SAAU,gCAC3B,KACnB,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,wBAGjD,iBAAsB,UAAY,KAAQ,QAAU,IAAI,QAAS,UAEjE,GAAI,aAAc,UAAU,KAC1B,MAAO,cAET,GAAI,aAAc,UAAU,IAC1B,MAAO,MAAI,cAEb,GAAI,aAAc,UAAU,MAC1B,GAAI,UAAY,KACd,MAAO,MAAK,cACP,CACL,oBAAwB,QAAQ,KAAO,SAAS,YACjC,IAAI,KAAI,cAAe,KAAI,WAC1C,MAAO,iBAAkB,EAAI,IAAI,OAAQ,OAAO,kBACnB,QAGjC,GAAI,aAAc,UAAU,wBAC1B,GAAI,UAAY,KACd,MAAO,KAAI,KAAI,cAAe,OAAO,QAAQ,OACxC,CACL,uBAA2B,IAAI,SAAU,MAAK,QAAQ,oBAGlD,KAAK,KAAI,SAAS,mBAAoB,OAAO,KAAM,WACvD,MAAO,KAAI,KAAI,cAAe,cAIlC,KAAM,OAAM,sBAAsB,cAE7B,wBAA4B,GAAG,CAAC,uBCxCvC,mEAGgB,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,mCAE9C,gBAAgB,YAAa,cAAe,+BACzB,KACnB,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,uBAEjD,kBACI,QAAQ,MAAO,aAAa,MAAO,iCAEvC,YAAe,IAAI,IAAI,QAAS,eAChC,MAAO,qBAAoB,QAAQ,SAAU,YAGxC,uBAA2B,GAAG,CAAC,sBChBtC,oEAGgB,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,+BAE9C,gBAAgB,YAAa,cAAe,2BACzB,KACnB,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,mBAEjD,kBACI,QAAQ,MAAO,aAAa,MAAO,6BAEvC,QAAY,OAAO,WACJ,IAAI,IAAK,KAAI,IAAI,QAAS,cAAe,KAAM,KAC9D,MAAO,qBAAoB,QAAQ,SAAU,YAExC,mBAAuB,GAAG,CAAC,kBCnBlC,0DAGgB,UAAU,wBACxB,YAAc,gBAAgB,OAAQ,SAAU,0BAC3B,gBAAgB,YAAa,cAAe,sBAC1C,KACnB,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,cAEjD,kBAAkB,QAAQ,MAAO,aAAa,MAAO,wBAErD,QAAY,OAAO,GAEnB,QAAU,IAAI,IAAI,OAAO,GAAI,SAAU,KACvC,YAAe,KAAK,IAAI,IAAK,IAAI,QAAS,gBAC1C,MAAO,qBAAoB,QAAQ,SAAU,YAExC,cAAkB,GAAG,CAAC,aCb7B,qDAEyC,aACzB,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,0BAC7B,gBAAgB,YAAa,cAAe,sBAC1C,KACnB,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,cAEjD,kBAAkB,QAAQ,MAAO,aAAa,MAAO,wBAErD,gBAAoB,OAAO,aACb,IAAI,IAAI,aAAc,oBAClB,QAAQ,MAAO,oBAClB,IAAI,MAAO,mBAGtB,KAAI,IAAI,OAAO,IAAM,OAAO,YAAa,IAAI,YAAa,SAC9D,MAAO,qBAAoB,QAAQ,SAAU,YAExC,cAAkB,GAAG,CAAC,aCtB7B,uDAE2C,gBAC3B,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,wBAC7B,gBAAgB,YAAa,cAAe,oBAC1C,KACnB,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,YAEjD,kBAAkB,QAAQ,MAAO,aAAa,MAAO,sBAErD,QAAY,OAAO,iBACG,OAAO,eAElB,IAAI,IAAI,QAAS,IAAI,KAAI,aAAc,sBAE9C,IAAI,IAAI,IAAK,SAAU,IAAI,KAAI,IAAI,IAAK,cAAe,yBAC5C,IAAI,IAAI,KACvB,MAAO,qBAAoB,QAAQ,SAAU,YAExC,YAAgB,GAAG,CAAC,WC3B3B,iEAGgB,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,iCAE9C,gBAAgB,YAAa,cAAe,6BACzB,KACnB,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,qBAEjD,kBACI,QAAQ,MAAO,aAAa,MAAO,+BAEvC,YAAe,kBAAkB,QAAS,cAC1C,MAAO,qBAAoB,QAAQ,SAAU,YAExC,qBAAyB,GAAG,CAAC,oBCxBpC,uDAEE,YACI,gBAAgB,OAAQ,SAAU,yCAElC,gBAAgB,OAAQ,SAAU,iCACtC,kBACI,QAAQ,MAAO,QAAQ,MAAO,4CAsBlC,cAAkB,KAAK,uBACD,IAAI,QAAS,uBACb,MAAM,IAAI,IAAI,IAAI,YAExC,MAAO,MAAI,IAAI,UAAW,eAAgB,eAwB5C,6EAEkD,aAClC,UAAU,wBACxB,sBAAwB,gBACpB,iBAAkB,mBAAoB,+BAC1B,gBAAgB,OAAQ,SAAU,gCAC3B,KAOvB,GANI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,wBAEjD,kBACI,kBAAkB,MAAO,QAAQ,MAAO,kCAExC,eAAiB,GACnB,yBAA6B,OAAO,oBACxB,OAAO,QACN,OAAO,IAEpB,kBACI,KAAI,IAAI,kBAAmB,IAAI,IAAK,uBAChC,IAAI,KAAM,uBAEpB,YAAe,+BAA+B,kBAAmB,SAEjE,MAAO,qBAAoB,QAAQ,SAAU,YAGxC,wBAA4B,GAAG,CAAC,uBCzDvC,0DACgC,IAK9B,GAJI,MAAQ,IACV,KAAM,OAAO,KAAO,GAGlB,MAAQ,OAAO,KAAO,EACxB,KAAM,OACF,mGACuC,OAAO,oBAC/B,OAGrB,aACI,WAAW,yBAIT,aAAiB,OACL,UAAU,QAAQ,CAAC,KAAM,oBACnB,IAAI,KAAK,QAAQ,WAAY,KAC/C,KAAK,CAAC,QAAQ,YAEd,eAAmB,IAAI,IAAI,UAAW,gBACrB,KAAI,WAAY,CAAC,eAEjB,aACf,wBAA4B,cACZ,qBAAqB,GAAG,MAAO,CAAC,MAChD,MAAO,CACL,IAAI,QAAQ,GAAI,SACZ,IAAI,KAAK,QAAQ,WAAY,IAAI,cACrC,IAAI,QAAQ,GAAI,SACZ,IAAI,IAAI,YAAY,KAAK,QAAQ,eAGzC,MAAO,CAAC,MAAO,YAGrB,MAAO,UAAS,OAAQ,QAsB1B,yEAEkD,aAClC,UAAU,wBACxB,kBACI,gBAAgB,aAAc,eAAgB,+BAClC,gBAAgB,OAAQ,SAAU,gCAC3B,KASvB,GAPI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,wBAGjD,kBACI,cAAc,MAAO,QAAQ,MAAO,kCAEpC,eAAiB,GACnB,yBAA6B,OAAO,oBACxB,OAAO,cACA,OAAO,cAAc,MAAM,IAE9C,cACI,KAAI,IAAI,cAAe,IAAI,IAAK,uBAC5B,IAAI,qBAAsB,aAGpC,YAAe,+BAA+B,cAAe,SAE7D,MAAO,qBAAoB,QAAQ,SAAU,YAGxC,wBAA4B,GAAG,CAAC,gCC+DtB,CACf,IACA,KACA,KACA,cASa,CACb,cACA,WACA,MACA,YAeY,CACZ,cACA,sBACA,eACA,iBACA,cACA,kBACA,uBACA,2BACA,gCACA,wBACA,qCAOa,CACb,SACA,YACA,WAaa,CACb,mBACA,oBACA,eACA,UACA,UACA,QACA,iBACA,oBACA,+BCrSF,aAyCwC,cAiBtC,sBAAuC,YAErC,IAAO,MAAO,cAAS,KAAK,iBAAiB,EAAG,SAEhD,GAAI,SAAW,MACb,cACI,QAAQ,IAAI,GAAM,EAAC,KAAM,EAAE,KAAM,OAAQ,OAAM,EAAE,SACrD,KAAK,eAAe,eAEpB,MAAK,eAAe,QAMtB,MAFA,SAAQ,QAEJ,WACK,MAEP,OAAM,UACC,SAOP,cACF,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAEd,KAAK,YAGJ,sBACR,KAAK,YAAc,KAAK,WAAa,EAgBvC,4BAEE,MAAO,eAAc,EAAG,SAgB1B,UACM,KAAK,aAAe,MACtB,QAAQ,KAAK,kBAIX,kBACJ,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAEd,CACL,KAAM,OAEN,OAAQ,OAAO,KAAK,YAAa,eAI/B,cACJ,KAAM,IAAI,OAAM,gEAGZ,0BACJ,KAAM,IAAI,OACN,4DACG,KAAK,uBAUE,iCAEd,MAAA,MAAK,YAAe,MAAM,cAAa,GAAG,OAAO,QAAQ,GAClD,aAAa,MAAM,KAI9B,OAAO,eAAe,UAAW,OAAO,YAAa,CACnD,MAAO,UACE,SAAS,UAAY,MAAQ,SAAS,kBAAoB,MAC7D,SAAS,gBAAkB,OC1KnC,sBAAA,aA+BuC,WAMrC,uCAEgC,MAC9B,QAFY,KAAA,aAAA,aAAgC,KAAA,IAAA,IAChC,KAAA,QAAA,UALN,KAAA,iBAAwC,GACxC,KAAA,mBAA0C,GAO5C,WAAW,MACb,MAAK,QAAU,OAAO,QAAQ,WAIlC,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,gBACvB,GACd,KAAK,iBAAiB,IAAM,MAC9B,MAAK,iBAAiB,GAAK,CACzB,aAAc,GAAG,kBACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAG/C,KAAK,mBAAmB,IAAM,MAChC,MAAK,mBAAmB,GAAK,CAC3B,aAAc,GAAG,iBACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAInD,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,oBAAwB,KAAK,iBAAiB,GAAG,2BACvB,KAAK,mBAAmB,GAAG,SAErD,KAAK,KACH,uBACI,KAAI,IAAI,gBAAiB,KAAK,KAC1B,IAAI,OAAO,UAAW,EAAI,KAAK,cAGnC,IAAI,IAAI,KAAK,KAAI,kBAAmB,KAAK,UACjC,KAAK,KAAI,gBAAiB,KAAK,WACnC,+BAGJ,KAAI,IAAI,kBAAmB,KAAK,KAC5B,IAAI,OAAO,SAAU,EAAI,KAAK,MAEtC,gBAAgB,OAAO,oBACvB,kBAAkB,OAAO,sBAEzB,aAAiB,KAAI,IAAI,QAAS,CAAC,KAAK,cAAe,OACvD,MAAM,OAAO,cAGjB,KAAK,sBAGP,UACM,KAAK,oBAAsB,MAC7B,SAAQ,KAAK,iBAAiB,IAAI,GAAK,EAAE,WACzC,QAAQ,KAAK,mBAAmB,IAAI,GAAK,EAAE,iBAIzC,cAEJ,eACI,CAAC,GAAG,KAAK,iBAAkB,GAAG,KAAK,oBACvC,MAAO,CAAC,KAAM,MAAK,kBAAkB,OACjC,WAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,kBAAsB,aAAa,OAAS,YAC1B,GAClB,KAAK,iBACD,aAAa,MAAM,EAAG,eAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,cAEnD,KAAK,mBACD,aAAa,MAAM,cAAe,cAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,cAI7C,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,IAAO,KAAK,IACZ,QAAW,KAAK,eAKb,yBAEL,MAAO,IAAI,KAAI,QAAO,aAAiB,QAAO,IAAQ,QAAO,WAjHxD,kBAAA,UAAY,WAoHrB,cAAc,mBCrJd,qBAAA,aA+BsC,WAMpC,iDACsE,IACpE,QADY,KAAA,aAAA,aAA8B,KAAA,wBAAA,wBAHpC,KAAA,iBAAwC,GAOhD,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,MACzC,GAAI,KAAK,iBAAiB,IAAM,MAC9B,cAAkB,GAClB,KAAK,iBAAiB,GAAK,CACzB,aAAc,GAAG,mBACjB,SAAU,KACN,IAAM,KAAK,MAAM,MAAO,KAAK,yBAClB,SAAS,aAI5B,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,oBAAwB,KAAK,iBAAiB,GAAG,SAEjD,KAAK,KACH,uBAA2B,KAAI,gBAAiB,OAAO,WACvD,gBAAgB,OAAO,oBAEvB,aAAiB,KACb,IAAI,IAAI,SACA,KAAK,KAAI,mBAAoB,OAAO,QAAQ,aAChD,CAAC,KAAK,cACV,OACJ,MAAM,OAAO,cAGjB,KAAK,sBAGP,UACM,KAAK,kBAAoB,MAC3B,QAAQ,KAAK,iBAAiB,IAAI,GAAK,EAAE,gBAIvC,cAEJ,MAAO,CAAC,KAAM,MAAK,kBAAkB,OAAO,KAAK,iBAAiB,IAC9D,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGvC,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,cAAkB,GAClB,KAAK,iBAAmB,aAAa,IACjC,GAAM,EAAC,aAAc,EAAE,KAAM,SAAU,EAAE,OAAO,SAAS,cAG/D,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,wBAA2B,KAAK,+BAK7B,yBAEL,MAAO,IAAI,KAAI,QAAO,aAAiB,QAAO,2BA/EzC,iBAAA,UAAY,UAkFrB,cAAc,kBCnHd,kBAAA,aAkCmC,WASjC,+CAEyD,MACvD,QAFY,KAAA,aAAA,aAAgC,KAAA,MAAA,MAChC,KAAA,MAAA,MAAyB,KAAA,QAAA,UAL/B,KAAA,uBAA8C,GAC9C,KAAA,wBAA+C,GAMrD,KAAK,KAEH,KAAK,SAAW,OAAO,OAAO,WAC9B,KAAK,SAAW,OAAO,OAAO,aAG5B,WAAW,MACb,MAAK,QAAU,OAAO,QAAQ,WAIlC,kCACE,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,IAAI,GAAK,EAAE,MAC7B,OAAO,KAAK,mBAChB,KAAK,KACH,qBAAyB,IAAI,EAAG,KAAK,2BACZ,IAAI,EAAG,KAAK,UAErC,SAAS,QAAQ,WACf,UAAc,OAAO,oBAAoB,gBACvB,GACd,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,SACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAG/C,KAAK,wBAAwB,IAAM,MACrC,MAAK,wBAAwB,GAAK,CAChC,aAAc,GAAG,SACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAInD,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,gBAAoB,KAAK,uBAAuB,GAAG,sBAC9B,KAAK,wBAAwB,GAAG,wBAGjD,KAAI,IAAI,YAAa,KAAK,OAAQ,IAAI,SAAU,EAAI,KAAK,wBAEzD,KAAI,IAAI,aAAc,KAAK,OACvB,IAAI,OAAO,UAAW,EAAI,KAAK,iCAEN,IAAI,eAAgB,4CAEjD,IAAI,gBAAiB,kBAEzB,YAAY,OAAO,gBACnB,aAAa,OAAO,iBAEpB,aACI,KAAI,IAAI,IAAI,yBACA,KAAI,KAAK,2BAA4B,KAAK,UAC9C,CAAC,KAAK,cACV,OACR,MAAM,OAAO,YAGf,KAAK,SAAS,OAAO,IAAI,KAAK,SAAU,KAAK,QAC7C,KAAK,SAAS,OAAO,IAAI,KAAK,SAAU,KAAK,UAE/C,KAAK,sBAGP,UACE,KAAK,SAAS,UACd,KAAK,SAAS,UAEV,KAAK,wBAA0B,MACjC,QAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAE7C,KAAK,yBAA2B,MAClC,QAAQ,KAAK,wBAAwB,IAAI,GAAK,EAAE,gBAI9C,cAEJ,eACI,CAAC,GAAG,KAAK,uBAAwB,GAAG,KAAK,yBAC7C,MAAO,CAAC,KAAM,MAAK,kBAAkB,OACjC,WAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,KAAK,KACH,KAAK,SAAS,OAAO,IAAI,KAAK,MAAO,KAAK,YAAc,IACxD,KAAK,SAAS,OAAO,IAAI,KAAK,MAAO,KAAK,YAAc,MAG1D,kBAAsB,aAAa,OAAS,YAC1B,GAClB,KAAK,uBACD,aAAa,MAAM,EAAG,eAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,cAEnD,KAAK,wBACD,aAAa,MAAM,cAAe,cAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,cAI7C,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,MAAS,KAAK,MACd,QAAW,KAAK,eAKb,yBAEL,MAAO,IAAI,KACP,QAAO,aAAiB,QAAO,MAAU,QAAO,MAChD,QAAO,WA5IN,cAAA,UAAY,OA+IrB,cAAc,eCnLd,oBAAA,aAiCqC,WASnC,+CAEyD,WACnC,GACpB,QAHY,KAAA,aAAA,aAAgC,KAAA,MAAA,MAChC,KAAA,MAAA,MAAyB,KAAA,QAAA,UACzB,KAAA,MAAA,MANN,KAAA,uBAA8C,GAC9C,KAAA,2BAAkD,GAQxD,KAAK,KACH,KAAK,UAAY,OAAO,GAAG,WAC3B,KAAK,SAAW,OAAO,OAAO,aAG5B,WAAW,MACb,MAAK,QAAU,OAAO,QAAQ,WAIlC,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,KAAK,KACH,qBAAyB,IAAI,EAAG,KAAK,aAEjC,IAAI,CAAC,KAAK,aAAc,KAAI,IAAI,KAAK,UAAW,KAAK,OAAQ,IAEjE,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,gBACvB,GACd,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,SACjB,SAAU,UAAU,OAAO,SAAS,aAGpC,KAAK,2BAA2B,IAAM,MACxC,MAAK,2BAA2B,GAAK,CACnC,aAAc,GAAG,SACjB,SAAU,UAAU,OAAO,SAAS,aAIxC,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,gBAAoB,KAAK,uBAAuB,GAAG,yBAC3B,KAAK,2BAA2B,GAAG,wBAGvD,KAAI,IAAI,YAAa,KAAK,OAAQ,IAAI,SAAU,EAAI,KAAK,YAEjD,IAAI,gBAAiB,KAAK,WAC1B,IAAI,6BAEW,QAAQ,IAAK,KAExC,YAAY,OAAO,gBACnB,gBAAgB,OAAO,oBAEvB,aACI,KAAI,IAAI,IAAI,GAAI,kBACR,IAAI,eAAgB,KAAI,mBAAoB,KAAK,WACrD,OAER,MAAM,OAAO,YAGf,KAAK,UAAU,OAAO,KAAI,KAAK,UAAW,IAC1C,KAAK,SAAS,OAAO,IAAI,KAAK,SAAU,KAAK,UAE/C,KAAK,sBAGP,UACE,KAAK,SAAS,UACd,KAAK,UAAU,UAEX,KAAK,wBAA0B,MACjC,QAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAE7C,KAAK,4BAA8B,MACrC,QAAQ,KAAK,2BAA2B,IAAI,GAAK,EAAE,gBAIjD,cACJ,KAAM,IAAI,OAAM,wDAGZ,0BACJ,KAAM,IAAI,OAAM,mDAGlB,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,MAAS,KAAK,MACd,QAAW,KAAK,QAChB,MAAS,KAAK,aAKX,yBAEL,MAAO,IAAI,KACP,QAAO,aAAiB,QAAO,MAAU,QAAO,MAChD,QAAO,QAAY,QAAO,SAvHzB,gBAAA,UAAY,SA0HrB,cAAc,iBC7Jd,iBAAA,aA6BkC,WAKhC,0BACE,QADoB,KAAA,aAAA,aAEpB,KAAK,gBAAgB,cAGvB,kCACE,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,IAAI,GAAK,EAAE,MAC7B,OAAO,KAAK,mBAChB,SAAS,QAAQ,WACf,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAEF,UAAc,OAAO,oBAAoB,MACzC,KAAK,KACH,aAAiB,KAAI,IAAI,KAAK,EAAG,UAAW,OAC5C,MAAM,OAAO,cAGjB,KAAK,sBAMP,8BACE,KAAK,aAAe,aAChB,KAAK,GAAK,MACZ,KAAK,EAAE,UAET,KAAK,EAAI,KAAK,OAAO,CAAC,eAGxB,UACE,KAAK,EAAE,eAGH,cACJ,MAAO,CAAC,KAAM,MAAK,uBAGf,0BAEJ,GADA,aAAe,KAAM,MAAK,kBAAkB,cACxC,aAAa,SAAW,EAC1B,KAAM,IAAI,OAAM,iDAIpB,YACE,MAAO,CAAC,aAAgB,KAAK,oBAIxB,yBAEL,MAAO,IAAI,KAAI,QAAO,gBA7DjB,aAAA,UAAY,MAgErB,cAAc,cC/Fd,sBAAA,aA+BuC,cAMrC,8CAE0B,IACxB,MAAM,cAFM,KAAA,aAAA,aAA8B,KAAA,SAAA,SAChC,KAAA,YAAA,YAJJ,KAAA,cAAqC,GAM3C,KAAK,EAAI,OAAO,KAAK,UAGvB,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,MACzC,GAAI,KAAK,cAAc,IAAM,MAC3B,cAAkB,GAClB,KAAK,cAAc,GAAK,CACtB,aAAc,GAAG,gBACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,aAInD,iBAAqB,KAAK,cAAc,GAAG,kBAC1B,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,KAAK,KACH,6BACwB,KAAI,IAAI,KAAK,EAAG,cAAe,UACnD,KAAK,YACP,SAAW,KACP,IAAI,KAAK,EAAG,KAAI,SAAU,IAAI,gBAAiB,KAAK,KAAM,OAE9D,SAAW,KAAI,IAAI,KAAK,EAAG,iBAAkB,OAE/C,aAAa,OAAO,iBACpB,MAAM,OAAO,cAGjB,KAAK,sBAGP,UACE,KAAK,EAAE,UACH,KAAK,eAAiB,MACxB,QAAQ,KAAK,cAAc,IAAI,GAAK,EAAE,WAS1C,sBACE,KAAK,SAAW,cAGZ,cAEJ,MAAO,CAAC,KAAM,MAAK,kBAAkB,OAAO,KAAK,cAAc,IAC3D,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGvC,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,cAAkB,GAClB,KAAK,cAAgB,aAAa,IAC9B,GAAM,EAAC,aAAc,EAAE,KAAM,SAAU,EAAE,OAAO,SAAS,cAG/D,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,SAAY,KAAK,SACjB,YAAe,KAAK,mBAKjB,yBAEL,MAAO,IAAI,KACP,QAAO,aAAiB,QAAO,SAAa,QAAO,eA3FlD,kBAAA,UAAY,WA8FrB,cAAc,mBC/Hd,qBAAA,aAgCsC,WASpC,+BACsD,YAC7B,YAAiC,cAC3C,IACb,QAOA,GAVY,KAAA,aAAA,aAAgC,KAAA,MAAA,MAChC,KAAA,SAAA,SAA0B,KAAA,QAAA,UANhC,KAAA,uBAA8C,GAC9C,KAAA,mBAA0C,GAC1C,KAAA,qBAA4C,GAQlD,KAAK,SAAW,SAEZ,WAAW,MACb,MAAK,QAAU,OAAO,QAAQ,WAE5B,cAAgB,KAClB,KAAM,IAAI,OAAM,sDAIpB,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,gBACvB,GACd,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,WACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAG/C,KAAK,mBAAmB,IAAM,MAChC,MAAK,mBAAmB,GAAK,CAC3B,aAAc,GAAG,gBACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAG/C,KAAK,qBAAqB,IAAM,MAAQ,KAAK,UAC/C,MAAK,qBAAqB,GAAK,CAC7B,aAAc,GAAG,UACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAInD,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,0BAA8B,KAAK,uBAAuB,GAAG,4BAClC,KAAK,mBAAmB,GAAG,SACtD,KAAK,KACH,6BACI,KAAI,IAAI,sBAAuB,KAAK,OAChC,IAAI,OAAO,UAAW,EAAI,KAAK,QAEvC,GAAI,KAAK,UACP,wBAA4B,KAAK,qBAAqB,GAAG,gCAGrD,KAAI,IAAI,oBAAqB,KAAK,OAC9B,IAAI,SAAU,EAAI,KAAK,yBAG3B,IAAI,IAAI,SAAU,KAAK,cACnB,KACI,IAAI,yBACA,KAAI,OAAO,wBAAyB,KAAK,kCAErD,KAAI,IAAI,mBAAoB,KAAK,UAAW,kBAEhD,sBAAsB,OAAO,0BAC7B,oBAAoB,OAAO,wBAC3B,mBAAmB,OAAO,uBAE1B,aAAiB,IAAI,MAAO,uBAC5B,MAAM,OAAO,eAGb,8BACI,KAAI,IAAI,sBAAuB,KAAK,OAChC,IAAI,OAAO,UAAW,EAAI,KAAK,8BAGnC,KAAI,IAAI,mBAAoB,KAAK,UAC7B,IAAI,IAAI,SAAU,KAAK,cACnB,KAAK,KAAI,0BAA0B,KAAK,YAEpD,sBAAsB,OAAO,2BAC7B,mBAAmB,OAAO,uBAE1B,aAAiB,IAAI,MAAO,uBAC5B,MAAM,OAAO,eAInB,KAAK,sBAGP,UACM,KAAK,wBAA0B,MACjC,QAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAE7C,KAAK,sBAAwB,MAAQ,KAAK,UAC5C,QAAQ,KAAK,qBAAqB,IAAI,GAAK,EAAE,WAE3C,KAAK,oBAAsB,MAC7B,QAAQ,KAAK,mBAAmB,IAAI,GAAK,EAAE,gBAIzC,cAEJ,eACI,CAAC,GAAG,KAAK,uBAAwB,GAAG,KAAK,oBAC7C,MAAI,MAAK,UACP,WAAU,KAAK,GAAG,KAAK,sBAElB,CAAC,KAAM,MAAK,kBAAkB,OACjC,WAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,kBACI,KAAK,SAAW,aAAa,OAAS,EAAI,aAAa,OAAS,YAClD,GAClB,KAAK,uBACD,aAAa,MAAM,EAAG,eAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,cAEnD,KAAK,mBACD,aAAa,MAAM,cAAe,cAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,cAEvC,KAAK,UACP,MAAK,qBACD,aAAa,MAAM,cAAgB,EAAG,cAAgB,GACjD,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,eAK/C,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,SAAY,KAAK,SACjB,QAAW,KAAK,QAChB,SAAY,KAAK,gBAKd,yBAEL,MAAO,IAAI,KACP,QAAO,aAAiB,QAAO,MAAU,QAAO,SAChD,QAAO,QAAY,QAAO,YA5KzB,iBAAA,UAAY,UA+KrB,cAAc,kBCjNd,0BAAA,YA+DS,mBACL,MAAO,IAAI,cAAa,oBAkBnB,4CAA+D,IAEpE,MAAO,IAAI,mBAAkB,aAAc,SAAU,mBAuBhD,4BAC2B,YAAe,YAAuB,cACzD,IACb,MAAO,IAAI,kBACP,aAAc,MAAO,SAAU,UAAS,gBAevC,mBACY,WAAe,SAAa,eACzB,MACpB,MAAO,IAAI,eAAc,aAAc,MAAO,MAAO,iBAehD,uBAAwB,SAAY,cAAuB,MAEhE,MAAO,IAAI,mBAAkB,aAAc,IAAK,iBAgB3C,qBACY,WAAe,SAAa,eAAyB,WAC5D,GACV,MAAO,IAAI,iBAAgB,aAAc,MAAO,MAAO,UAAS,aAmB3D,8CAAwD,IAE7D,MAAO,IAAI,kBAAiB,aAAc,iCC3JzB,CACnB,IAAK,sBAAsB,IAC3B,SAAU,sBAAsB,SAChC,SAAU,sBAAsB,SAChC,QAAS,sBAAsB,QAC/B,QAAS,sBAAsB,QAC/B,OAAQ,sBAAsB,OAC9B,KAAM,sBAAsB,oBCrBG,KAC3B,MAAO,wBAA0B,YAC5B,sBACE,MAAO,eAAiB,YAC1B,aAEF,GAAiB,OAa1B,qBACE,MAAO,IAAI,SAAc,SAAW,cAAc,IAAM,YCrC1D,yBAAA,GAAA,UAAA,qBAAA,CAAA,OAAA,IAAA,OAAA,OAAA,IAAA,OAAA,OAAA,IAAA,OAAA,OAAA,IAAA,OAAA,OAAA,IAAA,OAAA,MAAA,IAAA,MAAA,sBAAA,IAAA,sBAAA,WAAA,IAAA,WAAA,gBAAA,IAAA,gBAAA,gBAAA,IAAA,gBAAA,2BAAA,IAAA,2BAAA,2BAAA,IAAA,2BAAA,uBAAA,IAAA,uBAAA,mBAAA,IAAA,mBAAA,qBAAA,IAAA,qBAAA,gBAAA,IAAA,gBAAA,WAAA,IAAA,WAAA,iBAAA,IAAA,iBAAA,qBAAA,IAAA,qBAAA,oBAAA,IAAA,oBAAA,kBAAA,IAAA,kBAAA,kBAAA,IAAA,kBAAA,kBAAA,IAAA,kBAAA,sBAAA,IAAA,sBAAA,yBAAA,IAAA,yBAAA,0BAAA,IAAA,0BAAA,gBAAA,IAAA,iBAAA,kBAAA,IAAA,kBAAA,kBAAA,IAAA,kBAAA,wBAAA,IAAA,wBAAA,+BAAA,IAAA,+BAAA,qBAAA,IAAA,qBAAA,SAAA,IAAA,SAAA,UAAA,IAAA,UAAA,uBAAA,IAAA,uBAAA,uBAAA,IAAA,uBAAA,mBAAA,IAAA,mBAAA,iBAAA,IAAA,iBAAA,oBAAA,IAAA,oBAAA,qBAAA,IAAA,qBAAA,qBAAA,IAAA,qBAAA,eAAA,IAAA,eAAA,iBAAA,IAAA,iBAAA,YAAA,IAAA,YAAA,iBAAA,IAAA,iBAAA,YAAA,IAAA,YAAA,oBAAA,IAAA,oBAAA,oBAAA,IAAA,oBAAA,aAAA,IAAA,aAAA,uBAAA,IAAA,uBAAA,IAAA,IAAA,KAAA,uBAAA,IAAA,uBAAA,mBAAA,IAAA,mBAAA,iBAAA,IAAA,iBAAA,cAAA,IAAA,cAAA,aAAA,IAAA,qBAAA,WAAA,IAAA,WAAA,WAAA,IAAA,mBAAA,uBAAA,IAAA,uBAAA,kBAAA,IAAA,kBAAA,WAAA,IAAA,WAAA,cAAA,IAAA,cAAA,oBAAA,IAAA,oBAAA,KAAA,IAAA,OCmBM,6CACJ,SAAa,OAAO,GAAG,OACvB,OAAO,QAAQ,YACR,OACD,MAAM,SAAW,KACjB,IACI,kBAAkB,0BAA0B,gDAChB,WAGjC,OACD,MAAQ,GAAK,KAAO,KACpB,IAAM,kBAAkB,qCAAqC,KAAO,MAExE,eAAmB,OAAO,GAC1B,OAAO,QAAQ,YACb,UAAa,EAAG,EAAI,KAAM,IACnB,OACA,IAAM,MAAU,MAAM,KAAO,WAAW,GACzC,IAAM,kBAAkB,2BAA2B,OAAO,gDACb,+CACN,QAK3C,uCACJ,gBAAoB,OAAO,GAAG,QAC9B,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,YAAY,OAAS,OAAO,GAAG,MAEjC,MAAO,aC3BF,0BAA8B,GAS/B,0CACJ,MAAI,SAAU,sBACL,OAEF,eAAe,OAAQ,KAAK,MAAM,KAAK,KAAK,UClB/C,uDAGJ,YACI,WAAc,OAAO,SAAW,SAAW,OAAS,OAAO,YAE3D,YAAe,OAAO,SAAW,SAAW,OAAS,OAAO,IAChE,MAAO,CAAC,QAAS,SCAb,8DAEa,IACjB,aAAyB,GACzB,GAAI,aACF,SAAW,SAAS,OAAO,WAAW,MAAM,IAC5C,SAAS,KAAK,WAAW,GAAK,OAC9B,SAAW,SAAS,OAAO,WAAW,MAAM,SAE5C,SAAW,SAAS,OAAO,WAAW,IACtC,kBAAsB,WAAW,OACjC,UAAa,EAAG,EAAI,cAAe,EAAE,EACnC,SACI,SAAS,OAAO,CAAC,WAAW,EAAI,GAAK,WAAW,GAAI,WAAW,KAErE,SAAW,SAAS,OAAO,WAAW,MAAM,cAAgB,IAE9D,MAAO,UAYH,8DAEa,IACjB,aAAiB,GACjB,GAAI,cACF,SAAS,KAAK,gBACd,UAAa,eAAiB,EAAG,EAAI,aAAc,EAAE,EAC/C,GAAK,EAAI,eACX,UAAS,KAAK,GACd,SAAS,KAAK,EAAK,gBAAiB,KAEpC,SAAS,KAAK,QAIlB,wBAA4B,sBACD,GAC3B,UAAa,EAAG,EAAI,aAAc,EAAE,EAC9B,GAAK,eAAiB,EAAI,GAAK,EAAI,IAAM,EAC3C,mBAAmB,KAAK,GAExB,oBAAoB,KAAK,GAG7B,SAAS,KAAK,GAAG,qBACjB,SAAS,KAAK,GACd,SAAS,KAAK,GAAG,oBAEnB,MAAO,UAYH,sEAEa,IACjB,qBAAyB,GAErB,aACF,iBAAiB,KAAK,WAAW,GAAK,OAEtC,iBAAiB,KAAK,WAAW,GAAK,OAGxC,UAAa,EAAG,EAAI,WAAW,OAAQ,EAAE,EACnC,GAAK,WAAW,OACd,aACF,iBAAiB,KAAK,WAAW,EAAI,GAAK,WAAW,IAErD,iBAAiB,KAAK,WAAW,GAAK,WAAW,EAAI,IAGvD,iBAAiB,KAAK,WAAW,IAIrC,MAAO,kBAOH,+CAEJ,qBAAyB,CAAC,GAC1B,UAAa,EAAG,EAAI,WAAY,EAAE,EAChC,iBAAiB,KAAK,MAAM,GAAG,IAEjC,MAAO,kBAcH,uDAEJ,cAAkB,eAAe,MAAM,EAAG,GAC1C,UAAa,EAAG,EAAI,WAAY,EAAE,EAChC,UAAU,KAAK,eAAe,EAAI,GAAK,MAAM,GAAG,GAAK,MAAM,GAAG,IAGhE,MAAO,WCtIF,oBAAwB,8BACL,yBCDL,gBACC,kBACA,mBACA,mBACA,oBACA,YCHhB,sBACC,MAAM,QAAQ,YACjB,QAAQ,KAAK,GAAG,KAId,sBACC,MAAM,QAAQ,YACjB,QAAQ,IAAI,GAAG,KCKb,6CAEJ,GAAI,MAAK,SAAW,MAAK,OACvB,KAAM,IAAI,OACN,gEACG,MAAK,iBAAiB,MAAK,WAEpC,WAAe,GAAI,cAAa,MAAK,OAAS,GAC9C,UAAa,EAAG,EAAI,OAAO,OAAQ,GAAK,EACtC,OAAO,GAAK,MAAK,EAAI,GACrB,OAAO,EAAI,GAAK,MAAK,EAAI,GAE3B,MAAO,QAiBH,0CAEJ,UAAa,GAAI,cAAa,SAAQ,OAAS,SAClC,GAAI,cAAa,SAAQ,OAAS,GAC/C,UAAa,EAAG,EAAI,SAAQ,OAAQ,GAAK,EACvC,MAAK,EAAI,GAAK,SAAQ,GACtB,MAAK,EAAI,GAAK,SAAQ,EAAI,GAE5B,MAAO,CAAC,KAAA,MAAM,KAAA,OAOV,wCAEJ,QAAY,KAAK,KAAK,SAAQ,OAAS,SAC1B,GAAI,cAAa,WACjB,GAAI,cAAa,KAC9B,UAAa,EAAG,EAAI,SAAQ,OAAQ,GAAK,EACvC,MAAK,KAAK,MAAM,EAAI,IAAM,SAAQ,GAClC,MAAK,KAAK,MAAM,EAAI,IAAM,SAAQ,EAAI,GAExC,MAAO,CAAC,KAAA,MAAM,KAAA,OAOV,uCAEJ,QAAY,KAAK,MAAM,SAAQ,OAAS,SAC3B,GAAI,cAAa,WACjB,GAAI,cAAa,KAC9B,UAAa,EAAG,EAAI,SAAQ,OAAQ,GAAK,EACvC,MAAK,KAAK,MAAM,EAAI,IAAM,SAAQ,GAClC,MAAK,KAAK,MAAM,EAAI,IAAM,SAAQ,EAAI,GAExC,MAAO,CAAC,KAAA,MAAM,KAAA,OAQV,6CAEJ,UAAa,SAAQ,MAAQ,SAChB,SAAQ,MAAQ,EAAI,GACjC,MAAO,CAAC,KAAA,MAAM,KAAA,OASV,oDAEJ,KAAK,MAAQ,GAAK,MAClB,KAAK,MAAQ,EAAI,GAAK,MAMlB,8BAEJ,UAAa,GAAI,cAAa,EAAI,SACrB,GAAI,cAAa,EAAI,GAClC,UAAa,EAAG,EAAI,KAAK,KAAK,EAAI,GAAI,KACpC,MAAW,SAAU,EAAI,IAAM,KAAK,GAAM,GAAI,GAC9C,MAAK,GAAK,KAAK,IAAI,GACnB,MAAK,GAAK,KAAK,IAAI,GAErB,MAAO,CAAC,KAAA,MAAM,KAAA,OAMV,+BAEJ,MAAW,SAAU,EAAI,IAAM,KAAK,GAAM,GAAI,SACjC,KAAK,IAAI,SACT,KAAK,IAAI,GACtB,MAAO,CAAC,KAAA,MAAM,KAAA,OC9HV,iDAEK,GACT,eAAiB,GACjB,GAAI,MAAQ,kBAAqB,SAC/B,OACI,EAAE,MAAM,MAAQ,kBAAoB,EACpC,IAAM,iDACV,WACI,GAAI,OAAM,iBAAiB,KAAK,EAAE,MAAM,MAAQ,sBAEpD,cAAkB,gBAAgB,OAAO,gBACnC,SAAU,IACZ,SAAS,GAEJ,QACN,GACH,OACI,WAAa,EACb,IAAM,2DACV,aAAiB,gBAAgB,QAAQ,IAGzC,GAAI,WAAa,IACf,UAAc,gBAAgB,OAAO,OAAU,EAAI,EAAI,EAAI,EAAI,GAC/D,gBAAgB,UAAY,EAAE,MAAM,MAAQ,MAE9C,OACI,EAAE,MAAM,QAAU,gBAAgB,OAAO,OAAU,EAAI,GACvD,IAAM,+DACV,WAAa,gBAGf,MAAO,YC1DT,yBAAA,GAAA,UAAA,qBAAA,CAAA,yBAAA,IAAA,yBAAA,gBAAA,IAAA,iBAAA,8BAAA,IAAA,gCC6BM,2DAEJ,SAAW,OAUX,IAPI,QAAU,sBACZ,KAAM,OACN,KAAO,IAEP,IAAM,eAAe,OAAQ,KAAK,MAAM,KAAK,KAAK,UAG7C,CAAC,MACF,IAAM,aAAe,MAAQ,OAC/B,KAAO,GAEP,IAAM,eAAe,OAAQ,IAAM,GAGvC,MAAO,KAGH,mDAEJ,aAAiB,QACJ,OAAO,OACpB,YAAe,EAAG,IAAM,KAAM,MACxB,MAAQ,KACV,SAAS,KAAK,OAAO,MAErB,SAAS,KAAK,aAGlB,MAAO,UAWH,4DAGJ,gBAAoB,QAAQ,MAAM,aACpB,EAAE,MAAM,OAEtB,GAAI,YAAc,GACZ,WAAY,CAAC,aAAe,UAAY,aAC1C,KAAM,IAAI,OAAM,sCAAsC,gBAClD,yBAAyB,aAQjC,GAJI,UAAY,GACd,YAAa,aAGX,UAAY,MACd,KAAM,IAAI,OAAM,cAAc;MAC5B,WAGJ,GAAI,KAAO,UACT,KAAM,IAAI,OAAM,cACZ,kDAAkD,UAGxD,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,GAAI,EAAE,MAAM,KAAO,QAAQ,MAAM,GAC/B,KAAM,IAAI,OACN,WAAW,OAAO,EAAE,MAAM,uCACtB,OAAO,QAAQ,MAAM,OAGjC,YAAgB,EAAE,MAAM,kBAEM,aACd,YACA,YACA,EAEhB,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,YAAY,KAAK,EAAE,MAAM,IACzB,WAAa,EAAE,MAAM,GAGvB,UAAa,UAAW,EAAI,KAAM,IAChC,YAAY,KAAK,EAAE,MAAM,IACzB,WAAa,EAAE,MAAM,GAGvB,UAAa,UAAW,EAAI,YAAa,IACvC,YAAY,KAAK,QAAQ,MAAM,IAGjC,UAAa,KAAO,EAAG,EAAI,MAAO,IAChC,YAAY,KAAK,EAAE,MAAM,IACzB,WAAa,EAAE,MAAM,GAGvB,MAAO,CAAC,UAAW,UAAW,UAAW,QAAS,aE9E9C,sCAEJ,GAAI,QAAU,aACZ,GAAI,EAAE,QAAU,YACd,MAAO,GAAE,QAEX,gBAAoB,MAAM,EAAE,cACb,KAAK,EAAG,kBACR,SAAQ,QAAQ,OAAQ,aACvC,MAAA,aAAY,UACZ,OAAO,UACA,OAGT,GAAI,CAAC,gBAAgB,EAAE,MAAO,OAG5B,MAAO,QAAO,qBAAqB,EAAE,OAAQ,EAAE,MAAO,OAExD,GAAI,EAAE,QAAU,aACd,UAAa,SAAQ,KAAK,UACX,KAAK,MAAM,OAC1B,MAAA,OAAK,UACE,OAET,GAAI,QAAU,QACZ,MAAO,UAAQ,IAAI,GACd,GAAI,QAAU,QACnB,SAAa,OAAO,EAAG,EAAE,cACV,SAAQ,SAAS,EAAG,MACnC,MAAA,MAAK,UACE,WAEP,MAAM,IAAI,OAAM,iCAAiC,EAAE,YAAY,SAI7D,gCAEJ,MAAO,QAAO,qBAAqB,EAAE,OAAQ,MAAO,EAAE,OAGlD,sCACJ,IAEE,MAAO,MAAK,IAAI,KAAO,aAAa,iBAEpC,KAAM,IAAI,OACN,4DAA4D,QAI9D,yCACJ,MAAO,SAAQ,IAAI,GAAK,aAAa,IC5GvC,yBAAA,GAAA,UAAA,qBAAA,CAAA,wBAAA,IAAA,wBAAA,wBAAA,IAAA,wBAAA,wBAAA,IAAA,wBAAA,UAAA,IAAA,YEwBO,kBAAkC,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,KAAK,EAAG,WAAY,uBCDZ,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CACL,EAAG,KACD,MAAU,OAAO,KAAK,EAAG,cACf,KAAK,IAAI,OAAO,GAAI,IAC9B,MAAO,KAAI,IAAI,GAAI,wBCZgB,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CACL,EAAG,KACD,MAAU,KAAK,IAAI,OAAO,KAAK,EAAG,YAAa,IAC/C,MAAO,KAAI,GAAI,qBCZkB,CACvC,WAAY,IACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eAEI,2BAA2B,EAAE,MAAO,EAAE,YAE5C,KACX,QAAU,cACwB,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,aAEX,KACX,QAAU,cACwB,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,QAGxB,MAAO,CAAC,EAAG,KAAM,EAAG,uBC3BkB,CACxC,WAAY,KACZ,cAAe,GACf,SAAU,aACR,SAA4C,GAC5C,MAAA,OAAM,QAAQ,QACZ,KAAK,GAAK,IAAM,GAAG,UAEd,wBCPiC,CAC1C,WAAY,OACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,UAAU,uBCLa,CAC1C,WAAY,OACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,UAAU,qBCAW,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,IAAI,OAAO,GAAI,OAAO,KAAK,EAAG,kCCLrB,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CACL,EAAG,KACD,MAAU,KAAK,KAAI,OAAO,GAAI,OAAO,KAAK,EAAG,cAC7C,MAAO,KAAI,GAAI,uBCPoB,CACzC,WAAY,MACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eACE,2BAA2B,EAAE,MAAO,EAAE,YAE1C,KACX,MAAU,KAAI,OAAO,GAAI,OAAO,QACtB,IAAI,GAAI,IAAI,EAAG,eACN,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,aAEX,KACX,MAAU,KAAI,OAAO,GAAI,OAAO,QACtB,IAAI,IAAI,GAAI,IAAI,EAAG,gBACV,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,QAExB,MAAO,CAAC,EAAG,KAAM,EAAG,uBC7BkB,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAI,OAAO,KAAK,EAAG,YAAa,uBCLlB,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,OAAO,GAAI,OAAO,KAAK,EAAG,iBC0B3D,+DAIiD,CAAC,EAAG,EAAG,0BAEtD,QAAY,gBAAgB,GAAI,KAAM,wBACvB,gBAAgB,OAAO,QAAS,sBAEpC,YACG,oBACK,GAEf,OAAO,OAAS,GAClB,cAAe,GACf,KAAO,QACH,IAAK,CAAC,EAAG,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KACjE,QAAU,QAAQ,OAAQ,CACxB,EAAG,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,MAIlE,OACD,KAAK,OAAS,EACd,IAAM,0DACC,KAAK,SACX,OACD,QAAQ,OAAS,EACjB,IAAM,6DACC,QAAQ,SAEd,OACS,+BAA+B,QAAS,WAClD,IAAM,8EACwB,0BAA0B,cAExD,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,8EACwB,+BAA+B,UAGnE,WAAoC,CAAC,GAAI,KAAM,MAAO,eAGlD,CAAC,WAAY,QAAS,UAAW,IAAA,MAAK,qBAG9B,OAAO,UACH,cAAe,OACf,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAIhE,IAGF,kBAAsB,GAAG,CAAC,qCClGc,CAC7C,WAAY,UACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,WAAY,QAAS,UAAW,UAAK,iBACxC,iBAGA,WAAa,KAAO,CAAC,EAAG,EAAG,GAAiC,UAEhE,MAAO,CACL,EAAG,IAAM,cACL,GAAgB,EAAG,WAAY,QAAS,WAAY,MACpD,oBCSV,0DAGE,QAAY,gBAAgB,GAAI,KAAM,sBACvB,gBAAgB,OAAO,QAAS,eAE1C,OACD,OAAO,OAAS,IAAI,KACpB,IAAM,kBAAkB,OAAO,oCAC3B,IAAI,SAEZ,YAAc,YACH,iBACQ,GAEf,OAAO,OAAS,GAClB,cAAe,GACf,QACI,QAAQ,OAAQ,CAAC,EAAG,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,KACvE,KAAO,QAAQ,IAAK,CAAC,EAAG,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAG3D,OACD,KAAK,OAAS,EACd,IAAM,wDACC,KAAK,SACX,OACD,QAAQ,OAAS,EACjB,IAAM,2DACC,QAAQ,SAEnB,WAAkC,CAAC,GAAI,KAAM,MAAO,eAEpB,CAAC,WAAY,QAAS,IAAA,WAG1C,OAAO,UACH,YAAa,OACb,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,gBAAoB,GAAG,CAAC,iCCrEc,CAC3C,WAAY,QACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,WAAY,QAAS,WAAO,MACnC,MAAO,CAAC,EAAG,IAAM,YAAY,GAAgB,EAAG,WAAY,QAAS,gCCNxB,CAC/C,WAAY,YACZ,aAAc,CAAC,IAAK,KACpB,SAAU,mBACR,SAAe,OAER,WAAY,YAAc,MAEjC,MAAI,CAAC,YAAc,CAAC,WACX,CACL,EAAG,IAAM,OAAO,GAAI,EAAG,GAAO,IAC9B,EAAG,IAAM,OAAO,EAAG,GAAI,GAAM,KAEtB,CAAC,YAAc,WACjB,CACL,EAAG,IAAM,OAAO,GAAI,EAAG,GAAO,IAC9B,EAAG,IAAM,OAAO,GAAI,EAAG,GAAM,KAEtB,YAAc,CAAC,WACjB,CACL,EAAG,IAAM,OAAO,EAAG,GAAI,GAAO,IAC9B,EAAG,IAAM,OAAO,EAAG,GAAI,GAAO,KAGzB,CACL,EAAG,IAAM,OAAO,EAAG,GAAI,GAAM,IAC7B,EAAG,IAAM,OAAO,GAAI,EAAG,GAAM,gCC1Be,CAClD,WAAY,eACZ,SAAU,mBACR,IAAO,WAAY,OAAS,MAC5B,MAAO,CAAC,EAAG,IAAM,eAAe,GAAI,WAAY,gCCJH,CAC/C,WAAY,YACZ,SAAU,mBACR,qBACI,iBAEe,iBAAiB,uBAChB,iBAAiB,WAEd,MAAM,KAAK,aAClC,UAAa,WAAW,OAAS,EAAG,GAAK,EAAG,IAC1C,GAAI,WAAW,KAAO,YAAY,GAChC,KAAK,GAAK,UACD,WAAW,KAAO,EAC3B,KAAM,IAAI,OAAM,mBACZ,uCAAuC,iBAG/C,SAAuB,GACvB,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC3B,KAAK,GAAK,GACZ,KAAK,KAAK,GAId,MAAO,CAAC,EAAG,IAAM,KAAI,GAAI,KAAM,sBC1BO,CACxC,WAAY,KACZ,SAAU,IACD,EAAC,EAAG,IAAM,GAAG,0BCFkB,CACxC,WAAY,KACZ,SAAU,IAED,EAAC,EAAG,IAAM,UAAU,6BCAkB,CAC/C,WAAY,YACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,aAAc,cAAgB,MACrC,MAAO,CACL,EAAG,IAAM,MACL,WAAW,aAAa,EAAG,cAAe,UAAU,EAAG,eACvD,GAAI,UAAU,6BCdwB,CAC9C,WAAY,WACZ,aAAc,CAAC,KACf,SAAU,cAAc,2BCFkB,CAC1C,WAAY,OACZ,cAAe,GACf,SAAU,mBACR,WAAe,MAAM,IAAI,GAAK,EAAE,QACzB,MAAQ,YACD,eAAe,KAAM,MAAM,GAAG,OAAO,cAChC,OAAO,IAAI,GAAK,EAAE,mBAClB,MAAM,GAAI,WAAY,OACzC,MAAO,YAAW,IAAI,GAAK,IAAM,sBCPO,CAC1C,WAAY,OACZ,aAAc,CAAC,IAAK,UACpB,SAAU,mBACR,iBAAuB,OAChB,UAAW,QAAS,UAAK,YAAc,MAE9C,MAAK,QACS,kBAAkB,WAC5B,IAAM,iHACoD,cAEvD,CACL,EAAG,IACC,oBAAoB,IAAI,MAAO,GAAI,QAAS,QAAS,MAAK,YAC9D,OAAQ,IACJ,qBAAqB,IAAK,GAAI,QAAQ,MAAO,QAAS,MAAK,6CClBZ,CACvD,WAAY,oBACZ,aAAc,CAAC,KAAM,UACrB,SAAU,oBACR,eAAqB,OAEd,QAAS,UAAK,WAAY,iBAC7B,MAEJ,MAAO,CACL,GAAI,IAAM,OACN,IAAK,OAAQ,QAAS,MAAK,WAAY,EACvC,iBACJ,OAAQ,IAAM,qBACV,IAAK,GAAI,OAAO,MAAO,QAAS,MAAK,WAAY,oBCM3D,+DAGE,QAAU,EACN,EAAE,OAAS,GACb,KAAM,QAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEnE,SAAW,GACP,KAAK,OAAS,GAChB,MAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAEpE,OACD,IAAI,OAAS,EACb,IAAM,iEACC,IAAI,UACV,OACD,KAAK,OAAS,EACd,IAAM,8DACC,KAAK,UACX,OACD,YAAY,SAAW,EACvB,IAAM,mEACC,gBACN,OACD,IAAI,MAAM,KAAO,YAAY,GAC7B,IAAM,4CAA4C,IAAI,MAAM,yCACxB,YAAY,OAC/C,OACD,KAAK,MAAM,KAAO,YAAY,GAC9B,IAAM,0CAA0C,KAAK,MAAM,2CACrB,YAAY,QAEtD,WAA6C,CAAC,EAAG,IAAK,GAAI,YAEf,CAAC,QAAS,IAAA,MAAK,aAG1D,MAAO,QAAO,UACH,uBAAwB,OACxB,OAGN,yBAA6B,GAAG,CAAC,yCC5DI,CAC1C,WAAY,OACZ,aAAc,CAAC,IAAK,UACpB,SAAU,mBACR,IAAO,UAAW,QAAS,WAAO,MAC7B,OACD,kBAAkB,WAClB,IACI,iHACkD,cAE1D,iBAAuB,MAEvB,MAAO,CACL,EAAG,IAAM,oBACJ,IAAiB,MAAO,GAAI,QAAqB,QAAS,OAC/D,OAAQ,IAAM,qBACV,IAAiB,GAAK,QAAqB,MAAO,QAAS,wBChB5B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,IAAI,IAAI,KAAK,EAAG,aAAc,sBCPb,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,KAAK,KAAK,EAAG,YAAa,wBCNP,CAC1C,WAAY,OACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,KAAM,UAAW,mBAAwB,MAEhD,MAAO,CACL,EAAG,KACD,gBAAoB,mBAAmB,CAAC,MAAO,EAAE,UAEvC,OAAO,GAAI,KAAM,UAAW,CAAC,WAEvC,MAAI,cAAe,MACjB,KAAM,UAAU,IAAK,cAGhB,wCCjB4C,CACzD,WAAY,sBACZ,aAAc,CAAC,IAAK,UACpB,SAAU,mBACR,IAAO,UAAW,QAAS,UAAK,iBAC5B,iBAEe,WAAa,KAAO,CAAC,EAAG,GAAK,UAE3C,OACS,kBAAkB,YAC5B,IAAM,mHAEE,eAEZ,cAAoB,MAEpB,MAAK,QACD,EAAE,OAAS,EACX,IAAM,kFACsB,EAAE,SAC7B,OACD,OAAO,OAAS,EAChB,IAAM,mFACsB,OAAO,SAClC,OACD,EAAE,MAAM,KAAO,OAAO,MAAM,GAC5B,IAAM,mEACW,EAAE,MAAM,qDACR,OAAO,MAAM,OAE7B,OACS,+BAA+B,QAAS,YAClD,IAAM,6FACmC,0BACjC,gBAER,iBAAmB,MAChB,OACI,MAAM,OACX,IACI,gFACmB,+BAA+B,UAGrD,CACL,EAAG,IAAM,mCACL,EAAE,MAAO,GAAI,OAAQ,QAAS,MAAK,UAAW,iBAClD,OAAQ,IAAM,oCACV,EAAG,GAAI,OAAO,MAAO,QAAS,MAAK,UAAW,yCClDR,CAC9C,WAAY,WACZ,aAAc,CAAC,IAAK,UACpB,SAAU,mBACR,cAAoB,kBAE+B,CAAC,EAAG,OAAQ,iBACV,CAAC,EAAG,OAAQ,IAEjE,MAAO,CACL,EAAG,IAAM,OAAO,UACZ,wBAAyB,YAAqC,OAClE,OAAQ,IAAM,OAAO,UACjB,yBAA0B,aAAsC,wBCdjC,CACvC,WAAY,IACZ,cAAe,CAAC,IAChB,SAAU,aACR,OAAY,aAEkB,CAAC,GAAI,GAEnC,MAAO,CAAC,EAAG,IAAM,OAAO,UAAU,QAAS,yBCLN,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,QACF,IAAI,IAAI,IAAI,OAAO,KAAM,EAAI,KAAK,KAAK,KAAK,KACtD,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,oBCTY,CACvC,WAAY,IACZ,cAAe,CAAC,IAChB,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,2BCLmB,CAC9C,WAAY,WACZ,aAAc,CAAC,SACf,SAAU,aACR,YAAgB,MAChB,MAAO,CAAC,MAAO,IAAM,QAAQ,GAAI,OAAM,0BCJA,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,uBCNU,CACzC,WAAY,MACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,0BCIe,CAC5C,WAAY,SACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eACE,2BAA2B,EAAE,MAAO,EAAE,YAE1C,KACX,QAAY,IAAI,GAAI,KAAK,EAAG,uBACT,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,UAEI,KACX,QAAU,IAAI,GAAI,KAAK,EAAG,uBACP,iBAAiB,EAAE,MAAO,UACzC,WAAW,OAAS,GACtB,KAAM,QAAQ,KAAI,IAAK,YAAa,EAAE,QAExC,QAAY,OAAO,GACnB,MAAO,KAAI,IAAI,IAAK,KAAK,IAAK,cAEhC,MAAO,CAAC,EAAG,KAAM,EAAG,iCCvB4B,CAClD,WAAY,eACZ,aAAc,CAAC,IAAK,OAAQ,WAAY,SACxC,SAAU,mBAER,IAAO,iBAAmB,iCACS,iBAEhB,SAAS,KAAO,OAAO,GAAK,sBACzB,iBAAiB,MAAK,MAAO,EAAE,iBACzB,GAC5B,GAAI,MAAK,OAAS,GAChB,UAAa,EAAG,EAAI,EAAE,MAAM,OAAS,EAAG,EAAE,EACxC,UAAU,KAAK,EAAE,MAAM,IAEzB,UAAU,KAAK,GAGjB,eAAmB,IAAI,EAAG,yBACA,IAAI,GAAI,gCACN,MAAM,KAAI,SAAU,OAAO,kCAChC,IACnB,IAAI,IAAI,oBAAqB,qBAAsB,qBACnD,OAAO,WAEE,IACP,MAAK,OAAS,EACT,QACH,IAAI,IAAI,GACA,KACI,QAAQ,oBAAqB,CAAC,EAAG,EAAG,EAAG,MAAK,MAAM,KAClD,YACR,YACJ,EAAE,OAEC,QAAQ,IAAI,IAAI,GAAI,qBAAsB,YAAa,EAAE,eAGpD,KACd,YACI,IAAI,IAAI,oBAAqB,OAAO,KAAM,mBAC9C,MAAI,OAAK,OAAS,GAChB,SAAU,KAAI,QAAS,gBAElB,QAAQ,QAAS,MAAK,oBAEX,KAClB,gBAAkB,IAAI,IAAI,eAAgB,YAAa,mBAEvD,MAAI,OAAK,OAAS,GAChB,aAAc,KAAI,YAAa,gBAE1B,QAAQ,YAAa,MAAK,iBAElB,KACf,0BAA8B,IAAI,WAAY,8BAE/B,IAAI,GAAI,uBACvB,MAAI,OAAK,OAAS,GAChB,UAAW,KAAI,SAAU,gBAEpB,QAAQ,SAAU,MAAK,kBAEd,KAChB,cAAgB,GAChB,MAAI,OAAK,OAAS,GAChB,WAAY,KAAI,UAAW,gBAEtB,QAAQ,UAAW,MAAK,QAGjC,MAAO,CACL,EAAG,KACH,KAAM,QACN,SAAU,YACV,MAAO,SACP,OAAQ,8BChF8B,CAC1C,WAAY,SACZ,aAAc,CAAC,IAAK,WACpB,SAAU,mBACR,eAAqB,OACd,MAAQ,iBAEI,eAAe,KAAM,EAAE,OAAO,QAEpC,KACX,gBAAoB,EAAE,kBACF,QAAQ,gBAET,YAAY,MAAM,EAAG,sBACtB,WAAW,kBACV,YAAY,MAAM,KAAM,YAAY,QAAQ,MAAM,aACnD,WAAW,wBAEJ,WAAW,EAAG,4BAEnC,WAAW,UAAY,EAAG,UAAY,EAAI,uBAE1B,YAAY,CAAC,WAAY,CAAC,aAAc,oBAE7C,QAAQ,GAAI,6BACH,QAAQ,QAAS,CAAC,4BAGtC,YAAY,CAAC,CAAC,WAAY,iBAAkB,mCACxB,UAAU,OAAQ,0BACzB,mBACb,gBAAiB,gBAA6B,EAAE,MAAM,iCAE9B,uBAAuB,eACnD,MAAA,YAAa,UAAU,WAAY,qBAE5B,YAET,MAAO,CAAC,EAAG,KAAM,QAAS,IAAM,WAIpC,gCACE,WAAe,GACf,UAAa,MAAO,EAAI,KAAM,EAAE,EAC9B,OAAO,KAAK,GAEd,MAAO,QAGT,6BACE,WAAe,GACf,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,UAAa,EAAG,EAAI,OAAO,GAAG,OAAQ,EAAE,EACtC,OAAO,KAAK,OAAO,GAAG,IAG1B,MAAO,QC9DF,2BAA2C,CAChD,WAAY,aACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,MACf,MAAO,CAAC,EAAG,IAAM,UAAU,GAAI,EAAG,IAAM,UAAU,yBCJR,CAC5C,WAAY,SACZ,SAAU,IACD,EAAC,EAAG,IAAM,KAAK,GAAI,iCCHgB,CAC5C,WAAY,SACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,uBCJY,CACzC,WAAY,MACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,uBCNY,CACzC,WAAY,MACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,2BCJgB,CAC7C,WAAY,UACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,OAAS,WACH,QAAQ,EAAG,GAIxB,MAAO,CAAC,EAAG,IAAM,MAAM,KAAM,GAAI,IAAI,GAAI,2BCVF,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAI,EAAG,qBCLK,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,EAAG,oCCHW,CAC9C,WAAY,WACZ,aAAc,GACd,cAAe,CAAC,IAChB,SAAU,mBACR,WAAgB,OACT,MAAQ,MACf,MAAO,CACL,OAAQ,KACN,aAAiB,YACD,IAAI,OACpB,MAAO,KAAI,GAAI,IAAI,KAAI,GAAI,KAAM,UAAW,eCXpD,gEACqC,OAAU,QAAW,OAAU,IAClE,WAA8B,CAAC,EAAG,EAAG,UAET,CAAC,YAAa,KAAM,MAAO,MAEvD,MAAO,QAAO,UACV,QAAS,OAAgC,OAGxC,uCACH,GAAG,CAAC,oDCfiC,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,SAAe,OACR,YAAa,KAAM,MAAO,MAAQ,MAEzC,MAAO,CACL,EAAG,IAAM,mCACL,EAAG,EAAG,GAAI,YAAa,KAAM,MAAO,SCJxC,+CAEJ,MAAI,GAAE,KAAO,MAAM,MACjB,GAAI,QAAQ,EAAa,qBAAqB,EAAE,MAAO,YAErD,GAAG,KAAO,MAAM,MAClB,IAAK,QAAQ,GAAc,qBAAqB,GAAG,MAAO,YAErD,CACL,EAAG,KACD,OAAW,IAAI,GAAI,KAAK,MAAM,MAAO,GAAI,GAAG,QAC5C,MAAO,MCdN,kBAAkC,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,aAA2B,OACpB,kBAAoB,WACjB,MAAM,KACN,MAAM,YACM,eAAe,iBAAkB,EAAE,eACzC,iBAAiB,GAAI,EAAG,EAAG,UAC3C,MAAO,CACL,EAAG,IACM,QAAQ,yBCZsB,CAC3C,WAAY,QACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,WACF,IAAM,IAAI,GAAI,KAAK,aAAa,EAAG,GAAI,iBACvC,IAAM,IAAI,GAAI,KAAK,KAAK,EAAG,GAAI,YAC5C,MAAO,CAAC,EAAG,KAAM,EAAG,QC2BxB,sEAIiD,CAAC,EAAG,EAAG,0BAEtD,QAAY,gBAAgB,GAAI,KAAM,wBACvB,gBAAgB,OAAO,QAAS,yBAC/B,gBAAgB,OAAQ,SAAU,sBAEvC,YACG,gBACC,qBACI,GAEf,OAAO,OAAS,GAClB,cAAe,GACf,KAAO,QACH,IAAK,CAAC,EAAG,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KACjE,QAAU,QAAQ,OAAQ,CACxB,EAAG,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,KAErE,SAAW,QAAQ,QAAS,CAC1B,EAAG,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,MAItE,OACD,KAAK,OAAS,EACd,IAAM,0DACC,KAAK,SACX,OACD,QAAQ,OAAS,EACjB,IAAM,6DACC,QAAQ,SACd,OACD,SAAS,OAAS,EAClB,IAAM,8DACC,SAAS,SAEf,OACS,+BAA+B,QAAS,WAClD,IAAM,8EACwB,0BAA0B,cACxD,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,8EACwB,+BAA+B,UAGnE,WAC0B,CAAC,GAAI,KAAM,MAAO,QAAS,OAAQ,gBAGzD,CAAC,WAAY,QAAS,UAAW,IAAA,MAAK,qBAG9B,OAAO,UACH,cAAe,OACf,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAIhE,IAGF,kBAAsB,GAAG,CAAC,qCC5Gc,CAC7C,WAAY,UACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,SAAe,OACR,WAAY,QAAS,UAAW,UAAK,iBACxC,iBAGA,WAAa,KAAO,CAAC,EAAG,EAAG,GAAiC,UAEhE,MAAO,CACL,EAAG,IAAM,cACL,GAAgB,EAAG,EAAG,WAAY,QAAS,WAAY,MACvD,oBCUV,iFAKE,QAAY,gBAAgB,GAAI,KAAM,sBACvB,gBAAgB,OAAO,QAAS,uBAC/B,gBAAgB,OAAQ,SAAU,eAE7C,OACD,OAAO,OAAS,IAAI,KACpB,IAAM,kBAAkB,OAAO,oCACvB,IAAI,SAEX,OACD,IAAI,OAAS,EACb,IAAM,wDACC,IAAI,SACV,OACD,OAAO,OAAS,EAChB,IAAM,2DACC,OAAO,SACd,iBAAmB,MAChB,OACI,MAAM,OACX,IAAM,4EACiB,+BAA+B,UAG5D,WAAkC,CAAC,GAAI,IAAK,MAAO,OAAQ,OAAQ,eAEnC,CAAC,WAAY,QAAS,IAAA,MAAK,iBAG3D,MAAO,QAAO,UACH,YAAa,OACb,OAGN,gBAAoB,GAAG,CAAC,iCChEc,CAC3C,WAAY,QACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,SAAe,OACR,WAAY,QAAS,WAAO,MAEnC,MAAO,CACL,EAAG,IAAM,YAAY,GAAgB,EAAG,EAAG,WAAY,QAAS,yBCJ5B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,MAAQ,WACG,eAAe,KAAM,EAAE,cAC1B,0BAA0B,EAAE,MAAO,kBAC9B,OAAO,cACH,cAAc,kBAEzB,KACX,oBAAwB,EAAE,MAAM,QAChC,KAAK,QAAQ,QACX,gBAAgB,OAAQ,IAE1B,eAAmB,QAAQ,GAAI,qBACnB,IAAI,IAAI,WAAY,MAAK,EAAE,MAAO,YAAa,YAC3D,MAAO,MAGT,MAAO,CAAC,EAAG,sBCxB0B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,aAA2B,OACpB,MAAQ,eACA,eACO,eAAe,KAAM,EAAE,eAC7B,iBAAiB,GAAI,EAAG,EAAG,UAC3C,MAAO,CACL,EAAG,IACM,QAAQ,yBCXsB,CAC3C,WAAY,QACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,WACF,IAAM,IAAI,GAAI,KAAK,UAAU,EAAG,GAAI,iBACpC,IAAM,IAAI,GAAI,KAAK,QAAQ,EAAG,GAAI,YAC/C,MAAO,CAAC,EAAG,KAAM,EAAG,4BCVuB,CAC7C,WAAY,UACZ,aAAc,CAAC,KACf,SAAU,mBAGR,MAAU,MAAM,IACT,UAAY,YACL,SAAS,IAAI,IAAK,GAAE,IAClC,MAAO,CAAC,EAAG,IAAM,MAAM,GAAI,MAAO,EAAE,wBCHC,CACvC,WAAY,IACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eACE,2BAA2B,EAAE,MAAO,EAAE,YAE1C,KACX,eAAmB,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,GAAI,YAAa,EAAE,OAEjC,SAEI,KACX,QAAY,IAAI,GAAI,IAAI,MAAM,IAAI,EAAG,iBAClB,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,KAET,MAAO,CAAC,EAAG,KAAM,EAAG,2BCxBsB,CAC5C,WAAY,SACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eACE,2BAA2B,EAAE,MAAO,EAAE,YAE1C,KACX,QAAY,IAAI,GAAI,KAAK,EAAG,uBACT,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,UAEI,KACX,QAAY,IAAI,GAAI,KAAK,EAAG,uBACT,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,KAET,MAAO,CAAC,EAAG,KAAM,EAAG,sBC3BiB,CACvC,WAAY,IACZ,SAAU,IACD,EAAC,EAAG,IAAM,IAAI,wBCHmB,CAC1C,WAAY,OACZ,aAAc,CAAC,WACf,SAAU,aACR,YAAgB,MAAM,GACtB,MAAO,CAAC,QAAS,IAAM,MAAM,QAAQ,MAAO,iCCLF,CAC5C,WAAY,SACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,sBCHW,CACxC,WAAY,KACZ,cAAe,GACf,SAAU,mBACR,IAAO,MAAQ,iBACI,QAAQ,GAAI,MAC/B,MAAO,YAAW,IAAI,GAAK,IAAM,qBCNM,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,mBAGR,MAAU,MAAM,IACT,UAAY,YACL,SAAS,IAAI,IAAK,GAAE,IAClC,MAAO,CAAC,EAAG,IAAM,MAAM,GAAI,MAAO,EAAE,wBCCC,CACvC,WAAY,IACZ,aAAc,CAAC,IAAK,KACpB,cAAe,CAAC,IAChB,SAAU,aACR,WAAkB,YACL,QACD,WAEO,2BAA2B,MAAK,MAAO,MAAI,eAE9C,KACd,aAAiB,KAAK,MAAK,eACjB,IAAI,GAAI,IAAI,SAAU,IAAI,MAAM,IAAI,SAAU,OAAO,kBAC7B,iBAAiB,MAAK,MAAO,UAC/D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,MAAK,eAEZ,KACb,cAAkB,QAAQ,MAAM,WAChB,MAAM,UAAW,IAAI,OAAO,UAAU,YAC5C,IAAI,GAAI,IAAI,EAAG,qBACS,iBAAiB,MAAI,MAAO,UAC9D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,MAAI,QAE1B,MAAO,CAAC,EAAG,QAAS,EAAG,0BCnCgB,CACzC,WAAY,MACZ,aAAc,CAAC,IAAK,SACpB,SAAU,aACR,aAAmB,WACN,QAAQ,EAAG,GAExB,MAAO,CACL,EAAG,IAAM,MAAM,KAAM,GAAI,IAAI,GAAI,QACjC,MAAO,KACL,QAAU,MAAM,KAAM,UAAU,IAAK,IAAI,GAAI,eAC1B,iBAAiB,MAAM,MAAO,GAAG,OACpD,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,MAAM,yBCbO,CACvC,WAAY,QACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eAEI,2BAA2B,EAAE,MAAO,EAAE,YAC5C,KACX,QAAY,IAAI,GAAI,KAAK,EAAG,uBACM,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,UAEI,KACX,QAAU,IAAI,GAAI,KAAK,EAAG,uBACQ,iBAAiB,EAAE,MAAO,UACxD,WAAW,OAAS,GACtB,KAAM,QAAQ,KAAI,IAAK,YAAa,EAAE,QAExC,QAAY,OAAO,GACnB,MAAO,KAAI,IAAI,IAAK,KAAK,IAAK,cAEhC,MAAO,CAAC,EAAG,KAAM,EAAG,6BC7BwB,CAC9C,WAAY,WACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,OAAO,wBCLG,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,WACC,IAAI,UAAU,EAAG,GAAI,KAAK,IAEvC,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,KAAM,8BCRE,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,KAAK,GAAI,iCCPE,CAC3C,WAAY,QACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,QAAQ,GAAI,EAAE,mCCHiB,CAClD,WAAY,eACZ,aAAc,CAAC,UACf,SAAU,mBACR,YAAiB,aAEwB,CAAC,GAAI,kBAC5B,IAEd,OAAO,UACH,mBAAoB,OAAgC,OAG5D,MAAO,CAAC,OAAQ,6CCbuC,CACzD,WAAY,sBACZ,aAAc,CAAC,UACf,SAAU,mBACR,YAAiB,aAE+B,CAAC,GAAI,kBACnC,IAEd,OAAO,UACH,0BAA2B,OAAgC,OAGnE,MAAO,CAAC,OAAQ,+BCdyB,CAC3C,WAAY,QACZ,SAAU,mBACR,IAAO,MAAQ,WACF,eAAe,KAAM,GAAG,OACrC,MAAO,CAAC,EAAG,IAAM,QAAQ,GAAI,yBCLU,CACzC,WAAY,MACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,uBCFY,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,IAAI,GAAI,IAAI,IAAI,EAAG,KAAM,yBCLN,CAC1C,WAAY,OACZ,aAAc,CAAC,aACf,SAAU,aACR,eAAoB,MACpB,MAAO,CAGL,UAAW,IAAM,KAAK,UAAU,WAAY,WAC5C,EAAG,IAAM,IAAI,GAAI,KAAK,UAAW,GAAG,QACpC,EAAG,IAAM,IAAI,GAAI,KAAK,WAAW,WAAY,GAAG,0BCRZ,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CACL,EAAG,KACD,SAAa,QAAQ,EAAG,OAAO,gBAEZ,OAAO,yBACZ,OAAO,+BAEM,IAAI,GAAI,0BAE/B,IAAI,IAAI,GAAI,aAAa,IAAI,KAAK,EAAG,aAEzC,MAAO,OAAM,KAAM,mBAAoB,wCCnBF,CAC3C,WAAY,QACZ,cAAe,CAAC,IAChB,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,EAAG,IAAI,OAAO,GAAI,uBCRT,CACxC,WAAY,KACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,qBCDU,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,IAAI,KAAK,EAAG,YAAa,sBCLR,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,KAAK,KAAK,EAAG,YAAa,uBCPR,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,MAAO,MAAQ,iBAEH,EAAE,qBACG,iBAAiB,EAAG,MAAO,eAQT,GAC1C,UAAa,EAAG,EAAI,GAAG,KAAM,IAC3B,SAAS,KAAK,CAAC,OAAO,GAAI,WAAW,GAAK,OAAO,GAAK,MAAM,KAE9D,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,+BCnBgB,CAC3C,WAAY,QACZ,cAAe,CAAC,IAChB,SAAU,mBACR,OAAY,OACL,KAAO,eACG,YAEA,IAAI,GAAI,GACzB,MAAO,CACL,OAAQ,IAAM,IAAI,SAAU,IAAI,KAAI,SAAU,CAAC,KAAM,UAAW,0BCXxB,CAC5C,WAAY,SACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,QAAQ,gCCPe,CAClD,WAAY,eACZ,SAAU,mBACR,IAAO,WAAY,UAAY,MAC/B,MAAO,CAAC,EAAG,IAAM,eAAe,GAAI,WAAY,8BCLR,CAC1C,WAAY,OACZ,SAAU,mBACR,IAAO,MAAQ,MAEf,MAAO,CAAC,EAAG,IAAM,OAAO,GAAI,wBCDU,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,KAAK,KAAK,EAAG,YAAa,wBCRf,CAC1C,WAAY,OACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,KAAK,EAAG,WAAY,mCCJE,CACrD,WAAY,kBACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,UACH,OAAO,QACN,IAAM,IAAI,GAAI,IAAI,IAAK,IAAI,EAAG,UAC9B,IAAM,IAAI,GAAI,IAAI,IAAK,IAAI,EAAG,KAC3C,MAAO,CAAC,EAAG,KAAM,EAAG,uBCVkB,CACxC,WAAY,KACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,qBCHU,CACvC,WAAY,IACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eAEI,2BAA2B,EAAE,MAAO,EAAE,YAE5C,KACX,QAAU,cACwB,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,aAEX,KACX,QAAU,cACwB,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAI,KAAM,EAAE,QAG7B,MAAO,CAAC,EAAG,KAAM,EAAG,sBCxBiB,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,sBACY,EAAE,MAAM,SACzB,MAAQ,WAEF,eAAe,KAAM,EAAE,OACpC,KAAK,QAAQ,QACX,gBAAgB,OAAQ,IAE1B,eAAmB,QAAQ,GAAI,sBAClB,IAAI,WAAY,MAAK,EAAE,MAAO,YAE3C,MAAO,CAAC,EAAG,IAAM,sBChBoB,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,OAAO,IAAI,uBCLE,CACxC,WAAY,KACZ,cAAe,CAAC,IAChB,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,IAAI,OAAO,GAAI,OAAO,IAAK,sBCPV,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,MAAQ,WAEF,KACX,UAAY,UAAU,GAGtB,GAAI,EAAE,OAAS,EACb,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,MAAQ,KAAI,MAAO,MAAM,GAAI,CAAC,EAAI,EAAE,MAAM,IAAK,CAAC,EAAE,MAAM,cAEjD,EAAE,OAAS,EACpB,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,MAAQ,KAAI,MAAO,MAAM,GAAI,CAAC,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,IAAK,CACjD,EAAE,MAAM,GAAI,EAAE,MAAM,cAI7B,EAAE,OAAS,EACpB,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,MACI,KAAI,MACA,MACI,GAAI,CAAC,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,IACjD,CAAC,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,cAI1C,EAAE,OAAS,EACpB,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,MACI,KAAI,MACA,MACI,GACA,CACE,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,GAC5C,EAAI,EAAE,MAAM,IAEd,CAAC,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,UAMjE,MAAM,IAAI,OACN,2DACG,EAAE,qBAEX,MAAO,QAET,MAAO,CAAC,EAAG,4BC7DgC,CAC7C,WAAY,UACZ,SAAU,mBACR,mBAAuC,OAChC,MAAQ,wBACY,uBAAuB,MAClD,MAAO,CAAC,EAAG,IAAM,UAAU,GAAI,8BCRS,CAC1C,WAAY,OACZ,SAAU,mBACR,gBAAiC,OAC1B,MAAQ,YACf,MAAO,CAAC,MAAO,IAAM,MAAM,GAAI,sCCIqB,CACtD,WAAY,mBACZ,aAAc,CAAC,cACf,SAAU,aACR,gBAAqB,WAER,IACJ,oBAAoB,GAAI,YAEjC,MAAO,CAAC,EAAG,QAIf,wCAIE,uBAA2B,QAAQ,QAAS,UAAU,mBACrC,OAAO,EAAG,+BACV,aAAa,QAAS,OAAO,EAAG,mBAChC,SAAS,KAAO,WAAW,KAC5C,UAAa,EAAG,EAAI,SAAU,EAAE,EAC9B,WAAa,WAAW,WAAY,EAAI,GAE1C,WAAa,WAAW,WAAY,MAAK,SAAS,MAAO,SACzD,cAAkB,UAAU,UAC5B,MAAO,OAAM,WAAY,SAAU,WClC9B,wBAAwC,CAC7C,WAAY,UACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,mBC+FG,CAChC,cACA,eACA,gBACA,cACA,eACA,iBACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,qBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,qBACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,oBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,eACA,cACA,kBACA,oBACA,cACA,mBACA,cACA,iBACA,mBACA,eACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,iBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,qBAGF,yBAA6B,aAC3B,iBAAiB,gBCxMnB,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCFb,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCCf,OAAO,UAAU,UAAY,YAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,ICRzB,OAAO,UAAU,IAAM,YACrB,MAAA,MAAK,kBACE,KAAI,KAAM,ICDnB,OAAO,UAAU,IAAM,wBAErB,MAAA,MAAK,kBACE,IAAI,KAAM,KAAM,WCHzB,OAAO,UAAU,IAAM,wBAErB,MAAA,MAAK,kBACE,IAAI,KAAM,KAAM,WCJzB,OAAO,UAAU,OAAS,eACxB,MAAA,MAAK,kBACE,OAAO,KAAM,OCFtB,OAAO,UAAU,OAAS,eACxB,MAAA,MAAK,kBACE,OAAO,KAAM,OCGtB,OAAO,UAAU,SAAW,WAC1B,MAAA,MAAK,kBACL,OAAO,KAAK,OAAS,EAAG,IAAM,uCACvB,QAAQ,KAAM,KCCvB,OAAO,UAAU,OAAS,gBAExB,MAAA,MAAK,kBACE,KAAQ,KAAM,QCRvB,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,QAAQ,KAAM,CAAC,KAAK,QCE7B,OAAO,UAAU,KAAO,uBAEtB,MAAA,MAAK,kBACE,QAAQ,KAAM,CAAC,KAAM,WCD9B,OAAO,UAAU,KAAO,6BAEtB,MAAA,MAAK,kBACE,QAAQ,KAAM,CAAC,KAAM,QAAS,SCFvC,OAAO,UAAU,KAAO,oCAEtB,MAAA,MAAK,kBACE,QAAQ,KAAM,CAAC,KAAM,QAAS,MAAO,UCA9C,OAAO,UAAU,KAAO,2CAGtB,MAAA,MAAK,kBACE,QAAQ,KAAM,CAAC,KAAM,QAAS,MAAO,OAAQ,UChBtD,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCFf,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCJd,OAAO,UAAU,MAAQ,YACvB,MAAA,MAAK,kBACE,MAAM,KAAM,ICArB,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCDf,OAAO,UAAU,QAAU,mDAIzB,MAAA,MAAK,kBACE,QAAQ,KAAM,WAAY,QAAS,MAAK,kBCPjD,OAAO,UAAU,eAAiB,2BAEhC,MAAA,MAAK,kBACE,eAAe,KAAM,WAAY,QCC1C,OAAO,UAAU,UAAY,wDAM3B,MAAA,MAAK,kBACE,UAAU,KAAM,MAAM,SAAU,OAAQ,QAAO,kBCXxD,OAAO,UAAU,YAAc,gBAE7B,MAAA,MAAK,kBACE,YAAY,KAAM,QCF3B,OAAO,UAAU,KAAO,gBACtB,MAAA,MAAK,kBACE,KAAK,KAAM,QCFpB,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,YAAc,qBAE7B,MAAA,MAAK,kBACE,YAAY,KAAM,KAAK,QCLhC,OAAO,UAAU,OAAS,iBAExB,MAAA,MAAK,kBACD,YAAa,SACf,GAAI,CAAC,IAEA,OAAO,CAAC,KAAM,GAAG,GAAI,OCF9B,OAAO,UAAU,OAAS,kEAIxB,MAAA,MAAK,kBACE,OACI,KAAM,OAAQ,OAAQ,MAAK,WAAY,SACvC,kBCPb,OAAO,UAAU,gBAAkB,2DAKjC,MAAA,MAAK,kBACE,gBACI,KAAM,OAAQ,YAAa,QAAS,MAAK,kBCPtD,OAAO,UAAU,OAAS,oEAKxB,MAAA,MAAK,kBACE,OACI,KAAM,OAAQ,QAAS,MAAK,WAAY,UACxC,kBCVb,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCFb,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCHd,OAAO,UAAU,OAAS,mCAExB,MAAA,MAAK,kBACE,OAAO,KAAM,KAAM,UAAW,YCHvC,OAAO,UAAU,aAAe,+BAE9B,MAAA,MAAK,kBACE,aAAa,KAAM,UAAW,aCIvC,OAAO,UAAU,gBAAkB,oEAKjC,MAAA,iBAAgB,8DAChB,KAAK,kBACE,gBACI,KAAM,OAAQ,QAAS,MAAK,WAAY,UACxC,kBCbb,OAAO,UAAU,gBAAkB,oEAKjC,MAAA,MAAK,kBACE,gBACI,KAAM,OAAQ,QAAS,MAAK,WAAY,UACxC,kBCTb,OAAO,UAAU,WAAa,oDAI5B,MAAA,MAAK,kBACE,WAAW,KAAM,OAAQ,QAAS,MAAK,UAAW,aCP3D,OAAO,UAAU,SAAW,YAE1B,MAAA,MAAK,kBACE,SAAS,KAAM,ICFxB,OAAO,UAAU,UAAY,YAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,ICJzB,OAAO,UAAU,IAAM,YACrB,MAAA,MAAK,kBACE,IAAI,KAAM,ICHnB,OAAO,UAAU,IAAM,YACrB,MAAA,MAAK,kBACE,IAAI,KAAM,ICFnB,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCGb,OAAO,UAAU,YAAc,YAE7B,MAAA,MAAK,kBACE,YAAY,KAAM,ICR3B,OAAO,UAAU,MAAQ,YACvB,MAAA,MAAK,kBACE,MAAM,KAAM,ICArB,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCFb,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCJb,OAAO,UAAU,WAAa,eAC5B,MAAA,MAAK,kBACE,WAAW,KAAM,OCA1B,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCFf,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCAb,OAAO,UAAU,QAAU,WACzB,MAAA,MAAK,kBACE,QAAQ,KAAM,CAAC,KAAK,QCJ7B,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCJf,OAAO,UAAU,SAAW,YAE1B,MAAA,MAAK,kBACE,SAAS,KAAM,ICDxB,OAAO,UAAU,OAAS,uBAExB,MAAA,MAAK,kBACE,OAAO,KAAM,QAAS,OCA/B,OAAO,UAAU,mBAAqB,YAEpC,MAAA,MAAK,kBACE,mBAAmB,KAAM,ICRlC,OAAO,UAAU,aAAe,YAE9B,MAAA,MAAK,kBACE,aAAa,KAAM,ICE5B,OAAO,UAAU,cAAgB,YAE/B,MAAA,MAAK,kBACE,cAAc,KAAM,ICR7B,OAAO,UAAU,QAAU,YACzB,MAAA,MAAK,kBACE,QAAQ,KAAM,ICAvB,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCFf,OAAO,UAAU,SAAW,WAC1B,MAAA,MAAK,kBACE,UAAS,OCFlB,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCFf,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,OAAM,OCJf,OAAO,UAAU,UAAY,gBAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,QCEzB,OAAO,UAAU,gBAAkB,YAEjC,MAAA,MAAK,kBACE,gBAAgB,KAAM,ICR/B,OAAO,UAAU,UAAY,YAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,ICDzB,OAAO,UAAU,WAAa,YAE5B,MAAA,MAAK,kBACE,WAAW,KAAM,ICL1B,OAAO,UAAU,KAAO,YACtB,MAAA,MAAK,kBACE,KAAK,KAAM,ICDpB,OAAO,UAAU,2BAA6B,sCAE5C,MAAA,MAAK,kBACE,2BAA2B,KAAM,YAAa,KAAM,MAAO,OCFpE,OAAO,UAAU,WAAa,WAC5B,MAAA,MAAK,kBACE,WAAW,OCFpB,OAAO,UAAU,WAAa,eAE5B,MAAA,MAAK,kBACE,WAAW,KAAM,OCJ1B,OAAO,UAAU,UAAY,wBAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,KAAM,WCF/B,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCFb,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCJf,OAAO,UAAU,WAAa,YAE5B,MAAA,MAAK,kBACE,WAAW,KAAM,ICH1B,OAAO,UAAU,WAAa,WAC5B,MAAA,MAAK,kBACE,WAAW,OCFpB,OAAO,UAAU,UAAY,YAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,ICHzB,OAAO,UAAU,WAAa,YAE5B,MAAA,MAAK,kBACE,WAAW,KAAM,ICD1B,OAAO,UAAU,OAAS,kCAGxB,MAAA,MAAK,kBACE,OAAO,KAAM,EAAG,WAAY,aCHrC,OAAO,UAAU,QAAU,mDAIzB,MAAA,MAAK,kBACE,QAAQ,KAAM,WAAY,QAAS,MAAK,kBCPjD,OAAO,UAAU,IAAM,wBAErB,MAAA,MAAK,kBACE,IAAI,KAAM,KAAM,WCCzB,OAAO,UAAU,cAAgB,YAE/B,MAAA,MAAK,kBACE,cAAc,KAAM,ICR7B,OAAO,UAAU,QAAU,YACzB,MAAA,MAAK,kBACE,QAAQ,KAAM,ICFvB,OAAO,UAAU,KAAO,wBAEtB,MAAA,MAAK,kBACE,KAAK,KAAM,KAAM,WCF1B,OAAO,UAAU,IAAM,wBAErB,MAAA,MAAK,kBACE,IAAI,KAAM,KAAM,WCCzB,OAAO,UAAU,cAAgB,YAE/B,MAAA,MAAK,kBACE,cAAc,KAAM,ICR7B,OAAO,UAAU,QAAU,YACzB,MAAA,MAAK,kBACE,QAAQ,KAAM,ICAvB,OAAO,UAAU,UAAY,wBAG3B,MAAA,MAAK,kBACE,UAAU,KAAM,SAAU,OCDnC,OAAO,UAAU,UAAY,YAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,ICRzB,OAAO,UAAU,IAAM,YACrB,MAAA,MAAK,kBACE,IAAI,KAAM,ICGnB,OAAO,UAAU,UAAY,YAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,ICRzB,OAAO,UAAU,IAAM,YACrB,MAAA,MAAK,kBACE,IAAI,KAAM,ICAnB,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCAb,OAAO,UAAU,KAAO,4BAGtB,MAAA,MAAK,kBACE,KAAK,KAAM,IAAK,KAAM,WCH/B,OAAO,UAAU,eAAiB,YAEhC,MAAA,MAAK,kBACE,eAAe,KAAM,ICR9B,OAAO,UAAU,SAAW,YAE1B,MAAA,MAAK,kBACE,SAAS,KAAM,ICFxB,OAAO,UAAU,OAAS,uBACG,WAAc,GACzC,MAAA,MAAK,kBACE,OAAO,KAAM,MAAO,QAAS,WCFtC,OAAO,UAAU,SAAW,WAC1B,MAAA,MAAK,kBACE,SAAS,OCFlB,OAAO,UAAU,IAAM,iCAErB,MAAA,MAAK,kBACE,IAAI,KAAM,SAAU,gBCF7B,OAAO,UAAU,KAAO,gEAItB,MAAA,MAAK,kBACE,KAAK,KAAM,YAAa,YAAa,SAAS,aAAc,UCHrE,OAAO,UAAU,UAAY,gBAC3B,MAAA,MAAK,kBACE,UAAU,KAAM,QCPzB,OAAO,UAAU,IAAM,gBACrB,MAAA,MAAK,kBACE,IAAI,KAAM,QCFnB,OAAO,UAAU,MAAQ,gBAEvB,MAAA,MAAK,kBACE,MAAM,KAAM,QCFrB,OAAO,UAAU,KAAO,wBAEtB,MAAA,MAAK,kBACE,KAAK,KAAM,KAAM,WCF1B,OAAO,UAAU,WAAa,WAC5B,MAAA,MAAK,kBACE,WAAW,OCJpB,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCMf,OAAO,UAAU,UAAY,YAC3B,MAAA,MAAK,kBACE,QAAQ,KAAM,EAAE,QCVzB,OAAO,UAAU,QAAU,gBACzB,MAAA,MAAK,kBACE,QAAQ,KAAM,QCAvB,OAAO,UAAU,eAAiB,mDAGhC,MAAA,MAAK,kBACE,eAAe,KAAM,WAAY,aAAc,mBCJxD,OAAO,UAAU,sBAAwB,mDAGvC,MAAA,MAAK,kBACE,sBACH,KAAM,WAAY,aAAc,mBCPtC,OAAO,UAAU,QAAU,eAEzB,MAAA,MAAK,kBACE,QAAQ,KAAM,OCDvB,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,OAAM,OCFf,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCJf,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCEd,OAAO,UAAU,gBAAkB,4EAKjC,MAAA,MAAK,kBACE,gBACI,KAAM,gBAAiB,gBAAiB,QAAS,MAAK,SACtD,aCVb,OAAO,UAAU,QAAU,WACzB,MAAA,MAAK,kBACE,QAAQ,OCFjB,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCFb,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCDd,OAAO,UAAU,MAAQ,qBAEvB,MAAA,MAAK,kBACE,MAAM,KAAM,MAAO,OCJ5B,OAAO,UAAU,QAAU,cACzB,MAAA,MAAK,kBACE,QAAQ,KAAM,MCFvB,OAAO,UAAU,SAAW,WAC1B,MAAA,MAAK,kBACE,SAAS,OCHlB,OAAO,UAAU,eAAiB,8BAEhC,MAAA,MAAK,kBACE,eAAe,KAAM,WAAY,WCH1C,OAAO,UAAU,MAAQ,+BAEvB,MAAA,MAAK,kBACE,MAAM,KAAM,gBAAiB,OCFtC,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,OAAS,WACxB,MAAA,MAAK,kBACE,OAAO,OCHhB,OAAO,UAAU,kBAAoB,YAEnC,MAAA,MAAK,kBACE,kBAAkB,KAAM,ICCjC,OAAO,UAAU,wBAA0B,YAEzC,MAAA,MAAK,kBACE,wBAAwB,KAAM,ICRvC,OAAO,UAAU,QAAU,eACzB,MAAA,MAAK,kBACE,QAAQ,KAAM,OCFvB,OAAO,UAAU,MAAQ,iBAEvB,KAAK,kBACL,uBAA2B,YAAa,QAAS,CAAC,KAAM,GAAK,CAAC,KAAM,GAAG,GACvE,MAAO,OAAM,mBAAoB,OCFnC,OAAO,UAAU,KAAO,gBACtB,MAAA,MAAK,kBACE,KAAK,KAAM,QCCpB,OAAO,UAAU,aAAe,sFAI9B,MAAA,MAAK,kBACE,aACI,KAAM,MAAO,IAAK,QAAS,UAAW,QAAS,aAC/C,YAAa,iBCP1B,OAAO,UAAU,UAAY,YAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,ICRzB,OAAO,UAAU,IAAM,YACrB,MAAA,MAAK,kBACE,IAAI,KAAM,ICFnB,OAAO,UAAU,IAAM,wBAErB,MAAA,MAAK,kBACE,KAAI,KAAM,KAAM,WCDzB,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCFb,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,MAAK,OCHd,OAAO,UAAU,KAAO,eACtB,MAAA,MAAK,kBACE,KAAK,KAAM,OCGpB,OAAO,UAAU,OAAS,WACxB,MAAA,MAAK,kBACE,KAAQ,KAAM,SCFvB,OAAO,UAAU,QAAU,WACzB,MAAA,MAAK,kBACE,KAAQ,KAAM,YCFvB,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,KAAQ,KAAM,UCNvB,OAAO,UAAU,KAAO,mBAEtB,MAAA,MAAK,kBACE,KAAK,KAAM,EAAG,SCJvB,OAAO,UAAU,UAAY,eAE3B,MAAA,MAAK,kBACE,UAAU,KAAM,OCHzB,OAAO,UAAU,OAAS,eAExB,MAAA,MAAK,kBACE,OAAO,KAAM,OCFtB,OAAO,UAAU,mBAAqB,iCAEpC,MAAA,MAAK,kBACE,mBAAmB,KAAM,WAAY,cCL9C,OAAO,UAAU,QAAU,eACzB,MAAA,MAAK,kBACE,QAAQ,KAAM,OCAvB,OAAO,UAAU,MAAQ,sBAEvB,MAAA,MAAK,kBACE,MAAM,UAAW,KAAM,ICHhC,OAAO,UAAU,UAAY,WAC3B,MAAA,MAAK,kBACE,UAAU,OG9BnB,gCAAA,GAAA,UAAA,4BAAA,CAAA,QAAA,IAAA,QAAA,WAAA,IAAA,WAAA,OAAA,IAAA,OAAA,SAAA,IAAA,WCaA,aAKM,mBACJ,MAAI,WAAY,MACd,UAAW,WAAU,WAEhB,SCcH,2BACJ,MAAO,eCrCT,mBAAA,aAuBoC,OAClC,qBACE,MAAM,SAEN,OAAO,eAAe,KAAM,eAAe,0BA3B/C,aAkCkC,OAChC,qBACE,MAAM,SAEN,OAAO,eAAe,KAAM,aAAa,wBAtC7C,aA6CgC,OAC9B,qBACE,MAAM,SAEN,OAAO,eAAe,KAAM,WAAW,iCAjD3C,aAwDyC,OACvC,qBACE,MAAM,SAEN,OAAO,eAAe,KAAM,oBAAoB,4BA5DpD,aAmEoC,OAClC,qBACE,MAAM,SAEN,OAAO,eAAe,KAAM,eAAe,wBAvE/C,aA8EgC,OAC9B,qBACE,MAAM,SAEN,OAAO,eAAe,KAAM,WAAW,aC3DrC,uCACJ,GAAI,MAAM,QAAQ,QAEhB,aAAsB,GACtB,UAAa,EAAG,EAAI,UAAW,IAC7B,SAAW,SAAS,OAAO,OAE7B,MAAO,eAEP,aAAiB,GAAI,OAAM,WAC3B,MAAA,UAAS,KAAK,OACP,UAIL,8BACJ,GAAI,CAAC,IACH,KAAM,IAAI,gBAAe,SAOvB,gCACJ,YAAc,EACd,eAAmB,QACb,OAAS,UACX,UAGJ,MAAO,SAQH,8BACJ,MAAI,IAAG,SAAW,EACT,GAAG,GAEL,GAYH,mBACJ,MAAI,OAAM,QAAQ,GACT,EAEF,CAAC,GC0BJ,2BACJ,iBAAqB,KAAK,QAAQ,uBAAwB,kBAEtD,aAAa,QAAQ,kBAAmB,SAAS,cAKrD,MAAI,UAAS,KAAO,IACX,SAEF,UAAY,SAGf,iCAEJ,MAAI,YAAW,QAAU,GAIrB,WAAW,QAAQ,OAAS,GAHvB,WAMF,WAAW,QAAQ,cAAe,QAAW,GAAG,eAIzD,2BAA6B,GAEvB,wCAEJ,GAAI,UAAa,KACf,MAAO,MAET,SAA4C,GAC5C,MAAA,MAAK,UAAe,SAAS,eAC7B,KAAK,OAAY,SAAS,YACnB,KAcT,gDAEE,GAAI,SAAU,MAAQ,MAAO,UAAW,SACtC,OACK,GAAI,MAAM,QAAQ,SACvB,QAAO,QAAQ,YAAc,8BAA8B,kBAE3D,WAAe,OAAO,KAAK,SAC3B,gBAAoB,SAClB,UAAc,QAAO,OACjB,OAAS,MAAQ,MAAO,QAAU,UAChC,EAAC,MAAM,QAAQ,QAAU,MAAM,OAAY,WAC3C,MAAO,OAAM,OAAa,SAC5B,QAAO,OAAS,MAAM,MAEtB,8BAA8B,UAoBlC,yDAEc,iBACA,uBACM,wBAA2B,IAEnD,GAAI,MAAO,aAAe,UACxB,iBAAqB,cAErB,GAAI,eAAgB,eAClB,GAAK,cAAc,sBACV,eAAgB,wBACzB,GAAK,uBAAuB,sBAE5B,GAAK,cAAc,cACf,IAAM,KACR,KAAM,IAAI,YACN,WAAW,wBAAwB;SAEzB;gBAGO,uHAMzB,MAAO,SAGP,YAAe,WACf,GAAI,QAAO,WAAgB,MAAQ,QAAO,QAAa,KACrD,KAAM,IAAI,YACN,GAAG,gDACA,KAAK,UAAU;qCAGxB,cAAkB,QAAO,yBASzB,GAPI,YAAa,eACf,CAAC,IAAK,YAAc,cAAc,WACzB,YAAa,wBACtB,CAAC,IAAK,YAAc,uBAAuB,UAClC,YAAa,gBACtB,EAAC,IAAK,YAAc,cAAc,YAEhC,KAAO,KACT,KAAM,IAAI,YACN,WAAW,wBAAwB;SAEzB;gBAGO,uHAKvB,GAAI,YAAc,MAOhB,0BAA8B,GAC9B,cAAkB,QAAO,KAAK,wBAC5B,sBAAsB,KAAO,uBAAuB,KAEtD,cAAkB,QAAO,KAAK,eAC5B,sBAAsB,KAAO,cAAc,KAG7C,iBAAqB,QAAO,OAC5B,aAAa,cAAmB,sBAEhC,wBAAyB,OAAA,OAAA,GAAO,wBAChC,cAAkB,QAAO,KAAK,eAC5B,uBAAuB,KAAO,cAAc,KAE9C,8BAA8B,QAAO,QACrC,cACI,WAAW,IAAK,QAAO,OAAW,cAAe,gBACrD,MAAA,wBAAsB,OAAA,OAAA,GAAO,qBAEtB,eAKP,wBAAyB,OAAA,OAAA,GAAO,wBAChC,cAAkB,QAAO,KAAK,eAC5B,uBAAuB,KAAO,cAAc,KAK9C,cAAkB,GAAI,KAAI,QAAO,QACjC,MAAA,wBAAsB,OAAA,OAAA,GAAO,qBACtB,YAUP,4BACJ,MAAQ,GAAI,EAAK,GAAO,EAAI,EAAK,EAAI,EAQjC,mCACJ,MAAO,GAAK,cAAc,EAAG,GC2CzB,qBACJ,GAAI,IAAM,KACR,MAAO,IAET,QAAiB,GAEjB,YAAgB,IACV,IAAI,QAAQ,KAAO,IACrB,IAAI,KAAK,GAGb,MAAO,KASH,4BACJ,GAAI,KAAO,KACT,KAAM,IAAI,YAAW,yBAAyB,KAAK,UAAU,QAE/D,cAAkB,KAChB,GAAI,IAAI,eAAe,KACrB,MAAO,GAGX,MAAO,GAUH,uDAEJ,GAAI,OAAS,KACX,OAEF,GAAI,OAAO,QAAQ,OAAS,EAC1B,KAAM,IAAI,YAAW,GAAG,wBAAwB,4BAC5C,6BAmBF,0DACwC,YAC9B,UACd,MAAA,SAAO,WAAa,GACpB,QAAO,WAAa,WAEhB,MAAM,QAAQ,IAAM,EAAE,QAAU,WAAa,EAAE,QAAU,WACzD,EAAE,MAAM,GAAK,MAAO,KAAM,cAW1B,2CACA,MAAM,QAAQ,OAChB,cAAK,OACD,MAAM,OAAS,EAAG,IAAM,GAAG,wCAC/B,MAAM,QACF,OAAU,sBAAsB,EAAG,WAAW,EAAI,QAAQ,UAE9D,aAAK,OACD,OAAO,UAAU,QAAU,MAAQ,EACnC,IAAM,YAAY,0CACX,uBAAuB,WAehC,uCACJ,MAAI,SAAU,KACL,OACE,MAAM,QAAQ,OAChB,IAAM,MAAM,IAAI,GAAK,uBAAuB,IAAI,KAAK,KAAO,IAC1D,MAAO,QAAU,SACnB,IAAI,SAEJ,GAAG,QAaR,4BAEJ,aAAe,aAAK,oBAET,YACT,SAAY,aAAK,MACjB,MAAI,MAAM,SAAW,QAGrB,UAAW,KACX,WAAa,EAAE,GAAG,OACX,YAET,MAAO,IASH,oDAEJ,MAAI,kBAAmB,OACd,OAEL,iBAAmB,SACd,SAEL,iBAAmB,MACd,MAEF,KCnfT,6BACE,MAAO,MAAK,IAAU,KAAS,KAAQ,IAAI,EAAG,GAAI,KAAM,MArB1D,eAAA,aAiCyC,uBAAc,aAGrD,YACE,MAAO,aArCX,aA+D6B,YAQ3B,kBACE,QAJe,KAAA,gBAAkB,EAClB,KAAA,YAAc,EAI7B,KAAK,SACD,KAAK,UAAY,KAAO,KAAK,SAAW,KAAK,gBACjD,KAAK,KAAO,KAAK,MAAQ,KAAO,KAAK,KAAO,KAAK,YAGnD,SACE,MAAO,MAAK,KACV,UAAc,YAAY,EAAG,KAAK,cACd,YAAY,MAAO,EAAG,KAAK,UAC/C,MAAW,KAAI,EAAO,IAAI,QAAa,KAAI,UAAW,WAI1D,YACE,MAAO,CAAC,SAAU,KAAK,SAAU,KAAM,KAAK,QAtB9B,QAAA,UAAY,UAyB9B,sBAAc,cAAc,SA1F5B,aAAA,aA8G8B,YAK5B,kBACE,QAFe,KAAA,YAAc,EAG7B,KAAK,KAAO,KAAK,MAAQ,KAAO,KAAK,KAAO,KAAK,YAGnD,SACE,MAAO,MACH,IAAU,IAAI,EAAO,KAAI,UAAW,YAAY,EAAG,KAAK,SAG9D,YACE,MAAO,CAAC,KAAM,KAAK,QAdL,SAAA,UAAY,WAiB9B,sBAAc,cAAc,UAjI5B,WAAA,aAmI4B,YAI1B,SACE,MAAW,MAAK,KAHF,OAAA,UAAY,SAM9B,sBAAc,cAAc,QA3I5B,eAAA,aA+KgC,YAY9B,kBACE,QANe,KAAA,gBAAkB,EAClB,KAAA,gBAAkB,EAClB,KAAA,YAAc,EACd,KAAA,YAAc,EAI7B,KAAK,SACD,KAAK,UAAY,KAAO,KAAK,SAAW,KAAK,gBACjD,KAAK,SACD,KAAK,UAAY,KAAO,KAAK,SAAW,KAAK,gBACjD,KAAK,KAAO,KAAK,MAAQ,KAAO,KAAK,KAAO,KAAK,YACjD,KAAK,KAAO,KAAK,MAAQ,KAAO,KAAK,KAAO,KAAK,YAGnD,SACE,MAAO,MAAK,KACV,UAAc,YAAY,EAAG,KAAK,cACd,KACZ,IACA,KAAK,KAAU,YAAY,MAAO,KAAK,SAAU,KAAK,WACtD,IAAI,EAAM,KAAK,KAAM,QAC7B,MAAW,KAAI,EAAO,IAAI,QAAa,KAAI,UAAW,WAI1D,YACE,MAAO,CACL,SAAU,KAAK,SACf,SAAU,KAAK,SACf,KAAM,KAAK,KACX,KAAM,KAAK,QApCC,WAAA,UAAY,aAwC9B,sBAAc,cAAc,YAQrB,8CAC8C,CAC/C,QAAW,UACX,WAAc,aACd,OAAU,SACV,SAAY,YAGZ,yCAEJ,MAAO,sBAAqB,YAGxB,qDAEwC,IAC5C,MAAO,wBACH,QAAQ,sBAAc,iBAAiB,SAAS,aAChD,cAAe,cAGf,mCAEJ,GAAI,YAAc,KAChB,MAAO,MAET,GAAI,MAAO,aAAe,UACxB,cAAkB,aAAc,2CAC5B,0CAA0C,YAC1C,mBACW,CAAC,UAAW,OAAQ,IACnC,MAAO,uBAAsB,aACxB,OAAI,sBAAsB,YACxB,WAEA,sBAAsB,YC3O3B,uBACJ,MAAO,IAAI,SAAQ,MAQf,wBACJ,MAAO,IAAI,UAAS,MAQhB,kBACJ,MAAO,IAAI,QAIP,6BACJ,MAAO,IAAI,YAAW,SCjDxB,iCAAA,GAAA,UAAA,6BAAA,CAAA,SAAA,IAAA,SAAA,aAAA,IAAA,aAAA,cAAA,IAAA,cAAA,SAAA,IAAA,SAAA,UAAA,IAAA,UAAA,SAAA,IAAA,SAAA,YAAA,IAAA,YAAA,aAAA,IAAA,aAAA,KAAA,IAAA,MAAA,WAAA,IAAA,WAAA,aAAA,IAAA,cAAA,cAAA,IAAA,eAAA,gBAAA,IAAA,iBAAA,gBAAA,IAAA,gBAAA,MAAA,IAAA,SCqBO,6BAAiC,CAAC,gBAAiB,kDAGT,CAAC,UAAW,sCAMpB,CAAC,QAAS,OAAQ,iCAIrB,CAAC,MAAO,uCAIC,CAAC,MAAO,MAAO,SAAU,eCnBnC,GAAI,KAEnC,gCACJ,0BAA0B,yBAA0B,aAAc,OAG9D,yCACJ,0BACI,kCAAmC,sBAAuB,OAG1D,iCACJ,0BAA0B,0BAA2B,cAAe,OAGhE,8BACJ,0BAA0B,uBAAwB,WAAY,OAGhE,oBAAkC,qBACR,IAKpB,4BACJ,gBAAgB,KAAK,MACrB,IACE,QAAe,KACf,MAAA,iBAAgB,MACT,aAEP,KAAA,iBAAgB,MACV,GAOV,kCACE,MAAI,iBAAgB,SAAW,EACtB,GAEA,gBAAgB,KAAK,mBAAqB,kBAS/C,yCACJ,GAAI,CAAC,kBAAkB,YACrB,KAAM,IAAI,OAAM,6BAAgC,WAAa,KAE/D,MAAO,0BAA2B,WAa9B,yCACJ,GAAI,CAAC,kBAAkB,YACrB,KAAM,IAAI,OAAM,6BAAgC,WAAa,KAE1D,QAAQ,IAAI,aACf,QAAQ,IAAI,WAAY,GAE1B,UAAc,QAAQ,IAAI,YAG1B,GAFA,QAAQ,IAAI,WAAY,QAAQ,IAAI,YAAc,GAE9C,MAAQ,GACV,WAAe,GAAG,cAAc,QAGhC,MAAA,SAAQ,IAAI,OAAQ,GACb,WAEP,OAAO,YAIX,oBAAwB,GAAI,QAAO,mCAO7B,iCACJ,MAAO,CAAC,CAAC,KAAK,MAAM,iBCxFhB,sBACJ,MAAO,KAAM,SAAS,EAAE,WAAY,IAUhC,qCAEA,OAAS,MACX,OAAQ,GAEN,KAAO,MACT,KAAM,OAAM,QAGd,UAAW,EACX,UAAa,MAAO,EAAI,IAAK,EAAE,EAC7B,OAAQ,OAAM,GAEhB,MAAO,OAQT,2BACE,MAAA,QAAQ,MAAM,QAAQ,QAAS,GAAI,cAAa,QAAS,OAClD,SAAS,QAQZ,sBACJ,MAAW,KAAI,UAAU,SAAQ,WAAW,GAQxC,sBACJ,MAAW,KAAI,UAAU,SAAQ,WAAW,GCsDxC,2BACJ,GAAI,IAAM,MACR,KAAM,IAAI,YAAW,QAAQ,iBAAiB,wBAEhD,QAAsB,GACtB,UAAa,MAAO,EAAI,IAAK,EAAE,EAC7B,IAAI,KAAK,GAEX,MAAO,KExEH,yBACJ,MAAO,GAAE,OAAO,OASZ,4BAAuC,IAC3C,aAAiB,EAAE,MAAM,QACzB,MAAI,MAAO,GACT,MAAO,SAAS,OAAS,KAAO,GAElC,SAAS,OAAO,KAAM,EAAG,GAClB,EAAE,QAAQ,UAcb,qBACJ,MAAO,MAAK,KACV,GAAI,EAAE,MAAM,SAAW,EACrB,KAAM,IAAI,YACN,yDACQ,EAAE,MAAM,kBAEtB,MAAU,YAAW,EAAG,GACxB,MAAO,OAAK,EAAG,CAAC,EAAG,EAAG,MASpB,qBACJ,aAAiB,CAAY,UAAU,EAAE,QACzC,MAAO,GAAE,QAAQ,UAWb,yBACJ,GAAI,EAAE,MAAQ,EACZ,KAAM,IAAI,YACN,wDAAwD,EAAE,SAEhE,aAAiB,CAAC,EAAE,MAAM,GAAe,UAAU,EAAE,MAAO,IAC5D,MAAO,GAAE,QAAQ,UAWb,gDAEJ,MAAO,MAAK,KACV,OAAQ,OAAM,UACP,GACH,MAAW,SAAQ,OAAmB,MAAO,UAC1C,GACH,MAAW,SACP,OAAmB,CAAC,MAAO,GAAI,CAAC,KAAM,OAAM,MAAM,SACnD,GACH,MAAW,SACP,OAAmB,CAAC,MAAO,EAAG,GAC9B,CAAC,KAAM,OAAM,MAAM,GAAI,OAAM,MAAM,SACpC,GACH,MAAW,SACP,OAAmB,CAAC,MAAO,EAAG,EAAG,GACjC,CAAC,KAAM,OAAM,MAAM,GAAI,OAAM,MAAM,GAAI,OAAM,MAAM,SACpD,GACH,MAAW,OAAM,OAAmB,CAAC,MAAO,EAAG,EAAG,EAAG,GAAI,CACvD,KAAM,OAAM,MAAM,GAAI,OAAM,MAAM,GAAI,OAAM,MAAM,GAAI,OAAM,MAAM,SAEjE,GACH,MAAW,OAAM,OAAO,CAAC,MAAO,EAAG,EAAG,EAAG,EAAG,GAAI,CAC9C,KAAM,OAAM,MAAM,GAAI,OAAM,MAAM,GAAI,OAAM,MAAM,GAAI,OAAM,MAAM,GAClE,OAAM,MAAM,aAGd,KAAM,IAAI,YACN,8DACG,OAAM,WAaf,+CAEJ,MAAO,MAAK,KACV,OAAQ,OAAM,UACP,GACH,MAAW,SAAQ,OAAmB,MAAO,UAC1C,GACH,MAAW,SACP,OAAmB,CAAC,EAAG,OAAQ,CAAC,OAAM,MAAM,GAAI,WACjD,GACH,MAAW,SACP,OAAmB,CAAC,EAAG,EAAG,OAC1B,CAAC,OAAM,MAAM,GAAI,OAAM,MAAM,GAAI,WAClC,GACH,MAAW,SACP,OAAmB,CAAC,EAAG,EAAG,EAAG,OAC7B,CAAC,OAAM,MAAM,GAAI,OAAM,MAAM,GAAI,OAAM,MAAM,GAAI,eAErD,KAAM,IAAI,YACN,6DACG,OAAM,WAcf,gDAEJ,MAAO,MAAK,KACV,OAAQ,OAAM,UACP,GACH,MAAW,SAAQ,OAAmB,MAAO,UAC1C,GACH,OAAQ,UACD,GACH,MAAO,qBAAoB,OAAO,MAAO,UACtC,GACH,MAAO,oBAAmB,OAAO,MAAO,cAExC,KAAM,IAAI,YACN,iDACG,YAER,GACH,OAAQ,UACD,GACH,MAAO,qBAAoB,OAAO,MAAO,UACtC,GACH,MAAW,SACP,OAAmB,CAAC,EAAG,MAAO,GAC9B,CAAC,OAAM,MAAM,GAAI,KAAM,OAAM,MAAM,SACpC,GACH,MAAO,oBAAmB,OAAO,MAAO,cAExC,KAAM,IAAI,YACN,iDACG,YAER,GACH,OAAQ,UACD,GACH,MAAO,qBAAoB,OAAO,MAAO,UACtC,GACH,MAAW,SACP,OAAmB,CAAC,EAAG,MAAO,EAAG,GACjC,CAAC,OAAM,MAAM,GAAI,KAAM,OAAM,MAAM,GAAI,OAAM,MAAM,SACpD,GACH,MAAW,SACP,OAAmB,CAAC,EAAG,EAAG,MAAO,GACjC,CAAC,OAAM,MAAM,GAAI,OAAM,MAAM,GAAI,KAAM,OAAM,MAAM,SACpD,GACH,MAAO,oBAAmB,OAAO,MAAO,cAExC,KAAM,IAAI,YACN,iDACG,gBAGX,KAAM,IAAI,YACN,6DACG,OAAM,WAWf,kCAAgD,IACpD,SACA,MAAI,MAAO,GACT,MAAO,QAAQ,GAAG,KACd,OAAS,EACX,KAAO,KAEP,KAAO,GAGP,OAAS,QAAQ,GAAG,MAGtB,MAAO,IAGE,OAAO,QAAS,MAUvB,mCACJ,OAAQ,EAAE,UACH,GACH,MAAW,UAAS,CAAC,EAAe,QACjC,GACH,MAAW,UAAS,CAAC,EAAe,GAAgB,OACjD,GACH,MAAW,UAAS,CAAC,EAAe,GAAgB,OACjD,GACH,MAAW,UAAS,CAAC,EAAe,GAAgB,WAEpD,KAAM,IAAI,YACN,+DACgB,EAAE,SAWtB,oBAIJ,GAHK,MAAM,QAAQ,IACjB,GAAI,CAAC,IAEH,EAAE,OAAS,EAAE,OACf,KAAM,IAAI,YACN,0BAA0B,EAAE,+DACY,EAAE,SAEhD,MAAW,MAAK,EAAG,GAef,mCACmB,SAAc,cAErC,MAAW,cAAa,MAAO,MAAM,OAAQ,MAAO,MAqBhD,oCAGJ,GAAK,EAAE,KAAO,GAAO,EAAE,KAAO,EAC5B,KAAM,IAAI,qBACN,8DACsB,EAAE,uBAAuB,EAAE,SAEvD,GAAI,EAAE,MAAQ,GACZ,aAAiB,EAAE,MAAM,MAAM,IAAI,kBACZ,EAAE,MAAM,MAAM,IAAI,GACzC,GAAI,WAAa,eACf,KAAM,IAAI,qBACN,gGAEI,EAAE,wBACQ,EAAE,SAIxB,GAAK,EAAE,OAAS,GAAO,EAAE,OAAS,GAChC,eAAmB,cACA,GAInB,MAAW,mBAAM,OAAO,CACtB,EACA,EACA,WACA,WACA,KAAM,KAAO,YAAY,EAAE,KAAM,KAAM,mBAAqB,KAC5D,WAAA,mBAIF,eAAmB,EAAE,MAAM,iBACV,WAAW,MAC5B,EAAI,EAAE,QAAQ,CAAC,GAAI,WAInB,WAAe,EAAE,MAAM,iBACN,OAAO,qBACD,OAAO,iBACX,CAAC,GAAG,OAAQ,eAGlB,MAAM,KAAK,CAAC,OAAQ,EAAE,MAAO,OACpC,IAAM,EACD,EAAE,KAAO,EACP,GAAK,EAAE,KAAO,EAChB,EAAI,EAEN,GAET,EAAI,EAAE,UAAU,MAAM,QAAQ,CAAC,eAAgB,KAG/C,gBAAoB,CAAC,GAAG,WAAY,GAAG,uBACpB,cACA,GACnB,MAAW,mBACN,OAAO,CACN,EACA,EACA,WACA,WACA,KAAM,KAAO,YAAY,EAAE,KAAM,KAAM,mBAAqB,KAC5D,WAAA,cAED,QAAQ,cCwDX,yCAEJ,MAAO,MAAK,IACN,OAAM,QAAQ,SAChB,QAAU,SAAS,QAAS,SAE5B,QAAU,QAAQ,QAET,OAAO,UAAW,QAAS,QASpC,qBACJ,MAAW,KAAI,EAAG,GC+BpB,4CACE,cAAkB,KAAK,MAEvB,GAAI,KAAK,OAAS,GAAK,KAAK,OAAS,MACnC,KAAM,IAAI,YACN,+BAA+B,KAAK,gCACR,SAGlC,GAAI,QAAU,GACZ,GAAI,aAAe,gBACjB,MAAI,WAAU,SAAW,EAChB,KAAK,QAAQ,CAAC,EAAG,UAAU,GAAI,EAAG,EAAG,IAErC,KAAK,QACR,CAAC,EAAG,UAAU,GAAI,UAAU,GAAI,UAAU,GAAI,UAAU,KAEzD,GAAI,aAAe,eACxB,MAAI,WAAU,SAAW,EAChB,KAAK,QAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,UAAU,KAEpC,KAAK,QAAQ,CAAC,GAAG,OAAO,oBAG1B,QAAU,GACnB,GAAI,aAAe,gBACjB,MAAI,WAAU,SAAW,EAChB,KAAK,QAAQ,CAAC,EAAG,UAAU,GAAI,EAAG,IAElC,KAAK,QAAQ,CAAC,EAAG,UAAU,GAAI,UAAU,GAAI,UAAU,KAE3D,GAAI,aAAe,eACxB,MAAI,WAAU,SAAW,EAChB,KAAK,QAAQ,CAAC,EAAG,EAAG,EAAG,UAAU,KAEjC,KAAK,QAAQ,CAAC,GAAG,OAAO,oBAG1B,QAAU,GACnB,GAAI,aAAe,gBACjB,MAAI,WAAU,SAAW,EAChB,KAAK,QAAQ,CAAC,EAAG,UAAU,GAAI,IAE/B,KAAK,QAAQ,CAAC,EAAG,UAAU,GAAI,UAAU,KAE7C,GAAI,aAAe,eACxB,MAAI,WAAU,SAAW,EAChB,KAAK,QAAQ,CAAC,EAAG,EAAG,UAAU,KAE9B,KAAK,QAAQ,CAAC,GAAG,OAAO,oBAG1B,MAAQ,EACjB,MAAO,MAET,KAAM,IAAI,YAAW,sCAAsC,KAAK,QAa5D,oCAEJ,MAAO,MAAK,IACN,aAAc,MAChB,YAAa,mBAEf,gBAAgB,YAET,EAAE,IAAI,YAAY,EAAE,KAAM,KAAM,eAUrC,sBAAiC,GAErC,GAAI,QAAU,EACZ,KAAM,IAAI,qBACN,0CAA0C,kCAGhD,MAAW,KAAI,GAWX,qBACJ,MAAO,MAAK,IAAU,IAAI,EAAO,IAAI,GAAG,IAAI,KAaxC,2CAEJ,MAAO,MAAK,IAAU,QAAQ,EAAG,MAAO,WAAY,OAYhD,wBACJ,MAAO,MAAK,KACV,MAAc,KAAI,GAAQ,IAAI,GAAI,IAClC,MAAW,aAAY,EAAG,EAAG,KAiB3B,sCAA+D,IACnE,MAAO,WAAW,IAAM,MC7rBnB,0BAA8B,CAAC,QAAS,SAAU,oCAQrD,CAAC,SAAU,UAAW,mBCJpB,6BACJ,0BAA0B,sBAAuB,UAAW,OAGxD,kCACJ,0BAA0B,0BAA2B,eAAgB,OAzBvE,gBAAA,aAkC0C,uBAAc,aAC/C,8BACL,MAAO,GAUT,YACE,MAAO,WA/CX,aAmD2B,aAIzB,mBACE,MAAO,OAAM,MAAO,SAHf,MAAA,UAAY,QAMrB,sBAAc,cAAc,OA3D5B,SAAA,aA6D0B,aAIxB,mBACE,MAAO,OAAK,MAAO,SAHd,KAAA,UAAY,OAMrB,sBAAc,cAAc,MArE5B,aAAA,aA4E8B,aAI5B,kBACE,QACA,GAAI,MAAO,OAAS,SAClB,KAAM,IAAI,YACN,oDAAoD,QAE1D,GAAI,KAAK,QAAU,OACjB,KAAM,IAAI,YAAW,sCAAsC,QAE7D,KAAK,MAAQ,KAAK,MAGpB,mBACE,MAAO,MAAK,IAAM,IAAI,OAAO,KAAK,OAAQ,MAAK,MAAO,SAGxD,YACE,MAAO,CACL,MAAO,KAAK,SApBT,SAAA,UAAY,WAwBrB,sBAAc,cAAc,UAtG5B,kBAAA,aAiHmC,aASjC,kBACE,QAPO,KAAA,eAAiB,KACjB,KAAA,eAAiB,IAOxB,KAAK,OAAS,KAAK,QAAU,KAAK,eAClC,KAAK,OAAS,KAAK,QAAU,KAAK,eAClC,KAAK,KAAO,KAAK,KAGnB,mBACE,MAAO,eAAc,MAAO,KAAK,OAAQ,KAAK,OAAQ,OAGxD,YACE,MAAO,CAAC,OAAQ,KAAK,OAAQ,OAAQ,KAAK,OAAQ,KAAM,KAAK,QAnBxD,cAAA,UAAY,gBAsBrB,sBAAc,cAAc,eAzI5B,iBAAA,aAoJkC,aAShC,kBACE,QAPO,KAAA,aAAe,EACf,KAAA,eAAiB,IAOxB,KAAK,KAAO,KAAK,MAAQ,KAAK,aAC9B,KAAK,OAAS,KAAK,QAAU,KAAK,eAClC,KAAK,KAAO,KAAK,KAGnB,mBAEE,GADA,MAAQ,OAAS,UACb,QAAU,WAAa,QAAU,QACnC,KAAM,IAAI,qBACN,uCAAuC,UAG7C,MAAS,eAAa,MAAO,KAAK,KAAM,KAAK,OAAQ,MAAO,KAAK,MAGnE,YACE,MAAO,CAAC,KAAM,KAAK,KAAM,OAAQ,KAAK,OAAQ,KAAM,KAAK,QAzBpD,aAAA,UAAY,eA4BrB,sBAAc,cAAc,cAlL5B,oBAAA,aA6LqC,aAUnC,kBACE,QAPO,KAAA,aAAe,EACf,KAAA,eAAiB,IAOxB,KAAK,KAAO,KAAK,MAAQ,KAAK,aAC9B,KAAK,OAAS,KAAK,QAAU,KAAK,eAClC,KAAK,KAAO,KAAK,KAGnB,mBAEE,GADA,MAAQ,OAAS,UACb,QAAU,WAAa,QAAU,QACnC,KAAM,IAAI,qBACN,0CAA0C,UAEhD,MAAO,iBAAgB,MAAO,KAAK,KAAM,KAAK,OAAQ,MAAO,KAAK,MAGpE,YACE,MAAO,CAAC,KAAM,KAAK,KAAM,OAAQ,KAAK,OAAQ,KAAM,KAAK,QAzBpD,gBAAA,UAAY,kBA4BrB,sBAAc,cAAc,iBA3N5B,cAAA,aAoO8B,aAI5B,kBACE,QACA,KAAK,KAAO,KAAK,MAAQ,KAAO,KAAK,KAAO,EAG9C,mBACE,MAAO,MAAK,KACV,GAAI,MAAM,SAAW,GAAK,MAAM,KAAO,MAAM,GAC3C,KAAM,IAAI,YACN,wEAGJ,MAAO,KAAI,KAAK,KAAM,IAAI,MAAM,OAKtC,YACE,MAAO,CAAC,KAAM,KAAK,QApBd,UAAA,UAAY,WAuBrB,sBAAc,cAAc,WAU5B,sCAC2C,gBACzC,iBAGA,GADA,gBAAgB,YACZ,MAAM,SAAW,EACnB,MAAQ,MAAM,GACd,OAAS,MAAM,WACN,CAAC,EAAG,EAAG,GAAG,QAAQ,MAAM,UAAY,IAC7C,GAAI,aAAe,iBACjB,uBAA2B,UAAU,MAAO,GAC5C,MAAQ,MAAM,GAAK,mBACnB,OAAS,MAAM,GAAK,2BACX,aAAe,gBACxB,uBAA2B,UAAU,MAAO,EAAG,MAAM,OAAS,GAC9D,MAAQ,MAAM,MAAM,OAAS,GAAK,mBAClC,OAAS,MAAM,MAAM,OAAS,GAAK,yBAGrC,cAAkB,UAAU,OAC5B,MAAQ,KAAK,KAAK,WAClB,OAAS,KAAK,KAAK,WAGrB,MAAO,CAAC,MAAO,QA/RjB,oBAAA,aAgTqC,aAYnC,kBACE,QACA,GAAI,KAAK,MAAQ,EACf,KAAM,IAAI,YACN,wCAAwC,KAAK,SAEnD,KAAK,MAAQ,KAAK,OAAS,KAAO,EAAM,KAAK,MAC7C,KAAK,KAAO,KAAK,MAAQ,KAAO,QAAU,KAAK,KAC/C,aAAa,KAAK,MAClB,KAAK,aACD,KAAK,cAAgB,KAAO,SAAW,KAAK,aAChD,kBAAkB,KAAK,cACvB,KAAK,KAAO,KAAK,KAGnB,mBACE,SAAa,YAAY,aACX,KAAK,UACJ,KAAK,WACR,KAAK,MASjB,GARI,KAAK,OAAS,QAChB,SAAS,KAAK,IAAI,EAAG,OACZ,KAAK,OAAS,SACvB,SAAS,KAAK,IAAI,EAAG,QAErB,SAAS,KAAK,IAAI,EAAI,OAAQ,QAAU,GAGtC,KAAK,eAAiB,UACxB,WAAe,KAAK,KAAK,SAEzB,GADA,MAAQ,OAAS,UACb,QAAU,WAAa,QAAU,QACnC,KAAM,IAAI,qBACN,GAAG,KAAK,yCAAyC,UAEvD,MAAO,iBAAgB,MAAO,EAAG,OAAQ,MAAO,KAAK,WAErD,UAAc,KAAK,KAAK,EAAI,SAC5B,MAAO,eAAc,MAAO,CAAC,MAAO,MAAO,QAI/C,YACE,MAAO,CACL,MAAO,KAAK,MACZ,KAAM,KAAK,KACX,aAAc,KAAK,aACnB,KAAM,KAAK,QAzDR,gBAAA,UAAY,kBA6DrB,sBAAc,cAAc,iBA/W5B,kBAAA,aAsXmC,iBAWjC,kBACE,MAAM,CACJ,MAAO,EACP,KAAM,SACN,aAAc,UACd,KAAM,MAAQ,KAAO,KAAO,KAAK,OAIrC,eAIE,MAAO,iBAAgB,YAtBlB,cAAA,UAAY,gBAyBrB,sBAAc,cAAc,eAjZ5B,iBAAA,aAmZkC,iBAWhC,kBACE,MAAM,CACJ,MAAO,EACP,KAAM,SACN,aAAc,SACd,KAAM,MAAQ,KAAO,KAAO,KAAK,OAIrC,eAIE,MAAO,iBAAgB,YAtBlB,aAAA,UAAY,eAyBrB,sBAAc,cAAc,cA9a5B,aAAA,aAgb8B,iBAI5B,kBACE,MAAM,CACJ,MAAO,EACP,KAAM,QACN,aAAc,SACd,KAAM,MAAQ,KAAO,KAAO,KAAK,OAIrC,eAIE,MAAO,iBAAgB,YAflB,SAAA,UAAY,WAkBrB,sBAAc,cAAc,UApc5B,cAAA,aAsc+B,iBAI7B,kBACE,MAAM,CACJ,MAAO,EACP,KAAM,QACN,aAAc,UACd,KAAM,MAAQ,KAAO,KAAO,KAAK,OAIrC,eAIE,MAAO,iBAAgB,YAflB,UAAA,UAAY,YAkBrB,sBAAc,cAAc,WA1d5B,gBAAA,aA4diC,iBAI/B,kBACE,MAAM,CACJ,MAAO,EACP,KAAM,QACN,aAAc,SACd,KAAM,MAAQ,KAAO,KAAO,KAAK,OAIrC,eAIE,MAAO,iBAAgB,YAflB,YAAA,UAAY,cAkBrB,sBAAc,cAAc,aAhf5B,iBAAA,aAkfkC,iBAIhC,kBACE,MAAM,CACJ,MAAO,EACP,KAAM,QACN,aAAc,UACd,KAAM,MAAQ,KAAO,KAAO,KAAK,OAIrC,eAIE,MAAO,iBAAgB,YAflB,aAAA,UAAY,cAkBrB,sBAAc,cAAc,cAtgB5B,eAAA,aA+gBgC,aAO9B,kBACE,QAIA,GATO,KAAA,aAAe,EAMtB,KAAK,KAAO,KAAK,MAAQ,KAAO,KAAK,aAAe,KAAK,KACzD,KAAK,KAAO,KAAK,KAEb,KAAK,MAAQ,KACf,KAAM,IAAI,qBACN,kEAIR,mBACE,MAAO,MAAK,KACV,GAAI,MAAM,OAAS,EACjB,KAAM,IAAI,qBAAoB,8BAE5B,MAAM,GAAK,MAAM,GAAK,KACxB,QAAQ,KACJ,2EACc,MAAM,GAAK,MAAM,sCAKrC,oBACI,MAAM,GAAK,MAAM,GAAK,CAAC,MAAM,GAAI,MAAM,IAAM,QACrC,cAAa,gBAAiB,EAAG,EAAG,aACxC,OAAO,YAAY,GAC3B,MAAI,OAAM,GAAK,MAAM,IACnB,GAAI,EAAE,aAED,IAAI,KAAK,KAAM,KAI1B,YACE,MAAO,CACL,KAAM,KAAK,KACX,KAAM,KAAK,QA3CR,WAAA,UAAY,aA+CrB,sBAAc,cAAc,YAUrB,+CAC+C,CAChD,SAAY,WACZ,aAAgB,eAChB,cAAiB,gBACjB,SAAY,WACZ,UAAa,YACb,SAAY,WACZ,YAAe,cACf,aAAgB,eAChB,KAAQ,OACR,WAAc,aACd,aAAgB,eAChB,cAAiB,gBACjB,gBAAmB,kBACnB,gBAAmB,kBACnB,MAAS,SAGf,sDAE8C,IAC5C,MAAO,wBACH,QAAQ,sBAAc,iBAAiB,SAAS,aAChD,cAAe,eAGf,2CAEJ,MAAO,sBAAqB,aAGxB,oCAEJ,GAAI,MAAO,aAAe,UACxB,cAAkB,aAAc,4CAC5B,2CAA2C,YAC3C,WAIJ,GAAI,YAAc,eAChB,MAAO,IAAI,cACN,GAAI,YAAc,gBACvB,MAAO,IAAI,eACN,GAAI,YAAc,WACvB,MAAO,IAAI,UACN,GAAI,YAAc,YACvB,MAAO,IAAI,WACN,GAAI,YAAc,cACvB,MAAO,IAAI,aACN,GAAI,YAAc,eACvB,MAAO,IAAI,cACN,CACL,YAAyC,GACzC,MAAA,SAAO,UAAe,UACtB,QAAO,OAAY,GACZ,uBAAuB,cAE3B,OAAI,sBAAsB,aACxB,WAEA,uBAAuB,YCvnB5B,kBACJ,MAAO,IAAI,OAQP,iBACJ,MAAO,IAAI,MAQP,wBACJ,MAAO,IAAI,UAAS,MAYhB,8BACJ,MAAO,IAAI,eAAc,MASrB,6BACJ,MAAO,IAAI,cAAa,MAapB,gCACJ,MAAO,IAAI,iBAAgB,MASvB,wBACJ,MAAO,IAAI,WAAS,MAgBhB,kCACJ,MAAO,IAAI,iBAAgB,SAgBvB,6BACJ,MAAO,IAAI,eAAc,MAgBrB,4BACJ,MAAO,IAAI,cAAa,MAepB,wBACJ,MAAO,IAAI,UAAS,MAehB,yBACJ,MAAO,IAAI,WAAU,MAgBjB,2BACJ,MAAO,IAAI,aAAY,MAYnB,4BACJ,MAAO,IAAI,cAAa,MAWpB,0BACJ,MAAO,IAAI,YAAW,MChNxB,2BAAA,GAAA,UAAA,uBAAA,CAAA,MAAA,IAAA,MAAA,IAAA,IAAA,IAAA,QAAA,IAAA,QAAA,WAAA,IAAA,WAAA,IAAA,IAAA,MAAA,aAAA,IAAA,aAAA,QAAA,IAAA,QAAA,iBAAA,IAAA,iBAAA,iBAAA,IAAA,iBAAA,iBAAA,IAAA,iBAAA,UAAA,IAAA,UAAA,UAAA,IAAA,UAAA,UAAA,IAAA,WAAA,aAAA,IAAA,aAAA,aAAA,IAAA,aAAA,aAAA,IAAA,aAAA,mBAAA,IAAA,oBAAA,cAAA,IAAA,cAAA,YAAA,IAAA,aAAA,OAAA,IAAA,QAAA,OAAA,IAAA,QAAA,gBAAA,IAAA,iBAAA,OAAA,IAAA,QAAA,WAAA,IAAA,WAAA,eAAA,IAAA,eAAA,WAAA,IAAA,WAAA,MAAA,IAAA,MAAA,gBAAA,IAAA,iBAAA,IAAA,IAAA,KAAA,QAAA,IAAA,SAAA,IAAA,IAAA,KAAA,UAAA,IAAA,UAAA,QAAA,IAAA,SAAA,gBAAA,IAAA,gBAAA,cAAA,IAAA,cAAA,uBAAA,IAAA,uBAAA,uBAAA,IAAA,uBAAA,gBAAA,IAAA,gBAAA,gBAAA,IAAA,gBAAA,mBAAA,IAAA,mBAAA,mBAAA,IAAA,mBAAA,IAAA,IAAA,IAAA,QAAA,IAAA,QAAA,MAAA,IAAA,MAAA,WAAA,IAAA,WAAA,mBAAA,IAAA,mBAAA,UAAA,IAAA,UAAA,KAAA,IAAA,KAAA,SAAA,IAAA,SAAA,QAAA,IAAA,QAAA,UAAA,IAAA,UAAA,UAAA,IAAA,UAAA,aAAA,IAAA,aAAA,aAAA,IAAA,aAAA,aAAA,IAAA,aAAA,QAAA,IAAA,SAAA,QAAA,IAAA,SAAA,SAAA,IAAA,SAAA,QAAA,IAAA,QAAA,MAAA,IAAA,OAAA,KAAA,IAAA,KAAA,aAAA,IAAA,aAAA,QAAA,IAAA,UAAA,IAAA,IAAA,KAAA,gBAAA,IAAA,iBAAA,UAAA,IAAA,UAAA,cAAA,IAAA,cAAA,QAAA,IAAA,SAAA,iBAAA,IAAA,iBAAA,gBAAA,IAAA,gBAAA,gBAAA,IAAA,gBAAA,gBAAA,IAAA,gBAAA,aAAA,IAAA,aAAA,cAAA,IAAA,gBCmBA,wBAA0B,EAEpB,iCACJ,MAAO,uBAGT,iBAAiD,GAO3C,uBAA0B,IAC9B,MAAM,UAAU,eACd,cAAa,QAAU,GAEzB,aAAa,SAAW,EACjB,OAAS,aAAa,QAAQ,WCjBjC,4BACJ,MAAO,OAAM,QAAQ,IAAM,MAAM,QAAQ,EAAE,IASvC,+BACJ,MAAI,GAAE,SAAW,EACR,GAEJ,MAAM,QAAQ,EAAE,IAGd,EAFE,CAAC,GAWN,iCACJ,MACA,GAAI,MAAM,QAAQ,KAChB,GAAI,GAAG,SAAW,EAChB,KAAM,IAAI,YAAW,uCAAuC,GAAG,UAEjE,EAAI,GAAG,OAEP,GAAI,GAEN,MAAO,GAaH,oCACJ,GAAI,MAAM,QAAQ,SAAW,MAAM,QAAQ,OAAO,KAChD,GAAI,OAAO,SAAW,EACpB,MAAA,QAAS,OACF,OAAO,GAEd,KAAM,IAAI,YAAW,iCAAiC,OAAO,cAG/D,OAAO,QC3DL,uCACJ,WAAY,EACZ,iBAAqB,SACf,OAAO,MAAM,SAAW,EAC1B,QAAS,EAET,QAAS,OAAO,MAAM,OAAO,OAAU,EAAI,GAG/C,MAAO,QCRT,iCAAqC,yBApBrC,MAyDE,sBACmC,eACxB,uCAA0C,cACxB,MAC3B,KAAK,MAAQ,OAAS,KAAO,UAAY,MACzC,KAAK,MAAQ,IAAI,MACjB,KAAK,GAAK,wBAEV,KAAO,MAAQ,KAAO,6BAA+B,KACrD,KAAK,aAAe,oBAAoB,MACxC,KAAK,KAAO,oBAAoB,KAAK,cAErC,KAAK,WAAa,UAClB,KAAK,WAAa,WAElB,KAAK,IAAU,SAAS,IAAK,KAAK,WAAY,KAAK,KAAM,KAAK,OAUhE,OACE,MAAA,MAAK,oBACE,KAAK,IAUd,cAEE,MAAA,MAAK,oBACL,iBAAiB,KAAK,IAAK,QAEvB,KAAK,IAAI,KAAO,OAAO,IACzB,MAAK,IAAI,OAAO,QACZ,KAAK,YAAc,MACrB,KAAK,IAAI,OAAO,KAAK,WAAW,MAAM,KAAK,OAGxC,KAMT,UACE,KAAK,oBACL,KAAK,IAAI,UAGD,oBACR,GAAI,KAAK,IAAI,WACX,KAAM,IAAI,OAAM,kBAAkB,KAAK,gCAIvC,aACF,MAAO,MAAK,cAGV,sBACF,KAAK,WAAa,UAClB,KAAK,IAAI,UAAY,YAIzB,+BACE,GAAI,EAAE,MAAM,aAAe,EAAE,MAAM,WACjC,KAAM,IAAI,OACN,mBAAqB,KAAK,UAAU,EAAE,OAAS,QAC/C,KAAK,UAAU,EAAE,QC0LnB,2BACJ,MAAO,IAAG,IAAI,GAAK,EAAE,QAWjB,2CAEJ,mBAAmB,QAAQ,mBACzB,cAAgC,iBAAiB,GACjD,UAAS,MAAM,iBAAiB,MClVpC,cAAA,MAuEE,kBACE,KAAK,MAAQ,KAAK,MAClB,KAAK,MAAQ,KAAK,MAKd,KAAK,OAAS,KAChB,KAAK,KAAO,KAAK,MAAM,OAEvB,KAAK,KAAO,KAAK,KAEnB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,KAAO,KAAK,MAAQ,oBArF7B,MAoIE,4EACa,KAAA,MAAA,MAA0B,KAAA,MAAA,MAC5B,KAAA,YAAA,YAA6B,KAAA,OAAA,OAC3B,KAAA,SAAA,SACA,KAAA,kBAAA,kBACX,KAAK,GAAK,wBACN,MAAQ,MACV,MAAK,aAAe,oBAAoB,MACxC,KAAK,KAAO,oBAAoB,KAAK,eAEvC,KAAK,KAAO,MAAM,qBA6DJ,OA3MlB,MAyQE,2BAGW,KAAA,SAAA,SACT,KAAK,GAAK,cAQV,KAAK,cAAgB,KAAK,cAU1B,KAAK,cAAgB,KAAK,cAE1B,KAAK,YAAc,KAAK,YAExB,KAAK,cAAgB,KAAK,cAQ1B,KAAK,aAAe,KAAK,aAEzB,KAAK,cAAgB,KAAK,cAM1B,KAAK,WAAa,KAAK,WAEvB,KAAK,YAAc,KAAK,YAKxB,KAAK,YAAc,KAAK,YAExB,KAAK,aAAe,KAAK,aAGzB,gBAAoB,MAAK,cACnB,OAAS,MACX,MAAM,cAAc,KAAK,MAG7B,KAAK,cAAc,aAAa,KAAK,MAGvC,YACE,iBAA+B,GAC/B,gBAAoB,MAAK,cACnB,OAAS,KACX,aAAa,KAAK,MAAM,MAExB,aAAa,KAAK,MAGtB,MAAO,CACL,cAAe,KAAK,cAAgB,KAAK,cAAc,KAAO,KAC9D,cAAe,aACf,YAAa,KAAK,YAClB,cAAe,KAAK,8BAqDP,QAzYnB,aAoZoC,uBAAc,aAmDhD,iBAA8B,IAC5B,QAtBM,KAAA,UAAsB,KAEtB,KAAA,kBAA8B,GAQ5B,KAAA,UAAY,GAapB,KAAK,GAAK,eAEV,KAAK,oBAAsB,KAE3B,KAAK,UAAY,KACjB,KAAK,gBAAkB,GAGvB,KAAK,kBAAoB,GACzB,KAAK,qBAAuB,GAC5B,KAAK,QAAU,GACf,KAAK,SAAW,GAChB,KAAK,OAAS,GAMd,KAAK,aAAe,GACpB,KAAK,cAAgB,GAErB,SAAW,KAAK,KAChB,GAAI,CAAC,MACH,WAAe,KAAK,eACpB,KAAqB,YAAY,QAAU,IAAM,OAAO,QAM1D,GAJA,KAAK,KAAO,KAEZ,KAAK,WAAa,KAAK,WAAa,KAAO,GAAO,KAAK,UAEnD,KAAK,YAAc,MAAQ,KAAK,iBAAmB,MAKrD,oBACA,GAAI,KAAK,iBAAmB,KAC1B,gBAAkB,KAAK,wBACd,KAAK,YAAc,MAC5B,cAAwB,KACpB,KAAK,WAAa,MACpB,WAAY,KAAK,WAEnB,gBAAkB,CAAC,WAAW,OAAO,KAAK,YAE5C,KAAK,gBAAkB,gBAGvB,UAAY,KAAK,MACb,OAAS,MACX,OAAQ,KAAK,YAEX,OAAS,MACX,OAAQ,WAEV,KAAK,MAAQ,MAGX,KAAK,SAAW,KAClB,KAAK,eAAiB,KAAK,QAE3B,KAAK,eAAiB,KAKxB,KAAK,UAAY,KAEjB,KAAK,0BAA4B,SAYlB,0BACf,MAAO,OAAM,KAAO,OAAS,UAAU,WAUjC,mCACN,GAAI,KAAK,aAAa,SAAW,EAC/B,KAAM,IAAI,cACN,2DAC2B,aAEjC,GAAI,KAAK,aAAa,QAAU,UAC9B,KAAM,IAAI,YACN,gBAAgB,oBAAoB,qCACV,KAAK,aAAa,yBAElD,MAAO,MAAK,aAAa,WAY3B,sBACE,MAAqB,kBACjB,KAAK,eAAe,UAAW,SAAS,cAY9C,uBACE,MAAqB,kBACjB,KAAK,eAAe,UAAW,UAAU,kBAgB3C,SACF,GAAI,KAAK,aAAa,OAAS,EAC7B,KAAM,IAAI,gBACN,SAAS,KAAK,6HAKb,GAAI,KAAK,aAAa,SAAW,EACtC,KAAM,IAAI,gBACN,SAAS,KAAK,8CAGpB,MAAqB,kBACjB,KAAK,eAAe,EAAG,SAAS,iBAclC,UACF,GAAI,KAAK,aAAa,SAAW,EAC/B,KAAM,IAAI,gBACN,SAAS,KAAK,8BAGpB,GAAI,KAAK,aAAa,OAAS,EAC7B,KAAM,IAAI,gBACN,SAAS,KAAK,+HAMpB,MAAqB,kBACjB,KAAK,eAAe,EAAG,UAAU,kBAGnC,UACF,MAAO,MAAK,QAQd,kBAKE,MAAO,MAAK,OAAO,IAAI,QAAU,aAG/B,WACF,MAAO,MAAK,YAGV,SACF,MAAO,MAAK,UAGV,cACF,KAAK,OAAS,SAGZ,aACF,MAAO,MAAK,cAGV,sBACF,KAAK,kBAAkB,QAAQ,GAAK,EAAE,UAAY,WAClD,KAAK,WAAa,aAGhB,oBACF,MAAI,MAAK,WACA,KAAK,kBAAkB,OAAO,GAAK,EAAE,WAErC,MAIP,2BACF,KAAK,kBAAoB,WAGvB,uBACF,MAAI,MAAK,UACA,KAAK,kBAAkB,OAAO,GAAK,CAAC,EAAE,WACxC,OAAO,KAAK,sBAEV,KAAK,kBAAkB,OAAO,KAAK,yBAI1C,8BACF,KAAK,qBAAuB,WAO1B,WACF,MAAO,MAAK,iBAAiB,OAAO,KAAK,wBAGvC,YACF,MAAO,MAAK,UAUd,cACE,GAAI,CAAC,KAAK,SACR,KAAM,IAAI,OACN,wEAiBE,iCAGR,GADA,OAAuB,OAAO,QAC1B,KAAK,WAAa,MAAQ,KAAK,UAAU,SAAW,EACtD,OAEF,cAAgC,OAAO,KAAK,WAC5C,GAAI,OAAO,SAAW,UAAU,OAC9B,KAAM,IAAI,YACN,SAAS,KAAK,gBAAgB,UAAU,kCACrB,OAAO,yCACP,UAEzB,mBAAsB,EAAG,WAAa,OAAO,OAAQ,cACnD,MAAU,OAAO,iBACO,UAAU,YAClC,GAAI,MAAQ,KACV,SAIF,SAAa,EAAE,KACf,GAAI,KAAK,MAAQ,MACX,OAAS,KAAK,KAChB,KAAM,IAAI,YACN,SAAS,yCAAyC,KAAK,uBACtC,KAAK,oBAAoB,QAGlD,GAAI,KAAK,SAAW,MACd,KAAO,KAAK,QACd,KAAM,IAAI,YACN,SAAS,yCAAyC,KAAK,2BAChC,KAAK,uBAAuB,QAG3D,GAAI,KAAK,SAAW,MACd,KAAO,KAAK,QACd,KAAM,IAAI,YACN,SAAS,yCAAyC,KAAK,2BAChC,KAAK,uBAAuB,SAK3D,GAAI,KAAK,OAAS,MACZ,EAAE,QAAU,KAAK,MACnB,KAAM,IAAI,YACN,SAAS,yCAAyC,KAAK,yBACnC,KAAK,sBAAsB,EAAE,UAKzD,GAAI,KAAK,MACP,WAAe,EAAE,MACjB,cAAkB,MAAK,MACrB,SAAa,OAAO,WACN,KAAK,KAAK,kBAKpB,MAAQ,EAAI,OAAO,MAAQ,OAAO,OAAO,OAAS,MACtD,GAAI,OAAS,MAAQ,CAAC,MAAO,MAAM,QAAQ,gBAAkB,GAC3D,KAAM,IAAI,YACN,SAAS,yCACN,KAAK,uBAAuB,qCACjB,uBAAuB,YAM/C,GAAI,KAAK,OAAS,KAChB,UAAa,EAAG,EAAI,KAAK,MAAM,OAAQ,EAAE,GACvC,YAAgB,KAAK,MAAM,OACf,EAAE,MAAM,GACpB,GAAI,SAAW,MAAQ,KAAO,MACxB,UAAY,IACd,KAAM,IAAI,YACN,SAAS,yCACN,KAAK,wBAAwB,KAAK,sBACtB,EAAE,YAgBjC,oBACE,MAAO,QAGC,8BACJ,KAAK,WAAa,MACpB,KAAK,UAAU,OAAQ,QAS3B,sBACE,KAAK,UAAY,SAOnB,gBACE,KAAK,UAAY,KAwEnB,qBAGE,OAAS,QAAU,GAEnB,KAAK,oBAGL,eAAiC,OAAO,uBAEnB,GACrB,iBAAoB,YAClB,GAAI,CAAE,kBAAiB,kBACrB,eAAiB,GACjB,MAGJ,oBAAsB,GACtB,iBAAoB,YAClB,GAAI,iBAAiB,iBACnB,gBAAkB,GAClB,MAIJ,GAAI,iBAAmB,gBACrB,KAAM,IAAI,YACN,mEAKN,MAAO,WAAU,KAAK,KAAM,KAE1B,GAAI,CAAC,KAAK,OAKR,KAAK,yBAAyB,QAG9B,gBAA6B,GAC7B,gBAAkC,QAAO,QACvC,YAAY,KAAK,MAAM,OAEzB,KAAK,MAAoB,iBAAiB,cAC1C,KAAK,MAAQ,GAGT,KAAK,gBACP,KAAK,WAAW,KAAK,gBAGnB,KAAK,YAAc,MAAQ,iBAI7B,MAAK,UAAY,GAcrB,GANA,KAAK,yBAAyB,QAM1B,iBACF,WAAa,KAAK,KAAK,OAA6B,mBAKT,OAAO,uBACjB,GAGjC,YAAc,YACR,WAAW,QAAQ,KAAO,IAC5B,GAAI,EAAE,SAER,eAAe,KAAK,GAItB,GAFA,OAAuB,iBAAiB,gBAEpC,KAAK,qBAAuB,KAC9B,KAAM,IAAI,qBACN,qFAKN,MAAO,aAEP,eAAmB,kBAAkB,oBACjB,KAAK,mBAAmB,+BAExB,iBAAiB,QAgCrC,GA/BA,KAAK,6BACD,MAAM,QAAQ,QAAU,WAAW,GACX,YAExB,aAAe,MAAQ,YAAY,OAAS,GAC5C,MAAM,QAAQ,YAAY,IAE5B,OAAU,YACI,IACG,eAAkB,GAAI,gBAClB,YAAa,MAAO,KACN,OAAO,QAAS,OAAQ,KAAK,KAC3C,QAErB,OAAS,GAAI,gBACT,YAAa,YAAsB,KACrB,OAAO,QAAS,OAAQ,KAAK,MAUjD,KAAK,eACD,OAA6C,OAAQ,KAAM,KAC3D,WAAY,YAAa,QAC7B,KAAK,YAED,KAAK,qBAAuB,KAC9B,KAAM,IAAI,qBACN,qFAIN,MAAO,WAYH,yCACR,GAAI,KAAK,iBAAmB,KAC1B,OACK,GAAI,WAAW,SAAW,KAAK,gBAAgB,OACpD,QAAQ,KACJ,iDACG,KAAK,UAAU,4DACE,KAAK,UAAU,KAAK,kCACxB,KAAK,aAEzB,gBAAkB,GAClB,KAAK,gBAAgB,QAAQ,gBACvB,WAAa,MAAQ,WAAW,IAAM,MACtC,WAAW,KAAO,WACpB,aAAc,MAGd,aACF,QAAQ,KACJ,kCACI,KAAK,UAAU,wDACe,KAAK,SACpC,KAAK,UAAU,KAAK,wBAiB7B,eACF,GAAI,KAAK,cAAgB,MAAQ,KAAK,aAAa,SAAW,EAC5D,KAAM,IAAI,gBACN,aAAa,KAAK,oEAGxB,oBAAkC,GAClC,gBAAmB,MAAK,cACtB,gBAAoB,KAAK,UAAU,MAAK,cACpC,gBAAgB,QAAQ,eAAiB,IAC3C,gBAAgB,KAAK,aAGzB,GAAI,gBAAgB,SAAW,GAC7B,iBAAqB,KAAK,aAAa,GAAG,aAC1C,MAAI,OAAM,QAAQ,eAAiB,MAAM,QAAQ,aAAa,KAC1D,aAAa,SAAW,EAClB,aAAyB,GAE1B,iBAIT,MAAM,IAAI,gBACN,aAAa,KAAK,kIAiB1B,cACE,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,cACN,sCAAsC,KAAK,2FAIjD,MAAsB,sBAAqB,KAAK,SAclD,kBACE,KAAK,MAAQ,GAWf,yBAA2B,IACzB,MAAO,eAAc,cAAgB,KAAK,iBAAmB,KAAK,SAepE,oBACE,KAAK,KACH,WAAe,KAAK,QACpB,GAAI,OAAO,SAAW,QAAQ,OAK5B,KAAM,IAAI,YACN,4CAA4C,KAAK,sCACjB,QAAQ,uCACT,OAAO,qCACjB,cAE3B,GAAI,OAAO,SAAW,EACpB,OAEF,sBAA0D,eACtC,cAAc,QAClC,UAAa,EAAG,EAAI,YAAY,OAAQ,EAAE,GACxC,OAAW,YAAY,MACb,OAAO,KACP,QAAQ,GAClB,GAAI,CAAC,aAAK,YAAY,GAAG,MAAO,EAAE,OAChC,KAAM,IAAI,YACN,sBAAsB,GAAG,mDACoB,EAAE,SAErD,kBAAkB,KAAK,CAAC,GAAG,IAE7B,cAAc,qBAmBR,yEAKR,GAAI,KAAK,kBAAkB,QAAQ,QAAU,GAC3C,KAAM,IAAI,YACN,yBAAyB,kBAAkB,KAAK,QAEtD,KAAK,kBAAkB,KAAK,MAExB,OAAS,MACX,OAAQ,WAGN,KAAK,2BACP,aAAc,eAAe,UAE/B,cAAkB,YAAY,MAAM,MAAO,cAEvC,GAAI,eAAc,UAAW,MAAO,KAAM,UAAW,YACzD,MAAA,WAAU,UAEN,aAAe,MACjB,KAAK,QAAQ,IAAM,YAAY,MAAM,OAAO,SAE1C,WAAa,MACf,WAAY,IAEV,UACF,KAAK,kBAAkB,KAAK,QAE5B,KAAK,qBAAqB,KAAK,QAE1B,OAaT,oCACE,KAAK,0BAA4B,MAWnC,iBACE,GAAI,SAAU,MAAQ,MAAM,QAAQ,UAAW,QAAO,SAAW,EAC/D,OAGF,QAAuB,OAAO,SAC1B,KAAK,UAAY,QAAa,KAAK,UAAY,MACjD,KAAK,OAAO,KAAK,GAAG,SAexB,+BACE,MAAO,YAYT,yBAEE,GAAI,CAAC,KAAK,iBACR,GAAI,MAAQ,KACV,GAAI,MAAM,QAAQ,MAChB,KAAK,QAAQ,cACX,GAAI,aAAe,KACjB,KAAM,IAAI,WACN,SAAS,KAAK,qEAKtB,MAAM,IAAI,WACN,SAAS,KAAK,+DAKtB,MAAO,MAIT,MAAO,MAeD,iGAKS,MACf,oBACkB,OAAO,cACzB,cAA8B,OAAO,eACrC,WAA2B,OAAO,YAClC,YAA4B,OAAO,aACnC,YAA0B,mBAAmB,aAC7C,aAA2B,mBAAmB,cAG9C,kBAA+B,eACD,iBACE,GAChC,YAAgB,iBAKd,cAAc,KAAK,EAAE,aACrB,YAAY,KAAK,EAAE,WACnB,cAAc,KAAK,EAAE,aAMvB,GAAI,MACA,CACE,cAAe,KACf,cACA,YACA,cACA,aAAc,gBACd,cACA,WACA,YACA,YACA,cAEF,QAGJ,UAAa,EAAG,EAAI,cAAc,OAAQ,IAExC,cAAc,GAAG,YAAc,KAC/B,cAAc,GAAG,UAAY,KAAK,aAAa,OAAS,EACxD,cAAc,GAAG,YAAc,EAyBnC,YACE,YAC+B,CAAC,KAAM,KAAK,KAAM,UAAW,KAAK,WACjE,MAAI,MAAK,iBAAmB,MAC1B,SAAO,gBAAqB,KAAK,iBAE/B,KAAK,OAAS,MAChB,SAAO,MAAW,KAAK,OAElB,QAQC,iBACR,MAAA,MAAK,QAAQ,QAAQ,QAAU,OAAO,WAC/B,KAAK,QAAQ,OAGZ,oBACR,GAAI,KAAK,YAAc,EACrB,KAAM,IAAI,OAAM,UAAU,KAAK,8BAkCnC,UACE,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,OACN,wBAAwB,KAAK,2CAInC,GAAI,KAAK,YAAc,KACrB,KAAM,IAAI,OACN,wBAAwB,KAAK,0CAInC,KAAK,oBAEL,yBAA2B,EAC3B,MAAI,EAAE,KAAK,YAAc,GACvB,sBAAuB,KAAK,kBAGvB,CAAC,qBAAsB,KAAK,UAAW,wBAclD,yCAEE,aACkB,OAAO,cACzB,WAAwB,GACxB,YAAgB,cACd,OAAO,KAAK,EAAE,OAEhB,MAAqB,kBAAiB,QAYxC,wCAEE,MAAO,UAcH,oDAOJ,GAJI,QAAS,MAAS,WAAa,MAAQ,UAAY,IACrD,OAAQ,UAAO,YACf,UAAY,UAAO,WAEjB,MAAM,aAAa,SAAW,EAChC,MAAO,CAAC,WACH,CACL,UAAa,MAAM,aAAa,WAChC,GAAI,MAAK,cAAc,SAAW,EAChC,MAAO,OAAK,aACP,CACL,kBAAwC,GACxC,UAAa,EAAG,EAAI,MAAK,cAAc,OAAQ,KAC7C,MAAU,MAAK,aAAa,UACd,MAAK,cAAc,cACf,MAAK,YAAY,mBACX,gBAAgB,EAAG,OAAO,YAElD,aAAgB,iBACV,cAAc,QAAQ,MAAO,IAC/B,cAAc,KAAK,IAIzB,MAAO,iBCvmDb,eAAA,aA4CgC,OAI9B,kBACE,MAAM,CACJ,MAAO,KAAK,MACZ,KAAM,KAAK,MAAQ,KAAO,KAAK,KAAO,OAAO,SAAS,aAcxD,GAXI,KAAK,WAAa,MACpB,MAAK,UAAY,MAEf,KAAK,QAAU,MACjB,MAAK,OAAS,IAGhB,KAAK,UAAY,GACjB,KAAK,MAAQ,GACb,KAAK,OAAS,KAAK,OAEf,KAAK,YAAc,MAAQ,KAAK,iBAAmB,KACrD,KAAM,IAAI,YACN,qGAGN,oBAAsB,KAAK,gBAC3B,GAAI,iBAAmB,MACrB,GAAI,KAAK,YAAc,KACrB,KAAM,IAAI,YACN,iFAGJ,gBAAkB,CAAC,KAAK,WAAW,OAAO,KAAK,oBAI7C,KAAK,WAAa,KACpB,KAAM,IAAI,YACN,yFAKR,UAAc,KAAK,OAAS,UAE5B,KAAK,gBAAkB,gBACvB,KAAK,MAAQ,MAEb,KAAK,UAAY,CAAC,CAAC,MAAO,kBAE1B,gBAAoB,GAAI,gBACpB,KAAK,MAAO,KAAK,gBAAiB,KAAM,GAAI,GAAI,KAAK,MACzD,YAAY,UAAY,EACxB,YAAY,YAAc,EAK1B,GAAI,MAAK,CACP,cAAe,KACf,cAAe,GACf,YAAa,GACb,cAAe,GACf,aAAc,CAAC,aACf,cAAe,CAAC,aAChB,WAAY,CAAC,MACb,YAAa,CAAC,MACd,YAAa,CAAC,iBACd,aAAc,CAAC,mBAInB,qBAGE,KAAM,IAAI,YACN,6EACiD,KAAK,QAG5D,UAEE,MAAO,CAAC,qBAAsB,KAAK,UAAW,qBAAsB,GAGtE,YACE,MAAO,CACL,gBAAiB,KAAK,gBACtB,MAAO,KAAK,MACZ,OAAQ,KAAK,OACb,KAAM,KAAK,QAzFC,WAAA,UAAY,aA6F9B,sBAAc,cAAc,YAmCtB,wBACJ,GAAI,QAAO,YAAc,MAAQ,QAAO,OAAS,KAC/C,KAAM,IAAI,OACN,gIAKN,GAAI,QAAO,YAAc,MAAQ,QAAO,OAAS,KAE/C,KAAM,IAAI,YACN,oFAGN,eAAiB,QAAO,WACpB,QAAO,OAAS,MAAQ,YAAc,MACxC,YAAa,CAAC,MAAM,OAAO,QAAO,QAGpC,UAAY,QAAO,MACf,OAAS,MACX,OAAQ,WAGV,gBAAmB,GAAI,YAAW,CAChC,gBAAiB,WACjB,KAAM,QAAO,KACb,MACA,OAAQ,QAAO,iBAGD,YAAW,aAAa,GAAG,cAC3C,MAAO,SAAQ,GCpLjB,2CACE,GAAI,OAAQ,KACV,OAEF,aAAqE,QAC9C,oBACY,GACnC,cAAkB,QAChB,UAAc,MAAK,KACnB,GAAI,MAAO,QAAU,UACnB,gBAAoB,MACpB,SAAS,KAAK,YAAY,QAC1B,KAAK,KAAK,KACV,iBAAiB,KAAK,cAG1B,GAAI,SAAS,OAAS,GACpB,WAAe,KAAM,SAAQ,IAAI,UACjC,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,MAAK,KAAK,IAAM,OAAO,GAAG,GAG5B,QAAQ,mBAUN,qCACJ,GAAI,OAAQ,KACV,OAEF,cAAkB,QAChB,UAAc,MAAK,KACf,MAAO,QAAU,UACnB,MAAM,WC7CZ,0BAAA,AAAA,kCACE,uBAAA,uBAAA,OAAA,GAAA,SACA,uBAAA,uBAAA,QAAA,GAAA,YAFU,uBAAA,uBAAqB,KAM1B,2BAA+B,iBA1BtC,MAoDA,cAEE,KAAA,eAAkC,KAMlC,kBACE,KAAK,OAAS,YAGV,iCAEA,+BAEA,iCAEA,+BAEA,2BAEA,oBASN,iCAnFF,MA2GE,mCAAsD,IAGhD,YAAa,MACf,YAAY,IAEd,KAAK,UAAY,WACjB,KAAK,YAAc,YAGrB,iBACE,KAAK,UAAU,KAAK,UAGtB,kBACE,mBAAuB,MAAK,UAC1B,SAAS,UAAU,QAIvB,iBACE,mBAAuB,MAAK,UAC1B,SAAS,SAAS,aAShB,2BACA,OAAQ,MACV,OAAO,IAET,mBAAuB,MAAK,UAC1B,KAAM,UAAS,aAAa,MAAO,YASjC,yBACA,OAAQ,MACV,OAAO,IAET,mBAAuB,MAAK,UAC1B,KAAM,UAAS,WAAW,MAAO,YAS/B,2BACA,OAAQ,MACV,OAAO,IAET,mBAAuB,MAAK,UAC1B,KAAM,UAAS,aAAa,MAAO,YASjC,yBACA,OAAQ,MACV,OAAO,IAET,mBAAuB,MAAK,UAC1B,KAAM,UAAS,WAAW,MAAO,YAQ/B,qBACA,OAAQ,MACV,OAAO,IAET,mBAAuB,MAAK,UAC1B,KAAM,UAAS,aAAa,YAQ1B,mBACA,OAAQ,MACV,OAAO,IAET,mBAAuB,MAAK,UAC1B,KAAM,UAAS,WAAW,oBAnNhC,aA6NgC,cAI9B,cACE,aAGI,qBACJ,KAAK,KAAO,EACZ,KAAK,OAAS,QAGV,yBACA,OAAQ,MACV,OAAO,IAET,cAAkB,MAAK,MAAW,KAAO,EAAI,MAAK,KAClD,KAAK,MAAQ,UACb,cAAkB,QAChB,UAAc,MAAK,KACnB,GAAI,MAAO,QAAU,SACd,KAAK,OAAO,eAAe,MAC9B,MAAK,OAAO,KAAO,GAErB,KAAK,OAAO,KAAO,KAAK,OAAO,KAAiB,MAAQ,eAExD,uBACI,MAAO,MAAK,OACd,mBAAqB,KAAK,OAAO,KAEjC,KAAK,OAAO,KAAO,EAErB,UACI,KAAK,IAAM,KAAK,KAAK,OAAO,KAAO,IAAI,MAAO,aAClD,KAAK,OAAO,KAAO,MACf,oBAAsB,MACxB,mBAAmB,iBAMrB,yBACJ,GAAI,OAAQ,KACV,cAAkB,MAAK,OAAO,SAC5B,GAAI,KAAK,OAAO,MAAQ,KACtB,SAEE,MAAO,MAAK,OAAO,MAAS,SAC9B,MAAK,KAAO,KAAK,OAAO,KAAiB,KAAK,KAE9C,KAAK,KACH,UAAoB,IAAI,IAAI,EAAG,KAAK,MAAO,KAAK,OAAO,MACvD,MAAK,KAAO,MACX,KAAK,OAAO,KAAgB,UAC7B,KAAK,MAAK,mBArRtB,aAkS6B,mBAIrB,qBACJ,KAAK,MAAQ,GACb,KAAK,QAAU,QAGX,yBACA,OAAQ,MACV,OAAO,IAET,KAAK,MAAM,KAAK,OAChB,cAAkB,OACZ,KAAK,QAAQ,MAAQ,MACvB,MAAK,QAAQ,KAAO,IAEtB,KAAK,QAAQ,KAAK,KAAK,MAAK,WAO1B,YACJ,aAAqE,QAC9C,WACG,GAC1B,cAAkB,MAAK,SACrB,eAAmB,KAAK,QAAQ,KAChC,UAAa,EAAG,EAAI,WAAW,OAAQ,EAAE,EACvC,GAAI,MAAO,YAAW,IAAO,UAC3B,gBAAoB,WAAW,GAC/B,SAAS,KAAK,YAAY,QAC1B,KAAK,KAAK,KACV,QAAQ,KAAK,IAInB,WAAe,KAAM,SAAQ,IAAI,UACjC,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,GACnC,oBAAwB,KAAK,QAAQ,KAAK,IAAI,QAAQ,IACtD,gBAAgB,UAChB,KAAK,QAAQ,KAAK,IAAI,QAAQ,IAAM,OAAO,GAAG,qBA9UpD,aAgWoC,cAiBlC,6BACE,QAKA,GARM,KAAA,aAAe,EAIrB,KAAK,WAAa,YAAc,OAC5B,KAAK,aAAe,QACtB,MAAK,WAAa,wBAEhB,KAAK,aAAe,SAAW,KAAK,SAAW,KACjD,KAAM,IAAI,OACN,mHAGF,aAAK,SAAS,KAAK,aAGrB,MAAK,UAA0B,SAC3B,KAAK,UAAU,KAAK,MAAO,KAAK,aAEtC,KAAK,WAAa,KAAK,aACvB,KAAK,SAAW,KAAK,WACrB,KAAK,WAAa,KAAK,aACvB,KAAK,SAAW,KAAK,WACrB,KAAK,WAAa,KAAK,aACvB,KAAK,SAAW,KAAK,WACrB,KAAK,MAAQ,KAAK,aAGd,8BACJ,OAAsC,GAClC,KAAK,OAAS,MAChB,MAAM,sBAAqB,OAC3B,GAAG,KAAK,KAAK,MAAM,MAAO,MAAO,SAEnC,GAAG,KAAK,aACR,KAAM,SAAQ,IAAI,SAGd,2BACJ,KAAK,aAAe,MAChB,KAAK,YAAc,MACrB,MAAM,sBAAqB,OAC3B,KAAM,MAAK,WAAW,MAAO,aAI3B,yBACJ,OAAsC,GAClC,KAAK,UAAY,MACnB,MAAM,sBAAqB,OAC3B,GAAG,KAAK,KAAK,SAAS,MAAO,SAE3B,KAAK,aAAe,SACtB,GAAG,KAAK,aAEV,KAAM,SAAQ,IAAI,SAGd,2BACA,KAAK,YAAc,MACrB,MAAM,sBAAqB,OAC3B,KAAM,MAAK,WAAW,MAAO,aAI3B,yBACJ,OAAsC,GAClC,KAAK,UAAY,MACnB,MAAM,sBAAqB,OAC3B,GAAG,KAAK,KAAK,SAAS,MAAO,SAE3B,KAAK,aAAe,QACtB,GAAG,KAAK,aACC,aAAK,SAAS,KAAK,aAC5B,GAAG,KAAK,KAAK,UAAU,KAAK,aAAc,MAAO,QAEnD,KAAM,SAAQ,IAAI,SAGd,qBACA,KAAK,YAAc,MACrB,MAAM,sBAAqB,OAC3B,KAAM,MAAK,WAAW,aAIpB,mBACA,KAAK,UAAY,MACnB,MAAM,sBAAqB,OAC3B,KAAM,MAAK,SAAS,UAQpB,qDAOJ,GAHI,YAAa,MACf,YAAY,IAEV,qBAAqB,cACvB,MAAO,CAAC,YAEV,GAAI,MAAM,QAAQ,aAAc,WAAU,YAAc,cACtD,MAAO,YAGT,oBACkB,OAAO,YACzB,MAAO,iBAAgB,IACnB,gBAAkB,GAAI,gBAAe,eAAgB,aAje3D,gCAAA,MAmfE,qBAcO,iEAEL,aAAK,OACD,gBAAkB,GAAK,OAAO,UAAU,gBACxC,IAAM,8DACS,kBACnB,4BAA4B,kBAAkB,qBAC1C,4BAA4B,aAAa,iBAAmB,MAC9D,6BAA4B,aAAa,gBAAkB,IAE7D,4BAA4B,aAAa,gBAAgB,KACrD,2BAGS,wCAEb,oBAAwB,6BAA4B,cAClD,iBAAqB,4BAA4B,aAAa,CAAC,WAC/D,aAAa,QAAQ,OACnB,GAAI,OAAS,oBACX,KAAM,IAAI,YAAW,4CASZ,SACf,4BAA4B,aAAe,SAWtC,iCACL,iBAAgD,GAChD,oBAAwB,6BAA4B,cAClD,UAAc,CAAC,UACX,gBAAkB,OACpB,aAAa,KAAK,GAAG,4BAA4B,aAAa,QAGlE,MAAO,cAAa,IAAI,MAAQ,GAAI,SArEvB,4BAAA,aAC6C,GAwExD,yIAKJ,YAAgB,GAAI,yBACoB,CACtC,GAAI,YAAc,GAAG,4BAA4B,gBAAgB,UAE/D,YAAa,MACf,gBAAgB,KAAK,GAAG,YAE1B,gBAAgB,KAAK,SACrB,iBAAqB,GAAI,cAAa,iBAMtC,MAAA,cAAa,UAAU,CACrB,OACA,aACA,QAAS,gBACT,MAAO,cACP,UACA,QACA,aACA,QAAS,kBAEJ,CAAC,aAAc,SCzjBlB,2CAEc,kBACC,IACnB,MAAO,wBACH,QAAQ,sBAAc,iBAAiB,SAAS,aAChD,cAAe,QAAS,gBCRxB,6BACJ,MAAO,MAAK,KACN,EAAE,QAAU,WACd,GAAI,EAAE,OAAO,YAEf,cAAsB,KAAM,SAAO,GAAI,KAAM,kBACnB,KAAK,UAAU,MAAO,iBAC/B,KAAS,QAAQ,UAAW,gBAC7C,MAAW,KAAI,EAAG,SAIhB,wCACJ,MAAO,MAAK,IAAU,KAAO,SAAW,IAAI,MAAO,QAAS,KAGxD,wCACJ,MAAO,MAAK,IAAU,KAAS,IAAQ,IAAI,MAAO,QAAS,KAGvD,kDAEJ,MAAO,MAAK,KACV,SAAiB,IAAI,MAAO,mBAEpB,YAAgB,IAAI,OAAQ,UAAW,OAAO,qBAChC,IAAQ,IAAI,KAAM,cACxC,MAAW,KAAI,IAAS,KAAK,UAAW,OAItC,kDAEJ,MAAO,MAAK,KACV,gBAAwB,YAAY,MAAO,UAAW,OAAO,oBACxC,IAAQ,KAAI,EAAG,0BAEZ,YAAY,MAAO,UAAW,OAAO,qBACvC,IAAQ,KAAI,EAAG,cAErC,MAAW,MAAO,SAAW,IAAI,SAAU,YAAa,MAItD,mCACJ,MAAO,MAAK,KACV,cAAsB,QAAQ,EAAO,IAAI,EAAO,IAAI,MAAO,SAC3D,MAAW,MAAO,SAAO,WAAY,MAInC,4BACJ,MAAO,MAAK,KACV,cAAsB,QAAQ,EAAO,IAAI,EAAO,IAAI,MAAO,SAC3D,MAAW,MAAK,UAAW,MAIzB,uCACJ,MAAO,MAAK,KACV,QAAgB,KAAQ,IAAI,MAAO,OAAQ,UAC3B,IAAQ,IAAQ,IAAI,EAAG,OAAQ,OAAQ,IACvD,MAAW,SAAQ,EAAO,KAAI,EAAO,IAAI,MAAK,SAY5C,8BACJ,MAAO,MAAK,KACV,UAAa,KAAK,IAAI,kBACK,IAAI,MAAO,qBACZ,IAClB,KAAI,eAAoB,SAAa,IAAI,GAAI,kBACjD,OACJ,MAAW,MAAK,cAAe,MAI7B,0DAC2C,IAC/C,MAAO,MAAK,KACV,GAAI,WACF,OAAa,QAAQ,aAGrB,cAAsB,KAAI,OAAQ,OAAO,MAAM,OAAS,EAAG,IAC3D,OAAa,IAAI,OAAQ,WAE3B,MAAA,QAAa,YAAY,OAAQ,UAAW,EAAI,WACrC,IAAQ,KACX,IAAI,OAAO,UAAe,IAAI,SAAU,OAAO,MAAM,OAAS,MAapE,gEAC2C,IAC/C,MAAO,MAAK,KACV,eAAuB,MAAQ,SAAQ,SAAS,QAChD,OAAa,YAAY,OAAQ,UAAW,EAAI,WAChD,gBAAoB,OAAO,mBAEnB,OAAO,WAAY,YAAY,YAAY,OAAS,IACnD,QAAQ,aACjB,MAAO,yBAAwB,aAAc,OAAQ,cAyBnD,sDAEJ,GAAI,CAAC,aAAK,YAAY,OAAO,MAAO,OAAO,OACzC,KAAM,IAAI,YACN,8DACG,KAAK,UAAU,OAAO,cAAc,KAAK,UAAU,OAAO,UAEnE,MAAO,MAAK,KAOV,eAAmB,OAAO,oBACL,OAAO,MAAM,MAClC,MAAO,YAAW,IAAI,OAAO,IAAI,SAAS,IAAI,aAAa,MAAM,WAI/D,yCACJ,MAAO,MAAK,KACV,MACA,MAAA,GAAQ,YAAY,MAAO,UAAW,EAAI,WAC1C,EAAQ,IAAQ,IAAI,EAAO,IAAI,EAAG,KACvB,KAAK,8BAA8B,MAAO,GAAI,MAIvD,gDAEJ,MAAO,MAAK,KACV,gBAAwB,YAAY,MAAO,UAAW,eAC9B,YAAY,MAAO,UAAW,GACtD,MAAW,MACH,IAAI,MAAW,IAAQ,IAAI,YAAa,eAAgB,MAI9D,8BACJ,MAAO,MAAK,KACV,YAAoB,IAAQ,KAAI,UAAW,QAC3C,MAAW,MAAS,IAAI,MAAW,IAAI,MAAO,UAAW,MAIvD,sCACJ,MAAO,MAAK,KACV,mBAAuB,YAAY,MAAO,mBACnB,YAAY,MAAO,cACpB,IAAI,eAAgB,gBAC1C,MAAW,KAAQ,KAAI,UAAW,OCkB/B,cAA4D,CACjE,iBAAA,kBACA,kBACA,4BACA,4BACA,aACA,MACA,iBACA,QACA,wBACA,8BACA,mBACA,0BACA,QACA,iBAKI,6BACJ,GAAI,MAAO,iBAAmB,UAC5B,GAAI,iBAAkB,WACpB,MAAO,WAAU,gBAEnB,WAAa,gBAAgB,iBAC7B,KAAI,gBAAe,cAAc,SAAS,wBACxC,QAAS,gBAAgB,sGAIrB,GAAI,YAAW,YAErB,OAAO,gBCpPL,qCACJ,MAAO,MAAK,KACV,eAAsB,IAAI,GAAQ,SAAS,yBAChB,OAAS,QAAQ,MAAO,YAAY,MAAM,OACrE,MAAW,MAAS,MAAM,MAAO,kBAAmB,MAIlD,0CACJ,MAAO,MACH,IAAQ,OACA,MAAU,OAAO,MAAO,IAAS,OAAO,MAAO,KAAM,YAGnE,oCACE,MAAO,MAAK,IACC,WAAW,MAAM,MAAM,GAAI,MAAM,MAAM,IAAI,MAAM,KAAK,YAIrE,qCACE,MAAO,MAAK,IACC,WAAW,MAAM,MAAM,GAAI,MAAM,MAAM,IAAI,MAAM,KAAK,YAIrE,qCACE,MAAO,MAAK,IACC,WAAW,MAAM,MAAM,GAAI,MAAM,MAAM,IAAI,MAAM,KAAK,YAI/D,gCACJ,MAAO,MAAK,KACV,OAAW,cAAc,MAAO,UACrB,eAAe,MAAO,mBAEb,GAAG,IAAI,IAE3B,MAAW,OAAU,QAAQ,YAAa,GAAI,GAAG,IAAI,aAAc,GAC9D,KAAK,aAIR,6BACJ,MAAO,MAAK,KACV,OAAW,cAAc,MAAO,UACrB,eAAe,MAAO,mBAEb,GAAG,IAAI,IAE3B,MAAW,OAAU,QAAQ,YAAa,GAAI,GAAG,IAAI,aAAc,GAC9D,KAAK,aAIR,0CACJ,MAAO,oBAAuB,MAAO,OAGjC,gDAEJ,MAAI,OAAM,OAAS,MAAM,MACvB,OAAQ,MAAM,QAAQ,CAAC,MAAM,KAAO,KAEtC,MAAQ,MAAM,OAAO,IACjB,MAAM,QAAU,MAAM,OACxB,OAAQ,MAAM,OAAO,MAAM,QAElB,MAAM,MAAO,OAAO,OAAO,WCajC,QAAY,sBACA,sBACA,sBACA,uBACC,iCACA,qDACmB,+BACjB,+CACuB,yCAIuB,CAClE,eACA,oBACA,UACA,wBAAA,yBACA,8BAAA,+BACA,IACA,IACA,IACA,IACA,KACA,KACA,QAGI,0BACJ,GAAI,MAAO,aAAe,UAAY,aAAc,YAClD,MAAO,YAAW,YACb,GAAI,MAAO,aAAe,UAAY,YAAc,KACzD,MAAO,YAEP,KAAM,IAAI,YAAW,kBAAkB,cAqBrC,iCAEJ,GADK,QAAO,KAAO,KAAM,0BAA0B,MAC/C,MAAO,KAAO,SAChB,MAAO,IACF,CACL,WACA,cAAkB,QAAO,KAAK,WAC5B,GAAI,UAAU,OAAS,IACrB,OAAS,IACT,MAGJ,GAAI,SAAW,OACb,MAAO,QAET,cAAkB,QAAO,KAAK,YAC5B,GAAI,WAAW,OAAS,IACtB,OAAS,IACT,MAGJ,MAAI,UAAW,OACN,OAED,GAAgB,MCjKtB,kCACJ,iBAAiE,CAC/D,QAAW,IAAM,MAAM,QAAQ,KAC/B,SAAY,IAAM,MAAM,SAAS,EAAG,IAAM,WAC1C,KAAQ,IAAM,MAAM,KAAK,KAAO,GAAK,KAAO,WAC5C,OAAU,IAAM,MAAM,OAAO,KAAO,GAAK,KAAO,UAAW,GAC3D,QAAW,IAAM,MAAM,QAAQ,KAAO,GAAK,EAAG,WAC9C,IAAO,IAAM,MAAM,IAAI,MASzB,GAPA,aAAa,QAAa,aAAa,QACvC,aAAa,SAAc,aAAa,SACxC,aAAa,KAAU,aAAa,KACpC,aAAa,OAAY,aAAa,OACtC,aAAa,QAAa,aAAa,QACvC,aAAa,IAAS,aAAa,IAE/B,aAAc,cAChB,MAAO,cAAa,cAEtB,KAAM,IAAI,YAAW,qBAAqB,cC5BrC,gDAAoD,EAAI,KAAO,KAchE,0EACsD,IAC1D,GAAI,qBAAuB,MACvB,MAAO,sBAAwB,UAC/B,OAAO,eAAe,uBAAyB,OAAO,WACtD,CAAC,iBAAiB,qBACpB,KAAM,IAAI,OACN,sEAGN,GAAI,WACF,QAAY,KAAK,UAAU,qBACvB,IAAI,OAAS,6CACf,QAAQ,KACJ,mCAAmC,2CACnB,IAAI,qJAGjB,iDAgBP,6BACJ,GAAI,IAAM,KAER,MAAO,GACF,GAAI,MAAO,IAAM,SACtB,GAAI,OAAO,eAAe,KAAO,OAAO,WAEtC,SAAa,OAAO,KAAK,GACzB,cAAkB,OAChB,GAAI,MAAO,MAAQ,SAEjB,MAAO,GAET,GAAI,CAAC,iBAAiB,EAAE,MACtB,MAAO,GAGX,MAAO,WAGH,MAAM,QAAQ,IAEhB,eAAmB,GACjB,GAAI,CAAC,iBAAiB,MACpB,MAAO,GAGX,MAAO,OAKP,OAAO,QAKX,UAAc,MAAO,GACrB,MAAO,SAAU,UAAY,QAAU,UAAY,QAAU,WCxE3D,0DAIE,QAAQ,KACd,mBAAuB,sBAAsB,kBAGjB,CAAC,eAAgB,eAAgB,WACzD,eACF,YAAa,YAAc,GAC3B,UAAY,WAAa,CAAC,IAAM,IAAM,IAEtC,YAAa,YAAc,GAC3B,UAAY,WAAa,CAAC,IAAM,IAAM,IAAM,IAI1C,UAAU,UAAU,OAAS,IAAM,GAErC,WAAY,UAAU,IAAI,IAAK,KAAK,MAAM,WAAa,MAGzD,kBACA,GAAI,CAAC,gBACH,UAAU,KAAK,mBACf,cAAgB,GAChB,gBAAoB,QAAM,aACxB,cAAc,KAAK,GAAG,OAAM,aAAa,QAI7C,QAAQ,IAAI,OAAO,aACnB,SAAS,UAAW,UAAW,SAC/B,QAAQ,IAAI,OAAO,aAEnB,WAAe,OAAM,OACrB,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EAC/B,eACF,kBAAkB,OAAO,GAAI,UAAW,SAExC,iCACI,OAAO,GAAI,UAAW,cAAe,SAE3C,QAAS,KAAM,OAAO,OAAS,EAAI,IAAM,KAAK,OAAO,aAItD,OAAc,mCAEf,mBAAuB,qBAAqB,0BAClB,qBAAqB,OAAM,qBAErD,QAAQ,iBAAiB,eAAiB,qBAC1C,QAAQ,qBAAqB,kBAC7B,QAAQ,yBAAyB,qBACjC,QAAQ,IAAI,OAAO,aAGrB,sCACE,mBAEA,MAAK,QAAc,2BAA6B,KAC9C,eACI,qBAAsB,OAAc,2BAExC,eAAiB,qBAAqB,OAAM,kBAGvC,eAGT,uCACE,mBAAqB,gBACU,SACT,GACtB,gBAAoB,QAAM,aACxB,aAAa,KAAK,OAAM,aAAa,QAEvC,qBAAyB,eACvB,GAAI,WAAW,OAAS,GACpB,WAAW,SAAW,GAAK,WAAW,GAAG,cAAc,OAAS,GAClE,eAAiB,GACjB,MAEF,MAAM,KAAK,GAAG,YAEhB,GAAI,eAEF,gBAAoB,QAAM,QACxB,SAAW,GACX,gBAAmB,OAAM,aACvB,GAAI,MAAM,QAAQ,SAAU,GAC1B,GAAI,MACF,eAAiB,GACjB,UAEA,MAAO,GAIb,GAAI,CAAC,eACH,MAIN,MAAO,gBAGT,2CAGiE,QAAQ,KACvE,SAAW,GACX,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EAC/B,EAAI,GACN,MAAO,KAAK,MAAM,EAAG,KAAK,OAAS,GAAK,KAE1C,MAAQ,OAAO,GACf,KAAO,KAAK,MAAM,EAAG,UAAU,IAC/B,MAAQ,IAAI,OAAO,UAAU,GAAK,KAAK,QAEzC,QAAQ,MAQV,oDAIE,gBACA,IACE,YAAc,KAAK,UAAU,MAAM,wBAEnC,YAAc,WAGhB,SAAa,MAAM,eACD,MAAM,sBAEpB,CAAC,GAAG,SAAS,aAAc,YAAa,MAAM,cAAc,YAChE,SAAS,OAAQ,UAAW,SAM9B,iFAIE,gBACA,IACE,YAAc,KAAK,UAAU,MAAM,wBAEnC,YAAc,WAGhB,gBAA8B,GAC9B,gBAAmB,OAAM,cACvB,GAAI,eAAiB,MAAQ,cAAc,OAAS,GAChD,cAAc,QAAQ,SAAU,GAClC,SAEF,UAAa,EAAG,EAAI,MAAK,cAAc,OAAQ,EAAE,GAC/C,iBAAqB,MAAK,cAAc,GAAG,uBACjB,MAAK,YAAY,sBAChB,MAAK,cAAc,GAC9C,YAAY,KACR,GAAG,gBAAgB,sBAAsB,wBAGjD,SAAa,MAAM,eACD,MAAM,+BACA,YAAY,SAAW,EAAI,GAAK,YAAY,UAC3C,CACvB,GAAG,SAAS,aAAc,YAAa,MAAM,cAAc,WAC3D,iBAGF,SAAS,OAAQ,UAAW,SAC5B,UAAa,EAAG,EAAI,YAAY,OAAQ,EAAE,EACxC,SAAS,CAAC,GAAI,GAAI,GAAI,YAAY,IAAK,UAAW,SCzLtD,uDAEE,MAAQ,OAAQ,gBAAkB,MAAQ,gBAClC,MAAQ,gBACZ,QAAU,GAAK,MAAO,QAAU,SAShC,iDAEJ,GAAI,iBAAmB,KACrB,MAAO,MACF,GAAI,MAAO,iBAAmB,SACnC,MAAqB,aAAY,gBAC5B,GACF,MAAO,iBAAmB,UAC1B,MAAO,iBAAmB,UAC7B,MAAO,gBACF,GAAI,yBAA0B,QACnC,YAAgB,eACI,eAAe,OACnC,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,SAAa,eAAe,GACxB,6BAA6B,IAAK,EAAG,MACvC,QAAQ,KAAK,MAEb,QAAQ,KAAK,oBAAoB,KAAM,MAG3C,MAAO,cAEP,WAAyC,GACzC,sBAA0B,QAAO,KAAK,iBACpC,kBAAsB,eAAe,aACrC,GAAI,cAAgB,QAAU,MAAO,gBAAkB,SAIrD,OAAO,aAAe,mBAEtB,UAA4B,YAAY,aACxC,OAAO,OAAS,oBAAoB,cAAe,QAGvD,MAAO,SAUL,2CAEJ,GAAI,UAAa,KACf,MAAO,MACF,GAAI,MAAO,WAAa,SAC7B,MAAqB,aAAY,UAC5B,GACF,MAAO,WAAa,UAAc,MAAO,WAAa,UACzD,MAAO,UACF,GAAI,mBAAoB,QAC7B,YAAgB,eACI,SAAS,OAC7B,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,SAAa,SAAS,GAClB,6BAA6B,IAAK,EAAG,MACvC,QAAQ,KAAK,MAEb,QAAQ,KAAK,oBAAoB,KAAM,MAG3C,MAAO,cAEP,WAAyC,GACzC,gBAAoB,QAAO,KAAK,WAC9B,YAAgB,SAAS,aACG,YAAY,OACnC,AAAA,SAAU,QAAU,QAAU,cAC/B,MAAO,UAAY,SAIrB,OAAO,OAAS,QAEhB,OAAO,OAAS,oBAAoB,QAAS,OAGjD,MAAO,SC1HX,aAAgB,QCuBhB,0CAEE,GAAI,IAAI,OAAS,MAAQ,IAAI,QAAU,IAAI,MAEzC,MAAO,KAET,IAEE,MAAO,MAAK,IAAK,IAAI,kBAGrB,KAAM,IAAI,YACN,0BAA0B,IAAI,mDACf,IAAI,UAAU,IAAI,YAvCzC,aAAA,MAiEE,mBACE,GAVM,KAAA,SAAmC,GACnC,KAAA,QAAkC,GAClC,KAAA,QAAoC,GAQtC,gBAAiB,UACnB,aAAiB,OAAM,SACrB,KAAK,SAAS,IAAM,MAAM,SAAS,IAC/B,KAAM,OAAM,SACd,MAAK,QAAQ,IAAM,MAAM,QAAQ,UAIrC,GAAI,OAAS,KACX,OAEF,eAAmB,OACjB,KAAK,IAAI,KAAK,IAAK,KAAK,QAe9B,oBACE,GAAI,KAAK,SAAS,IAAI,KAAO,KAC3B,KAAK,SAAS,IAAI,IAAM,wBAAwB,IAAK,OACrD,KAAK,QAAQ,IAAI,MAAQ,IAAI,GACzB,MAAQ,MACV,MAAK,QAAQ,IAAI,IAAM,UAGzB,MAAM,IAAI,YAAW,uBAAuB,IAAI,YAAY,IAAI,MAElE,MAAO,MAQT,cACE,KAAK,IAAI,KAAK,IAAK,KAAK,OAO1B,YACE,MAAO,MAAK,SAAS,IAAI,KAAO,KAMlC,QACE,MAAO,QAAO,KAAK,KAAK,SAU1B,cACE,GAAI,cAAe,iBACjB,GAAI,KAAK,SAAS,IAAI,KAAO,KAC3B,KAAM,IAAI,YAAW,oBAAoB,IAAI,QAE7C,MAAO,MAAK,SAAS,IAAI,SAG3B,OAAW,KAAK,QAAQ,KACxB,GAAI,IAAM,KACR,KAAM,IAAI,YAAW,yCAAyC,OAEhE,MAAO,MAAK,SAAS,KAWzB,aACE,GAAI,cAAe,iBACjB,GAAI,KAAK,SAAS,IAAI,KAAO,KAC3B,KAAM,IAAI,YAAW,oBAAoB,IAAI,QAE7C,MAAO,MAAK,QAAQ,IAAI,SAG1B,OAAW,KAAK,QAAQ,KACxB,GAAI,IAAM,KACR,KAAM,IAAI,YAAW,yCAAyC,OAEhE,MAAO,MAAK,QAAQ,KAKxB,eACM,KAAK,SAAW,MAClB,QAAQ,KAAK,wBAOkD,yBAIH,GA2C5D,gDAIJ,cAA0B,QAAU,KAAO,GAAQ,OAAO,sBAErC,MAAM,QAAQ,oBAE/B,aAAe,QAA8B,CAAC,qBAE9B,WAAW,IAAI,GAAK,EAAE,mBACX,aACb,SAAS,QAC3B,qBAAyB,aACnB,UAAU,QAAQ,cAAgB,GACpC,aAAa,KAAK,SAAS,SAAS,aAEpC,aAAa,KAAK,MAIlB,OAAS,MAEX,OAAM,cAAgB,UACtB,MAAM,cAAgB,UAIxB,oBACI,YAAY,KAAK,KAAO,IAAM,SAAS,QAAQ,KAAK,4BAGxD,GAAI,aAAa,kBAAoB,MAGnC,QAAY,qCAAqC,WAAY,UAC7D,OAAS,IAAI,OACb,gBAAkB,IAAI,gBAGtB,aAAa,iBAAmB,OAChC,sBAAsB,iBAAmB,gBAE3C,OAAS,aAAa,iBACtB,gBAAkB,GACb,WACH,OAAO,OAAO,gBAAiB,sBAAsB,kBAGvD,qBAAyB,GAAI,UAAS,UAGtC,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,GACnC,GAAI,OAAS,MAEX,eAAmB,SAAS,WACxB,WAAa,MAAM,eACrB,OAAM,cAAgB,YAEpB,WAAa,MAAM,eACrB,OAAM,cAAgB,YAI1B,aAAiB,OAAO,YACP,SAAS,YAC1B,GAAI,mBAAoB,YACtB,SAEF,gBAA8B,cACD,oBACM,cAElB,GACjB,iBAAoB,UAAS,QAC3B,UAAc,iBAAiB,SAAS,aAC3B,iBAAiB,QAAQ,QACtC,YAAY,KAAK,OACjB,WAAW,KAAK,MACZ,MAAQ,MACV,YAAa,IAEV,WACH,iBAAgB,OAAM,QAClB,gBAAgB,OAAM,QAAU,GAAK,CAAC,SAAS,OAAO,SACtD,YAAY,QAAQ,OAAM,QAAU,IAAM,CAAC,MAAM,YACjD,OAAM,YAAY,WAAa,IACjC,iBAAiB,KAAK,QAKxB,YACF,QAAS,QAAU,GACnB,OAAO,KAAU,WAAW,IAE9B,kBACI,OAAO,SAAS,MAAM,YAAa,oBACL,KAC9B,SAAS,iBACX,YAAa,SAAS,YAAY,YAAa,aAEjD,iBAAqB,eAAe,gCAEhC,MAAM,QAAQ,cAAgB,aAAe,CAAC,cAClD,WAAa,EAAG,GAAI,sBAAsB,OAAQ,EAAE,IAC7C,iBAAiB,OAAO,sBAAsB,MACjD,iBAAiB,IACb,sBAAsB,IAAI,cAAc,IACxC,MAAM,QAAQ,YAAc,WAAW,GAAK,YAElD,UAAc,YAAY,QAAQ,sBAAsB,IAAG,MACvD,QAAU,IACZ,cAAa,OAAS,cAAc,KAInC,WAEH,QAAQ,kBAQZ,MAAA,kBAAiB,eAEV,aAAe,aAAe,aAAa,GAsBpD,gEAGE,aAAK,OACD,SAAW,MAAQ,QAAQ,OAAS,EACpC,IAAM,yCAEV,gBAAoC,qBACE,GACtC,GAAI,QAAQ,SAAW,GAErB,QACI,gDAAgD,QAAQ,GAAI,UAChE,YAAc,IAAI,OAClB,kBAAoB,IAAI,kBAExB,YAAgB,GAAI,KACpB,iBAAoB,UAClB,IAAO,OAAQ,cACX,gDAAgD,OAAO,UAG3D,yBAA6B,QACtB,QAAQ,IAAI,eAAe,OAC9B,aAAY,KAAK,gBACjB,QAAQ,IAAI,eAAe,OAK/B,eAAmB,cACb,kBAAkB,OAAS,MAC7B,mBAAkB,MAAQ,GAAI,MAEhC,aAAa,MAAM,QACf,WAAa,kBAAkB,MAAM,IAAI,aAInD,MAAO,CACL,OAAQ,YACR,gBAAiB,oBAAoB,oBAIzC,2CACE,oBAAyC,GACzC,eAAmB,cACjB,gBAAgB,MAAQ,aAAa,MAAM,KAE7C,MAAO,iBAcH,0EAGJ,YAAgB,GAAI,YACa,gBACE,GAKnC,cAAkB,UAAS,QACzB,QAAQ,IAAI,KAGd,WAAgC,SACR,GAKxB,IAFA,OAAM,KAAK,QAEJ,OAAM,OAAS,IACpB,QAAY,OAAM,OAAM,OAAS,GACjC,GAAI,QAAQ,IAAI,IAAI,OAClB,OAAM,MACN,SAEF,gBAAoB,MAAM,MAAM,OAAS,KAAO,OAAM,OAAS,EAC/D,GAAI,IAAI,OAAO,SAAW,GAAK,YAE7B,OAAM,MACN,OAAO,KAAK,KACZ,QAAQ,IAAI,IAAI,MACZ,aACF,MAAM,WAKR,MAAM,KAAK,OAAM,OAAS,GAC1B,iBAAoB,KAAI,QAQtB,GALI,aAAa,OAAM,OAAS,MAC9B,cAAa,OAAM,MAAQ,GAAI,MAEjC,aAAa,OAAM,MAAM,IAAI,IAAI,MAE7B,QAAQ,IAAI,OAAM,MACpB,SAEF,OAAM,KAAK,UAIjB,MAAO,CAAC,OAAQ,cASlB,gCAEE,iBACA,GAAI,OAAM,YAAY,aAAa,SAAW,EAC5C,aAAe,OAAM,YAAY,YAEjC,cAAwB,KACxB,UAAa,EAAG,EAAI,OAAM,YAAY,aAAa,OAAQ,EAAE,EAC3D,uBAA2B,QAAM,YAAY,aAAa,GAChD,cACR,GAAI,aAAa,KAAO,OAAM,IAC5B,UAAY,EACZ,MAIN,aAAe,OAAM,YAAY,YAAY,WAE/C,MAAO,cCjhBT,cAAA,aA6CwC,OAoCtC,kBAEE,MAAM,IAEN,GAtBF,KAAA,eAAiB,GAAI,KAqBnB,KAAK,KAAO,KAAK,KACb,KAAK,MAAQ,MACf,WAAe,KAAK,eAAe,cACnC,KAAK,KAAO,OAAO,QAqBrB,GAlBA,KAAK,gBAAkB,GACvB,KAAK,WAAa,GAKd,MAAM,QAAQ,KAAK,QACrB,KAAK,OAAS,KAAK,OAAO,QAE1B,KAAK,OAAS,CAAC,KAAK,QAElB,MAAM,QAAQ,KAAK,SACrB,KAAK,QAAU,KAAK,QAAQ,QAE5B,KAAK,QAAU,CAAC,KAAK,SAIL,QAAO,KAAK,QAAQ,SAAW,KAAK,OAAO,OAC3D,KAAM,IAAI,YACN,mGAEG,KAAK,OAAO,IAAI,GAAK,EAAE,SAId,QAAO,KAAK,SAAS,SAAW,KAAK,QAAQ,QAC7D,QAAQ,KACJ,qGAEG,KAAK,QAAQ,IAAI,GAAK,EAAE,SAOjC,KAAK,YAAc,GACnB,KAAK,uBAAyB,GAC9B,KAAK,yBAA2B,GAKhC,KAAK,aAAe,GACpB,KAAK,wBAA0B,GAC/B,KAAK,0BAA4B,GAKjC,KAAK,OAAS,GAMd,KAAK,sBAAwB,GAe7B,YAAgB,MAAK,SACnB,UAAc,EAAE,sBACE,EAAE,sBACA,EAAE,YACtB,KAAK,aAAa,KAAK,OACvB,KAAK,wBAAwB,KAAK,WAClC,KAAK,0BAA0B,KAAK,aAMtC,YAAgB,MAAK,QACnB,UAAc,EAAE,sBACE,EAAE,sBACA,EAAE,YAKR,QAAO,YAAc,EAAG,4BACxB,QAAO,cAAgB,EAAG,8BACxC,KAAK,YAAY,KAAK,OACtB,KAAK,uBAAuB,KAAK,WACjC,KAAK,yBAAyB,KAAK,aAIrC,KAAK,WAAa,GAClB,KAAK,YAAc,GACnB,KAAK,gBAAkB,GACvB,KAAK,eAAiB,GACtB,KAAK,gBAAkB,GACvB,UAAa,EAAG,EAAI,KAAK,YAAY,OAAQ,KAC3C,UAAc,KAAK,YAAY,GAE/B,GAAI,CAAE,iBAAiB,aACrB,KAAM,IAAI,WACN,8EACoB,KAAK,iBAChB,0CACU,MAAM,mBAE/B,KAAK,WAAW,KAAK,MAAM,MAC3B,KAAK,gBAAgB,KAAK,MAAM,iBAEhC,KAAK,eAAe,KAAK,MAAM,MAEjC,gBAAoB,MAAK,aACvB,KAAK,YAAY,KAAK,MAAM,MAG9B,KAAK,oBAAsB,KAAK,OAAO,IAAI,GAAK,EAAE,OAClD,KAAK,qBAAuB,KAAK,QAAQ,IAAI,GAAK,EAAE,OAOpD,gBAAgD,gBAED,gBACG,kBAEC,gBACD,0BACX,mBAqBnC,0EAEM,AAAA,QAAS,MAAQ,WAAa,MAAQ,aAAe,OACvD,OAAQ,UAAO,YACf,UAAY,UAAO,UACnB,YAAc,UAAO,aAEvB,UAAa,MAAM,aAAa,WAGhC,GAAI,iBAAgB,QAAQ,SAAU,GACpC,KAAM,IAAI,cACN,cAAc,UAAO,kBAAkB,MAAM,6BAKnD,GAAI,eAAc,QAAQ,SAAU,GAClC,OAIF,KAAK,eAAe,IAAI,UAAU,QAAQ,MAAO,YAG3C,MAAM,KAAM,eAChB,cAAa,MAAM,IAAM,OAAO,KAAK,cAAc,QAGjD,iBAAgB,QAAQ,SAAU,IACpC,iBAAgB,KAAK,OAIvB,qBAAyB,MAAK,cAAc,OAC5C,UAAa,EAAG,EAAI,iBAAkB,KACpC,MAAU,MAAK,aAAa,UACd,MAAK,cAAc,cACf,MAAK,YAAY,gBACf,MAAK,cAAc,GACvC,gBACI,EAAG,eAAe,iBAAiB,OAAO,WAC1C,cAGN,IADA,eAAc,KAAK,OACZ,iBAAgB,QAAQ,QAAS,GACtC,iBAAgB,OAAO,iBAAgB,QAAQ,OAAO,GAExD,uBAAuB,KAAK,sBAGJ,mBACE,GAChC,YAAgB,MAAK,QACnB,gBAAgB,EAAG,cAAe,iBAGpC,mCACI,uBAAuB,QAAQ,UACnC,gBAAmB,iCACjB,aAAa,MAAK,IAAM,MAElB,MAAK,KAAM,cACf,aAAY,MAAK,IAAM,GAEzB,UAAY,YAAY,MAAK,kBAIxB,aAAa,MAAK,cAAc,KAAO,KACnC,EACA,aAAa,MAAK,cAAc,IAOzC,MAAQ,KAAK,IAAI,MAAO,eACxB,aAAa,MAAK,cAAc,IAAM,MACtC,eAAe,MAAK,cAAc,IAAM,MAAK,cAC7C,YAAY,MAAK,IAAM,MAGvB,UAAa,EAAG,EAAI,MAAK,cAAc,OAAQ,KAC7C,iBAAqB,MAAK,cAAc,aACtB,MAAK,YAAY,eACf,aAAa,aAAa,0BAEzC,YAAY,YAAY,KAAO,KAAO,EACA,YAAY,YAAY,IACnE,YAAY,YAAY,IAAM,KAAK,IAAI,MAAQ,EAAG,gBAClD,aAAa,YAAY,IAAM,aAKnC,iBAAgD,GAChD,iBAAqB,cACnB,UAAc,YAAY,QACpB,QAAS,eACb,cAAa,OAAS,IAExB,aAAa,OAAO,KAAK,aAAa,SAIxC,kBAAkD,GAClD,kBAAsB,eACpB,UAAc,aAAa,SACrB,QAAS,gBACb,eAAc,OAAS,IAEzB,cAAc,OAAO,KAAK,eAAe,UAI3C,cAAgB,OAAO,KAAK,eACP,IAAI,GAAK,SAAS,EAAG,KACrB,KAAmB,sBAGxC,KAAK,OAAS,GACd,gBAAoB,YAClB,mBAAuB,cAAc,OAGrC,eAAe,KAAK,QAClB,WAAe,aAAa,EAAE,WACf,aAAa,EAAE,IAC9B,MAAI,QAAS,OACJ,GAEL,OAAS,OACJ,EAEF,IAET,gBAAoB,gBACd,gBAAiB,YACnB,KAAK,sBAAsB,KAAK,OAElC,KAAK,OAAO,KAAK,OAGrB,KAAK,cAAgB,cAGrB,UAAY,OAAO,KAAK,cACP,IAAI,GAAK,SAAS,EAAG,KACrB,KAAmB,sBAKpC,sBAA0B,KAAK,OAAO,gCAGI,GAC1C,gBAAoB,WAClB,gBAAmB,cAAa,QAC9B,UAAc,MAAK,cACnB,GAAI,OAAS,MACX,YAAgB,OAAK,aACnB,GAAI,kBAAkB,QAAQ,KAAO,GACnC,KAAM,IAAI,cACN,sDAAsD,eACxC,MAAM,qEAEV,2BAGlB,YAAgB,OAAK,cACnB,kBAAkB,KAAK,GAEzB,wBAAwB,KAAK,MAAM,OAMzC,KAAK,aAAe,aAIpB,aAAiB,KAAK,OAAO,IAAI,GAAK,EAAE,MACxC,eAAmB,WACjB,mBAAuB,SAAS,OAAO,GAAK,IAAM,MAAM,OACxD,GAAI,iBAAmB,EACrB,KAAM,IAAI,cACN,aAAa,iBAAiB,qFAE9B,KAAK,UAAU,WAQvB,KAAK,cAAgB,GAErB,KAAK,aAAe,GAKpB,GAAI,MAAK,CACP,cAAe,KACf,cAAe,GACf,YAAa,GACb,cAAe,GACf,aAAc,KAAK,OACnB,cAAe,KAAK,QACpB,WAAY,KAAK,OAAO,IAAI,GAAK,MACjC,YAAa,KAAK,QAAQ,IAAI,GAAK,MACnC,YAAa,KAAK,OAAO,IAAI,GAAK,EAAE,OACpC,aAAc,KAAK,QAAQ,IAAI,GAAK,EAAE,SAExC,KAAK,MAAQ,GACb,KAAK,UAAY,EAGT,oBACR,GAAI,KAAK,YAAc,EACrB,KAAM,IAAI,OAAM,cAAc,KAAK,8BA8BvC,UACE,KAAK,oBACL,WACoB,CAAC,qBAAsB,KAAM,qBAAsB,GACvE,GAAI,EAAE,KAAK,YAAc,GACvB,gBAAoB,MAAK,OACvB,OAAO,sBAAwB,MAAM,UAAU,qBAKjD,qBAAwB,MAAK,sBAC3B,OAAO,sBAAwB,WAAU,UAAU,qBAGvD,MAAA,QAAO,qBAAuB,KAAK,UAC5B,UAGL,aACF,MAAO,MAAK,cAGV,sBACF,KAAK,OAAO,QAAQ,QAEhB,MAAc,kBACX,QAAQ,GAAK,EAAE,UAAY,aAElC,KAAK,WAAa,aAGhB,oBAIF,GAAI,KAAK,kBAAkB,OAAS,EAClC,KAAM,IAAI,YACN,wNAMN,GAAI,CAAC,KAAK,UACR,MAAO,GAET,YAA+B,GAC/B,gBAAoB,MAAK,OACvB,QAAU,QAAQ,OAAO,MAAM,kBAEjC,MAAO,YAGL,uBACF,YAAiC,GACjC,gBAAoB,MAAK,OACvB,QAAQ,KAAK,GAAG,MAAM,qBAExB,GAAI,CAAC,KAAK,WACR,qBAA0C,GAC1C,gBAAoB,MAAK,OACvB,iBAAiB,KAAK,GAAG,MAAM,kBAEjC,MAAO,kBAAiB,OAAO,SAEjC,MAAO,YAGL,WACF,MAAO,MAAK,iBAAiB,OAAO,KAAK,qBAkB3C,2BAA8C,IAC5C,iBAAsD,qBAC9B,EACxB,gBAAoB,MAAK,OACvB,iBAAqB,OAAM,SACzB,GAAI,aAAa,OAAO,eAAiB,KACvC,KAAM,IAAI,YAAW,0BAA0B,OAAO,gBAExD,aAAa,OAAO,cAAgB,OACpC,oBAIJ,sBAA0D,GAC1D,eAAmB,UAIjB,kBAAoB,KACpB,GAAI,aAAa,OAAS,MACxB,WAAe,KAAK,MAAM,sBAEtB,OAAO,MAAM,EAAG,IAAI,OAAO,CAAC,OAAO,OAAO,OAAS,KACvD,cAAgB,iBAAiB,KAAK,KAExC,GAAI,aAAa,gBAAkB,KACjC,kBAAkB,KAAK,CAAC,aAAa,eAAgB,QAAQ,gBACpD,OACT,KAAM,IAAI,YACN,gDAAgD,QAEtD,MAAO,cAAa,eAGtB,GAAI,QAEF,eAA6B,GAC7B,eAAmB,cACjB,WAAW,KAAK,MAElB,GAAI,WAAW,OAAS,EACtB,KAAM,IAAI,YACN,GAAG,WAAW,aACV,0CACD,cAIX,cAAc,mBAON,gBACR,cAAkB,KAAK,wBACuB,GAC9C,MAAA,aAAY,UAAe,KAAK,eAChC,YAAY,OAAY,UACxB,YAAY,aAAkB,eAAe,WAG7C,YAAY,QAAa,gBAClB,YAeT,2BAAoC,IAClC,gBAAoB,oBAAoB,KAAK,iBAC7C,MAAO,cAAe,KAAK,UAAU,aAAe,YAgBtD,oBACE,MAAO,MAAK,KACV,OAAuB,OAAO,QAC9B,aAAiB,GAAI,UACrB,UAAa,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,EACxC,SAAS,IAAI,KAAK,OAAO,GAAI,OAAO,IAEtC,MAAO,SAAQ,KAAK,QAAS,SAAU,UAa3C,yBAEE,MAAO,MAAK,KACV,OAAuB,OAAO,QAC9B,UACA,MAAI,OAAQ,KACV,MAAsB,aAAa,KAAM,OAAO,QAEhD,MAAsB,OAAO,MAGxB,KAAK,iBAAiB,OAAQ,OAAO,KAahD,+BACE,gBAAgC,mBAAmB,YACnD,GAAI,YAAY,SAAW,KAAK,YAAY,OAC1C,KAAM,IAAI,YACN,+BAA+B,yBAClB,KAAK,YAAY,yBAIpC,yBAA0D,GAC1D,UAAa,EAAG,EAAI,YAAY,OAAQ,KACtC,UAAc,KAAK,YAAY,eACZ,YAAY,YAGd,MAAM,KAAO,OAC9B,qBAAqB,UAAY,YAGnC,cAAkB,OAAO,KAAK,KAAK,cACZ,IAAI,GAAK,SAAS,EAAG,KACrB,KAAmB,sBAE1C,GAAI,UAAU,OAAS,EACrB,gBAAoB,YAClB,UAAc,KAAK,aAAa,OAChC,gBAAmB,QAEjB,UAAc,MAAK,cACnB,GAAI,KAAK,YAAY,IAAI,GAAK,EAAE,IAAI,QAAQ,MAAM,MAAQ,GAExD,SAGF,iBAA6B,GAC7B,UAAa,EAAG,EAAI,MAAK,cAAc,OAAQ,KAC7C,iBAAqB,MAAK,cAAc,cACtB,MAAK,YAAY,eACf,MAAK,cAAc,YACtB,GAAG,aAAa,QAAQ,cAAa,0BACnC,qBAAqB,UACxC,aAAY,KAAK,aAGnB,gBAAoB,MAAM,mBACR,iBAAiB,6BAEF,mBAAmB,uBAClC,MAAM,aAAa,QAAQ,OAC7C,UAAa,EAAG,EAAI,cAAa,OAAQ,KACvC,aAAiB,GAAG,MAAM,QAAQ,aAAa,IAC/C,qBAAqB,UAAY,cAAa,KAOtD,iBAA8B,mBACI,GAClC,UAAa,EAAG,EAAI,KAAK,aAAa,OAAQ,KAC5C,UAAc,KAAK,aAAa,aACd,KAAK,wBAAwB,eAC3B,KAAK,0BAA0B,YAClC,GAAG,MAAM,QAAQ,aAAa,cAC/C,gBAAgB,KAAK,UAGvB,UAAa,EAAG,EAAI,gBAAgB,OAAQ,KAC1C,QAAY,gBAAgB,GACd,QAAO,MAAO,uBAC5B,aAAa,KAAK,qBAAqB,MAIzC,MAAqB,kBAAiB,cAa9B,+BAEJ,OAAS,MACX,OAAsB,aAAa,KAAM,OAAO,SAQlD,cAA0D,GAC1D,UAAa,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,GACxC,MAAU,KAAK,OAAO,KACZ,OAAO,QACJ,MAAM,GACnB,UAAU,EAAE,IAAM,CAAC,EAAG,MAGxB,cAAkB,OAAO,KAAK,KAAK,cACZ,IAAI,GAAK,SAAS,EAAG,KACrB,KAAmB,sBAC1C,gBAAoB,YAClB,UAAc,KAAK,aAAa,OAChC,gBAAmB,QAEjB,UAAc,MAAK,oCACW,MAAK,oCACJ,MAAK,2BAKf,GAAI,OACzB,YAAgB,uBACV,EAAE,KAAM,YACV,aAAa,KAAK,UAAU,EAAE,KAGlC,GAAI,aAAa,SAAW,sBAAsB,QAEhD,WAAqB,6DASrB,GAHI,MAAK,UAAY,MACnB,QAAS,MAAK,UAEZ,aAAa,SAAW,GAC1B,iCAAuC,aAAa,GAChD,OAAO,MAAW,MACpB,QAAO,KAAU,cAEnB,eACkB,OAAO,MAAM,KAAK,eAAgB,SACpD,aAA4B,OACxB,MAAM,YAAY,eAAgB,eACtC,gBAAkB,CAAC,gBACnB,cAAgB,CAAC,kBAEjB,iBAAkB,aAAa,IAAI,GAAK,EAAE,IAC1C,cAAgB,aAAa,IAAI,GAAK,EAAE,IACpC,OAAO,MAAW,MACpB,QAAO,KAAU,eAEnB,eACkB,OAAO,MAAM,KAAK,gBAAiB,SACrD,aAA4B,OACxB,MAAM,YAAY,gBAAiB,gBAGzC,GAAI,MAAM,oBACR,KAAM,IAAI,qBACN,yHAMN,UAAa,EAAG,EAAI,uBAAuB,OAAQ,EAAE,GACnD,MAAU,uBAAuB,KACvB,eAAc,QACX,aAAY,GACzB,UAAU,EAAE,IAAM,CAAC,EAAG,SAM9B,kBAAgC,eACF,gBACA,GAC9B,YAAgB,MAAK,SACL,QACV,EAAE,KAAM,WAAW,4BAA4B,EAAE,UAAU,EAAE,MACjE,oBAAuB,UAAU,EAAE,IACnC,aAAa,KAAK,UAAO,OACzB,cAAc,KAAK,WACnB,YAAY,KAAK,MAInB,MAAO,CAAC,cAAe,YAAa,cAW9B,+BACN,sBAAuD,aAEvD,gBAAoB,MAAK,QACvB,UAAY,gBAAiB,WAAY,EAAI,EAC7C,0BAA6B,EACxB,kBAAoB,MAAM,aAAa,OAAQ,qBAClD,YAAgB,UAAU,QAAQ,MAAO,mBACrC,KAAK,eAAe,IAAI,UAE1B,mBAAkB,SAAW,UAC7B,WAAa,IAInB,MAAO,mBAsBT,qBACE,GAAI,OAAS,MACX,GAAI,KAAK,OAAO,QAAU,MACxB,KAAM,IAAI,YACN,wCAAwC,6BACjC,KAAK,OAAO,oBAEvB,MAAO,MAAK,OAAO,eAGjB,MAAQ,KACV,KAAM,IAAI,YAAW,8CAIzB,gBAAoB,MAAK,OACvB,GAAI,MAAM,OAAS,KACjB,MAAO,OAGX,KAAM,IAAI,YAAW,kBAAkB,QAQzC,kBAKE,MAAO,MAAK,KACV,YAAyB,GACzB,gBAAoB,MAAK,OACvB,kBAAqB,EAAG,UAAY,MAAM,aAAa,OAClD,EAAE,WACL,YAAgB,UAAU,QAAQ,MAAO,WACrC,KAAK,eAAe,IAAI,UAC1B,QAAO,KAAK,GAAG,MAAM,mBAK3B,MAAO,WAIX,YACE,YAAyC,CAAC,KAAM,KAAK,wBAMjD,KAAK,uBAAuB,KAAK,qBAGhB,GACrB,gBAAoB,MAAK,QACvB,mBAAuB,MAAM,2BACT,MAAM,iCACG,GAC7B,0BAA6B,EACxB,kBAAoB,MAAM,aAAa,OAAQ,qBAClD,UAAa,MAAM,aAAa,2BAChB,UAAU,QAAQ,MAAO,0BAC5B,GACb,GAAI,KAAK,eAAe,IAAI,UAG1B,GAAI,MAAK,SACP,IACE,KAAK,UAAU,MAAK,UACpB,OAAS,MAAK,oBAEd,QAAQ,KACJ,SAAS,MAAM,uDAEZ,MAAK,mHAGZ,OAAS,GAGb,GAAI,MAAK,cAAc,OAAS,GAC9B,aAAiB,GACjB,UAAa,EAAG,EAAI,MAAK,cAAc,OAAQ,KAC7C,iBAAqB,MAAK,cAAc,aACtB,MAAK,YAAY,eACf,MAAK,cAAc,YACvB,UAAU,QAAQ,aAAc,wBAC7B,kBAAkB,UACjC,cAAgB,MAClB,cAAe,GAEjB,SAAS,KACL,CAAC,aAAa,KAAM,aAAc,YAAa,SAErD,qBAAqB,KAAK,YAIhC,SAAuC,GACvC,KAAK,KAAU,MAAM,KACrB,KAAK,UAAe,eACpB,KAAK,OAAY,YACjB,KAAK,aAAkB,qBACvB,aAAa,KAAK,MAEpB,QAAO,OAAY,aAEnB,gBAAoB,GACpB,UAAa,EAAG,EAAI,KAAK,YAAY,OAAQ,KAC3C,UAAc,KAAK,YAAY,aACb,KAAK,uBAAuB,WAE9B,UAAU,QAAQ,MAAO,WACzC,GAAI,CAAC,KAAK,eAAe,IAAI,SAC3B,SAEF,iBAAmB,kBAAkB,SACjC,cAAiB,MACnB,cAAe,GAEjB,gBAAoB,KAAK,yBAAyB,GAClD,YAAY,KAAK,CAAC,MAAM,KAAM,aAAc,cAE9C,QAAO,YAAiB,YAExB,iBAAqB,GACrB,UAAa,EAAG,EAAI,KAAK,aAAa,OAAQ,KAC5C,UAAc,KAAK,aAAa,aACd,KAAK,wBAAwB,WAE/B,UAAU,QAAQ,MAAO,WACzC,GAAI,CAAC,KAAK,eAAe,IAAI,SAC3B,SAEF,iBAAmB,kBAAkB,SACjC,cAAiB,MACnB,cAAe,GAEjB,gBAAoB,KAAK,0BAA0B,GACnD,aAAa,KAAK,CAAC,MAAM,KAAM,aAAc,cAE/C,MAAA,SAAO,aAAkB,aAClB,cAgBF,sCAGa,kBACC,IAGnB,kBAAoD,oBAOoB,GACxE,4CAEQ,MAAM,OAAQ,kBAGlB,iBAAiB,MAAM,MAAM,KAAK,UAFlC,iBAAiB,MAAM,MAAQ,CAAC,UAMpC,qCACE,kBAAuC,UAEvC,oBAAwB,WACtB,qBAAyB,UAAU,oBACV,UAAU,sBACR,UAAU,GAKrC,GAHA,OAAS,UAAU,IAAM,KACrB,GACA,UAAU,GACV,CAAE,oBAAoB,iBACxB,mBAAmB,MAAO,UAC1B,OAEF,iBAAqB,cAAc,kBACnC,GAAI,aAAa,aAAa,QAAU,kBACtC,mBAAmB,MAAO,UAC1B,OAEF,gBAAoB,aAAa,aAAa,kBAC9C,cAAa,KAAK,YAAY,cAAc,qBAK1C,cAAa,OAAS,GACxB,MAAM,MACY,iBAAiB,eAC/B,QAUR,iCACE,cAAkB,UAAU,WAGxB,YACI,UACA,QAAO,eAAoB,KACvB,QAAO,cACP,IACZ,MAAM,6BAA6B,gBACnC,cAAc,WAAa,MAE3B,qBACI,UAAU,aACd,iBAAiB,QAAQ,WACvB,GAAI,CAAE,oBAAoB,QACxB,KAAM,IAAI,YACN,yDACI,YAMV,mBAAmB,MAAO,YAK9B,SAAa,QAAO,sBACK,QAAO,OAChC,oBAAwB,kBACtB,aAAa,WAOf,KAAO,CAAe,cAAc,mBAClC,oBAAwB,mBACtB,UAAc,cAAc,UAAU,MACtC,GAAI,MAAM,OAAQ,mBAChB,oCAAwC,iBAAiB,MAAM,MAC/D,MAAO,kBAAiB,MAAM,MAC9B,mBAAuB,iCACrB,YAAY,MAAO,WAM3B,iBAAuC,iBACC,yBAEpC,QAAO,YACX,oBAAwB,wBACtB,cAAkB,UAAU,aACV,UAAU,eACR,UAAU,GAChB,QAAO,YAAa,gBAClC,UAAc,cAAc,8BACD,MAAM,aAAa,WAAW,cACzD,aAAa,KAAK,mBAAmB,cAEvC,2BACI,QAAO,aACX,oBAAwB,yBACtB,cAAkB,UAAU,aACV,UAAU,eACR,UAAU,GAChB,QAAO,YAAa,gBAClC,UAAc,cAAc,8BACD,MAAM,aAAa,WAAW,cACzD,cAAc,KAAK,mBAAmB,cAExC,MAAO,IAAI,KAAI,CAAC,OAAQ,aAAc,QAAS,cAAe,UAS5D,YAGF,GAAI,KAAK,UACP,KAAM,IAAI,YACN,wLAIN,gBAAoB,MAAK,OACvB,GAAI,MAAM,SACR,MAAO,GAGX,MAAO,GAST,cACE,KAAK,KACH,KAAK,OAAO,QAAQ,QAEd,MAAM,UACR,MAAM,oBCjwChB,yEAGE,eAAmB,YAAY,OAC/B,GAAI,SAAW,MAAS,MAAM,QAAQ,UAAY,QAAQ,SAAW,EACnE,MAAO,aAAY,IAAI,MAAQ,MAEjC,GAAI,aAAe,EACjB,MAAI,OAAM,QAAQ,UAAY,QAAQ,SAAW,EACxC,QACE,MAAO,UAAY,UAAY,YAAY,IAAM,SACnD,CAAE,QAA2B,YAAY,KAEzC,CAAC,SAGZ,GAAI,MAAM,QAAQ,UAChB,GAAI,QAAQ,SAAW,WACrB,KAAM,IAAI,OACN,YAAY,6BAA6B,QAAQ,wCAChB,qFAGvC,MAAO,iBAEL,MAAO,UAAY,UAAY,OAAO,KAAK,SAAS,OAAS,GAC7D,MAAQ,SAA2B,OAAO,KAAK,SAAS,KACpD,UACN,WAA8B,GAC9B,MAAA,aAAY,QAAQ,aACd,aAAc,SAChB,OAAO,KAAM,QAA2B,aAExC,OAAO,KAAK,QAGT,WAEP,MAAM,IAAI,OACN,2BAA2B,2BACrB,2CACH,yCAAyC,8BAChC,8BAA8B,KAAK,UAAU,YAiB3D,0DAGJ,MAAO,iCACH,YAAa,YAAa,eC4BhC,+EAGE,GAAI,cAAgB,MAAQ,kBAAoB,KAG9C,KAAM,IAAI,OAAM,+CAGlB,GAAI,aAAe,MAEjB,aAA2B,KAAK,KAC9B,GAAI,EAAE,MAAM,SAAW,EAErB,MAAO,GAAE,QACJ,GAAI,EAAE,MAAM,SAAW,EAC5B,GAAI,EAAE,MAAM,GAAK,GAEf,SAAa,EACb,MAAO,GAAE,OAAO,WACX,GAAI,EAAE,MAAM,KAAO,EAExB,MAAO,GAAE,QAAQ,CAAC,EAAE,MAAM,KAE1B,KAAM,IAAI,OACN,+CAA+C,EAAE,MAAM,8EAK7D,MAAM,IAAI,OACN,yCAAyC,EAAE,8FAK7B,MAAM,KAAK,KAAM,UAAS,QAChD,QAAQ,UACR,sBAAoC,GACpC,MAAA,eAAc,QAAQ,aACpB,GAAI,YAAY,aAAe,KAC7B,KAAM,IAAI,OACN,wEACa,wDAGjB,kBAAkB,KAAK,YAAY,eAIhC,SAAS,kBAAmB,eAEnC,OAAO,MAWL,qDACJ,MAAO,KAAI,QAAQ,eCHrB,kCAAsC,GAgBtC,2DAKE,yBAGuB,YACvB,GAAK,eAAe,GACpB,GAAK,eAAe,GAChB,aAAK,OACL,IAAM,MAAQ,IAAM,KACpB,IAAM,mPAIC,eAEX,gBACI,0BAA0B,QAAS,OAAM,WAAY,gBAErD,0BAA0B,SAAU,OAAM,YAAa,cAEjC,YAAY,GAAG,MAAM,GAE3C,aAAK,OACL,YAAY,SAAW,OAAM,OAAO,OACpC,IAAM,mBAAmB,OAAM,OAAO,2CACtB,YAAY,yCACrB,KAAK,UAAU,OAAM,gBAE5B,aAAK,OACL,YAAY,SAAW,OAAM,QAAQ,OACrC,IACI,mBAAmB,OAAM,QAAQ,4CACrB,YAAY,2CACrB,KAAK,UAAU,OAAM,iBAEhC,eAAkB,EAAG,OAAS,YAAY,OAAQ,SAC5C,aAAK,OACL,YAAY,QAAQ,MAAM,KAAO,UACjC,IAAM,8BACC,OAAM,WAAW,eACd,YAAY,QAAQ,MAAM,iBACnB,4BAA4B,OAAM,WAAW,OAGpE,eAAkB,EAAG,OAAS,YAAY,OAAQ,SAC5C,aAAK,OACL,YAAY,QAAQ,MAAM,KAAO,UACjC,IAAM,+BACC,OAAM,YAAY,eACf,YAAY,QAAQ,MAAM,iBACnB,4BAA4B,OAAM,WAAW,OAGpE,MAAO,CAAC,GAAI,YAAa,GAAI,aAG/B,+DAEE,GAAI,iBAAsB,QACxB,MAAO,CAAC,QACH,GAAI,MAAM,QAAQ,QACvB,MAAI,cAAK,OACL,OAAO,SAAW,MAAM,OACxB,IAAM,wBAAwB,OAAO,gCACjC,MAAM,uBAAuB,sBAAsB,UACpD,OACF,CACL,WAA6B,GAE7B,eAAmB,QACjB,GAAI,OAAO,OAAS,KAClB,KAAM,IAAI,YACN,gEACG,sBAAsB,UAE/B,OAAO,KAAK,OAAO,OAErB,MAAO,SAIX,+CAOE,GAAI,KAAK,SAAW,EAClB,KAAM,IAAI,qBACN,0DAEN,MAAO,CAAC,GAAI,KAAK,GAAI,GAAI,KAAK,IAGhC,gDAME,uBAA2B,KAAK,iBAAmB,KAyBnD,GAxBI,aAAK,OACL,OAAM,WAAa,KACnB,IAAM,kGAGN,aAAK,OACL,MAAQ,KACR,IAAM,iGAEN,aAAK,OACL,KAAK,QAAU,MAAQ,KAAK,OAAS,GAAK,OAAO,UAAU,KAAK,QAChE,IAAM,iFACkB,KAAK,UAC7B,aAAK,OACL,CAAC,oBACI,KAAK,gBAAkB,GAAK,OAAO,UAAU,KAAK,iBACvD,IAAM,uGACwC,KAAK,mBACnD,aAAK,OAEJ,KAAa,iBAAsB,KACpC,IAAM,qFAGN,OAAM,WACR,KAAM,IAAI,OACN,gEAEN,OAAM,WAAa,GAEnB,IACE,iBAAqB,KAAK,gBAAkB,iBAG5C,GAAI,aACF,GAAI,gBAAgB,KAAK,gBACnB,aAAK,OACL,KAAK,mBAAqB,MACrB,KAAK,kBAAoB,GACzB,OAAO,UAAU,KAAK,mBAC3B,IAAM,iJAGS,KAAK,0BAExB,mBAAuB,gCACnB,KAAK,gBAMT,MAAQ,eAAe,GACvB,MAAQ,eAAe,GAI3B,kBAAsB,OAAM,8BACV,OAAM,yCAGpB,aACF,gBACI,UAAU,QAAQ,OAAO,UAAU,IAAI,GAAK,OAAS,IAEzD,gBAAkB,UAAU,QAG9B,eAAkB,qBAAqB,KAAK,UAAW,KAAK,oBAC5C,KAAK,SAAW,KAAO,EAAI,KAAK,SACzC,aAAc,SAAW,mBAC5B,WAAW,QAAS,KAAK,OAAQ,KAAM,KACvC,iBAAiB,SAAS,MAC1B,KACA,aAAc,iBAClB,aAAa,SAAS,QACtB,OAAM,QAAU,QAEhB,KAAM,cAAa,eACnB,OAAM,cAAgB,GACtB,UAAY,KAAK,cAAgB,KAAO,EAAI,KAAK,0BAE9B,KAAM,UAAQ,WACjC,KAAO,MAAQ,KAAK,SAClB,cAAkC,GAClC,KAAM,cAAa,aAAa,OAChC,cAAgB,aACC,EAIjB,IAHK,oBACH,cAAe,KAAM,UAAQ,YAExB,mBAAqB,UAAY,KAAK,gBAAkB,KAC7D,gBAAoB,KAAM,cAAa,OAIvC,GAAI,oBAAsB,YAAY,MACpC,QAAQ,KACJ,uCACG,KAAK,oEAEL,mJAIA,KAAK,gBAAkB,KAAK,0FAGnC,MAGF,GAAI,YAAY,OAAS,MACvB,IAAO,GAAI,IACP,8BAA8B,OAAO,YAAY,iBACnB,GAClC,UAAU,MAAW,WACrB,UAAU,KAAU,GAAG,GAAG,MAAM,GAEhC,KAAM,cAAa,aAAa,WAAY,WAE5C,kBAAoC,GACpC,GAAI,KAAK,aAAe,MACtB,yBACI,wBAAwB,KAAK,YAAa,OAAM,aACpD,UAAa,EAAG,EAAI,qBAAqB,OAAQ,EAAE,EACjD,cAAc,KAAK,KAAM,oBACrB,GAAG,GAAI,KAAM,qBAAqB,KAK1C,QAAY,GAAG,OAAO,IAAI,OAAO,oBACpB,cAAc,KACvB,QAAQ,KACZ,UAAa,EAAG,EAAI,UAAU,OAAQ,EAAE,GACtC,UAAc,UAAU,OACZ,KAAK,GACjB,UAAU,OAAS,IACf,KAAK,KAGX,KAAM,cAAa,WAAW,WAAY,WAC1C,qBAAqB,WAErB,aACA,YAGF,GAAI,mBAAqB,WAAa,KAAK,gBAClB,YAAY,MAEnC,GAAI,cACF,YACI,gBAAgB,KAAK,gBACvB,QAAU,OAAO,KAAM,QAAM,gBACzB,KAAK,eAAgB,CAAC,QAAS,KAAK,qBAExC,QAAU,OAAO,OAAM,SAAS,MAAO,MAAO,CAC5C,UAAW,KAAK,qBAAuB,KACnC,8BACA,KAAK,oBACT,QAAS,KAGb,UAAa,EAAG,EAAI,OAAM,aAAa,OAAQ,EAAE,EAC/C,UAAU,OAAO,OAAM,aAAa,MAAQ,QAAQ,GAQxD,MAGF,GAAI,OAAM,cACR,MAKJ,GAFA,KAAM,cAAa,WAAW,MAAO,WACrC,QACI,OAAM,cACR,MAGJ,MAAA,MAAM,cAAa,aACnB,KAAM,QAAM,QAAQ,WACb,OAAM,gBAEb,OAAM,WAAa,IAKvB,yCAGE,kBAA4B,KAC5B,MAAI,MAAK,iBAAmB,KAC1B,cAAgB,KAAK,gBACZ,OAAO,SAAS,SAAQ,OACjC,eAAgB,SAAQ,MAEnB,cAKT,mCAME,MAAQ,OAAQ,UAAuB,UAAa,WAKtD,wCAEE,MAAQ,OAAQ,UAA6B,MAAS,WAGxD,qDAME,KAAO,MAAQ,GACf,eAAmB,KAAK,SAAW,OACzB,OAAM,kBACS,GACzB,GAAI,KAAK,QAAU,EACjB,KAAM,IAAI,qBAAoB,wCAG5B,aAAK,OACL,CAAC,YAAe,KAAK,QAAU,GAAK,OAAO,UAAU,KAAK,SAC1D,IAAM,wEACU,KAAK,UAAU,KAAK,YACxC,iBAAqB,qBAAqB,UACtC,SACA,KAAO,UAAuB,uBAEhB,QACN,EAEZ,KAAO,WAAa,MAAQ,KAAK,QAAU,KACzC,gBAAoB,KAAM,cAAa,OAmCvC,GAlCA,KAAW,KAAK,KACd,GAAI,YAAY,OAGd,IAAO,GAAI,IACP,8BAA8B,OAAO,YAAY,eACrC,GAAG,OAAO,cACJ,KAAK,IAAM,EAAE,UAGnC,GAFI,QAAQ,SAER,QAAU,EACZ,UAAa,EAAG,EAAI,UAAU,OAAQ,EAAE,EACtC,KAAK,KAAK,OAAO,IAIrB,cAAkB,QAAQ,GAAG,MAAM,GACnC,UAAa,EAAG,EAAI,UAAU,OAAQ,EAAE,GACtC,aAAiB,UAAU,aACT,KAAK,GACvB,KAAK,GACG,KAAK,IAAU,KAAI,KAAK,GAAQ,IAAI,UAAW,YACnD,MAAQ,GACN,QAAQ,WAGZ,QAAQ,WACZ,aAAe,UAEf,EAAE,MAEJ,MAAO,QAGL,YAAY,MACV,YACF,QAAQ,KACJ,gLAG0B,KAAK,2FAIrC,OAIJ,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,GACjC,cAAkB,KAAK,GACvB,KAAK,GAAS,IAAI,KAAK,GAAI,aACvB,QAAQ,WAGd,MAAO,kBAAiB,MCpcpB,mCACA,aAAK,OACL,UAAY,GAAK,OAAO,UAAU,WAClC,IAAM,2DACF,aAgBJ,wCAEJ,MAAI,SAAU,KACL,CAAC,MACC,MAAM,QAAQ,QAChB,OAAO,IAAI,QAAS,oBAAoB,OAAO,MAAO,KAAO,QAE7D,oBAAoB,OAAQ,MAAO,KAAO,OAiB/C,8CAEJ,MAAW,MAAK,IACV,QAAU,KACL,KACE,MAAM,QAAQ,QAChB,OAAO,IACV,QAAU,qBAAqB,OAAO,UAInC,QACH,OAAQ,QAAQ,QAAU,QAAU,QAAU,QAAQ,UAa1D,qCAEJ,WAAwC,cACvB,WACM,KACvB,KAAO,WAAa,MAClB,SAAW,WAAa,UACpB,UAAY,MACd,UAAW,MAEb,OAAO,KAAK,CAAC,WAAY,WACzB,WAAa,SAEf,MAAO,QA8BT,mKASM,WAAa,MACf,WAAY,IAEV,QAAU,MACZ,QAAS,GAEP,UAAW,MACb,UAAU,IAER,cAAgB,MAClB,cAAe,GAIjB,iBAAmB,GAKnB,GAJI,MAAQ,MAAQ,QAAU,MAC5B,cAAe,IAGb,iBAAmB,MACrB,cAAe,GACX,eAAiB,MACnB,KAAM,IAAI,YACN,oGAKR,oBACI,OAAM,gBAAgB,IAAK,UAAW,cAAe,8BAErD,iBAAmB,MACrB,YAAa,OAAM,EAAG,kBAGpB,SAAW,MACb,SAAU,GAGZ,IAAO,aAAc,SAAW,mBAC5B,WAAW,QAAS,OAAQ,aAAc,gBAAiB,cAC3D,UAAW,aAAc,iBAC7B,aAAa,SAAS,QACtB,OAAM,QAAU,QAChB,KAAM,cAAa,eACnB,OAAM,cAAgB,GAItB,cAAiB,aAAc,MAAQ,OAAQ,EAAE,OAC/C,KAAM,cAAa,aAAa,OAChC,cAAkC,GAClC,GAAI,eAAiB,KACnB,KAAM,IAAI,qBACN,8CACC,CACL,GAAI,WAAY,QACd,KAAM,IAAI,qBAAoB,0CACrB,UACT,aAAK,QAAQ,YAIf,sBAA0B,SAAS,oBAEnB,YAAY,gBAAiB,WAC7C,mBAAsB,EAAG,WAAa,QAAQ,OAAQ,EAAE,YACtD,cAAkC,GA0ClC,GAzCA,KAAM,cAAa,aAAa,WAAY,WAExC,KAAK,KACP,eAAmB,QAAQ,YAAY,YACtB,QAAQ,YAAY,YACpB,oBACI,kBAAmB,WACnB,SAAW,YAChC,UAAU,MAAW,WACrB,UAAU,KAAU,SAAW,WAI/B,aAAiB,qBAAqB,IAAK,eAC9B,EAAE,UACf,UAAa,EAAG,EAAI,UAAU,OAAQ,EAAE,GACtC,UAAc,UAAU,OACZ,KAAK,GACjB,UAAU,OAAS,IACf,KAAK,KAIX,GAAI,aAAe,QAAQ,OAAS,GAC9B,cACF,YAAgB,OAAM,SAAS,KAAM,OAAQ,WAE7C,UAAa,EAAG,EAAI,UAAU,OAAQ,EAAE,GACtC,UAAc,UAAU,OACZ,QAAQ,GAChB,KAAK,KAET,UAAU,OAAS,OAAS,QAMpC,KAAM,cAAa,WAAW,WAAY,WAC1C,qBAAqB,WAEjB,OAAM,cACR,MAKJ,kBAAkB,UAIpB,GADA,KAAM,cAAa,WAAW,MAAO,WACjC,OAAM,cACR,MAGJ,MAAA,MAAM,cAAa,aAEnB,KAAM,QAAM,QAAQ,WACb,OAAM,QAGf,0CAKyB,IACvB,GAAI,OAAM,WACR,KAAM,IAAI,OACN,gEAEN,OAAM,WAAa,GACnB,+DAOA,IACE,cAAkB,KAAK,WAAa,KAAO,GAAK,KAAK,UACrD,eAAe,WAIf,mBAAuB,oBAEnB,KAAM,QAAM,oBACR,EAAG,EAAG,KAAK,aAAc,KAAK,YAAa,eAC3C,WACR,OAAS,iBAAiB,GAC1B,QAAU,iBAAiB,GAC3B,cAAgB,iBAAiB,GAGjC,iBAAmB,UAEnB,GAAI,KAAK,gBAAkB,MAAQ,KAAK,eAAe,OAAS,GAE9D,GADA,aAAe,GACX,KAAK,eAAe,SAAW,EAEjC,UAAY,KAAK,eAAe,GAChC,UAAY,KAAK,eAAe,OAC3B,MAAI,MAAK,eAAe,SAAW,EAClC,GAAI,qBACN,iEAEE,GAAI,YACN,0GAEG,KAAK,8BAGd,oBAAuB,mBAEnB,KAAM,QAAM,oBACR,UAAW,UAAW,KACtB,KACA,gBAAgB,WACxB,KAAO,gBAAgB,GACvB,KAAO,gBAAgB,GACvB,OAAS,KAAK,OAAO,cAGnB,KAAK,iBAAmB,MAAQ,KAAK,gBAAkB,GACvD,KAAK,gBAAkB,GACzB,aAAe,GAEf,YACI,KAAK,MAAM,OAAO,GAAG,MAAM,GAAM,GAAI,KAAK,oCACpB,OAAO,GAAG,MAAM,GAC1C,KAAO,YAAY,OAAQ,QAAS,mBACpC,OAAS,YAAY,OAAQ,EAAG,SAChC,KAAO,YAAY,QAAS,QAAS,mBACrC,QAAU,YAAY,QAAS,EAAG,SAGlC,OAAS,KAAK,OAAO,UAGZ,MAAK,iBAAmB,MACjC,cAAe,IAIjB,QAAY,OAAO,OAAO,SAAS,OAAO,eAE1C,OAAM,mCAcN,kBAAsB,OAAM,8BACV,OAAM,qDAIpB,aACF,QAAM,mBACN,YAAc,OAAM,aACpB,gBACI,UAAU,QAAQ,OAAO,UAAU,IAAI,GAAK,OAAS,KAEzD,aAAc,KACd,OAAS,GACT,gBAAkB,UAAU,SAG9B,eAAkB,qBAAqB,KAAK,UAAW,KAAK,gBAChD,KAAM,SACd,OAAO,cAAe,IAAK,UAAW,UAAW,KAAK,OACtD,KAAK,QAAS,WAAW,YAAa,OAAQ,KAAK,QACnD,gBAAiB,KAAK,aAAc,KAAM,MAC9C,MAAO,aAEP,OAAM,WAAa,GAEnB,kBAAkB,OAAQ,GAC1B,kBAAkB,QAAS,GAC3B,kBAAkB,KAAkB,WACpC,kBAAkB,KAAkB,WAChC,eAAiB,MACf,QAAQ,gBAYZ,6CACJ,SAAuB,GACnB,kBAAmB,SACrB,SAAU,CAAC,UAIb,UAAa,EAAG,EAAI,QAAQ,OAAQ,EAAE,GACpC,cAAe,QAAQ,GACvB,GAAI,UAAO,OAAS,EAClB,KAAK,KAAK,YAAW,UAAQ,SACxB,GAAI,UAAO,OAAS,EACzB,KAAM,IAAI,OACN,yEAGJ,KAAK,KAAK,YAGd,MAAO,MAeH,+CAGJ,GAAI,SAAW,KACb,OAEF,iBAA+B,GAC/B,GAAI,qBAAsB,QACxB,aAAa,KAAK,WAAW,YACpB,MAAM,QAAQ,YACvB,WAAW,QAAQ,GAAK,aAAa,KAAK,EAAE,aACnC,YAAc,KAEvB,eAAmB,aACjB,cAAkB,WAAW,MAC7B,aAAa,KAAK,UAAU,IAIhC,qBAAmC,GACnC,GAAI,kBAAmB,QACjB,aAAa,QAAQ,QAAQ,MAAQ,IACvC,iBAAiB,KAAK,iBAEf,MAAM,QAAQ,SACvB,QAAQ,QAAQ,IACV,aAAa,QAAQ,EAAE,MAAQ,IACjC,iBAAiB,KAAK,aAGjB,SAAW,KAEpB,eAAmB,UACjB,cAAe,QAAQ,MACnB,aAAa,QAAQ,UAAO,MAAQ,IACtC,iBAAiB,KAAK,WAK5B,iBAAiB,QAAQ,IAClB,EAAE,YACL,EAAE,YCtkBF,yBAEJ,MAAO,aAAa,QAMhB,wBAEJ,MAAO,OAAM,QAAQ,GAMjB,uBAEJ,MAAO,CAAC,aAAa,IAAM,CAAC,YAAY,GAcpC,+DAEiC,mBAAwB,IAC7D,GAAI,OAAS,MAAQ,MAAM,SAAW,GAGpC,GAAI,MAAQ,MACV,sBAAwB,GACxB,GAAI,YAAY,OAAU,KAAkB,OAAS,EACnD,kBAAoB,WACX,WAAW,OACpB,cAAkB,MAChB,GAAI,KAAK,eAAe,MACtB,kBAAoB,GACpB,WAKJ,mBAAoB,GAEtB,GAAI,kBACF,KAAM,IAAI,YACN,6BAA6B,6CAClB,QAGnB,MAAO,GAET,GAAI,MAAQ,KACV,MAAO,OAAM,IAAI,MAAQ,MAG3B,WACA,GAAI,WAAW,OACb,KAAO,KACP,OAAS,GACT,eAAmB,QACjB,GAAI,KAAK,OAAS,KAChB,KAAM,IAAI,YACN,yBAAyB,qCACtB,SAET,OAAO,KAAK,KAAK,gBAEV,YAAY,OAErB,GADA,KAAO,KACH,KAAK,SAAW,MAAM,OACxB,KAAM,IAAI,YACN,6BAA6B,gIAEM,MAAM,sEACO,QAEtD,OAAS,UAGT,GADA,KAAO,KACH,MAAM,OAAS,EACjB,KAAM,IAAI,YACN,aAAa,2BAA2B,MAAM,4EAE1C,KAAK,SAEf,OAAS,CAAC,MAMZ,GAHA,OAAS,2BAA2B,QAGhC,QAAU,KACZ,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,GAClC,GAAI,OAAO,IAAM,KACf,SAEF,WAAc,OAAO,GACrB,GAAI,OAAM,MAAM,SAAW,OAAO,GAAG,OACnC,KAAM,IAAI,YACN,uBAAuB,6BAA6B,MAAM,cAC/C,OAAO,GAAG,iDACZ,OAAM,SAErB,UAAa,EAAG,EAAI,OAAO,GAAG,OAAQ,EAAE,GACtC,GAAI,IAAM,GAAK,CAAC,eAEd,SAEF,QAAY,OAAM,MAAM,UACT,OAAO,GAAG,GACzB,GAAI,QAAU,MAAQ,QAAU,GAAK,MAAQ,OAC3C,KAAM,IAAI,YACN,uBAAuB,6BAA6B,MAAM,qBACxC,OAAO,kCACrB,OAAM,YAKtB,MAAO,QAUH,mDAEJ,SAAa,QAAO,OAAO,IAAI,QAAS,OAAM,MAAM,KACpD,KAAK,OACL,SAAa,QAAO,QAAQ,IAAI,QAAU,OAAO,MAAM,KAGvD,GAFA,KAAK,OAED,KAAK,OAAS,EAChB,KAAM,IAAI,YACN,mFAEG,KAAK,UAAU,OAAO,IAAI,QAAS,OAAM,WAElD,GAAI,KAAK,OAAS,EAChB,KAAM,IAAI,YACN,oFAEG,KAAK,UAAU,QAAQ,IAAI,QAAU,OAAO,WAErD,GAAI,KAAK,OAAS,GAAK,KAAK,OAAS,GAAK,CAAC,aAAK,YAAY,KAAM,MAChE,KAAM,IAAI,YACN,iFACkB,KAAK,0BAA0B,KAAK,wBAc9D,uEAGE,cAAkB,CACT,kBAAyB,mBACzB,yBAET,UAAa,EAAG,EAAI,QAAQ,OAAQ,EAAE,GACpC,MAAU,QAAQ,QACL,QAAQ,SACP,aAAa,GAC3B,GAAI,MAAQ,KACV,SAEF,GAAI,OAAgB,yBACd,EAAE,MAAM,EAAE,MAAM,OAAS,KAAO,EAClC,KAAM,IAAI,YACN,2CAA2C,EAAE,iKAOrD,GAAI,UAAU,QAAQ,QAAU,IAC9B,iBAAqB,EAAE,MAAM,MAAM,eACf,MAAM,MAAM,GAChC,UAAa,EAAG,EAAI,aAAa,OAAQ,EAAE,GACzC,cAAkB,aAAa,UAChB,YAAY,GAC3B,GAAI,QAAU,MAAQ,YAAc,OAClC,KAAM,IAAI,YACN,8BAA8B,EAAE,2CACb,oGAkCjC,yDAEqB,mBAAwB,IAC3C,WACA,GAAI,MAAM,QAAQ,OAChB,GAAI,KAAK,SAAW,MAAM,OACxB,KAAM,IAAI,YACN,6BAA6B,oIAEU,MAAM,qCACzB,KAAK,sBAE/B,OAAS,UAET,GAAI,MAAM,OAAS,EACjB,KAAM,IAAI,YACN,qBAAqB,MAAM,UAAU,kFAElC,KAAK,UAAU,KAAK,WAE7B,OAAS,CAAC,MAGZ,GAAI,QAAU,KACZ,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,GAClC,GAAI,OAAO,IAAM,KACf,SAEF,WAAc,OAAO,GACrB,GAAI,OAAM,MAAM,SAAW,OAAO,GAAG,OACnC,KAAM,IAAI,YACN,uBAAuB,6BAA6B,MAAM,cAC/C,OAAO,GAAG,iDACZ,KAAK,UAAU,OAAM,UAEpC,UAAa,EAAG,EAAI,OAAO,GAAG,OAAQ,EAAE,GACtC,GAAI,IAAM,GAAK,CAAC,eACd,SAEF,QAAY,OAAM,MAAM,UACT,OAAO,GAAG,GACzB,GAAI,QAAU,MACR,SAAW,IACb,KAAM,IAAI,YACN,uBAAuB,6BACpB,MAAM,oBAAoB,KAAK,UAAU,OAAO,gCAC3B,KAAK,UAAU,OAAM,aAqBvD,8CAIJ,GAAI,UAAW,MAAQ,MAAM,QAAQ,WAAY,SAAQ,SAAW,EAClE,MAAO,aAAY,IAAI,MAAQ,IAGjC,mBAEA,GAAI,MAAO,WAAY,UAAY,MAAO,WAAY,WACpD,eAAiB,CAAC,kBACT,MAAM,QAAQ,WAAY,MAAO,WAAY,SACtD,eAAiB,aAGjB,MAAM,IAAI,WACN,kGACsC,YAG5C,GAAI,MAAM,QAAQ,gBAEhB,MAAO,aAAY,IACf,MAAQ,gBACP,CAEL,kBAA2D,GAC3D,eAAmB,cACjB,kBACI,eAAe,eAAe,MAAQ,eAAe,MAAQ,GAC5D,MAAM,QAAQ,gBACjB,eAAgB,CAAC,gBAEnB,cAAc,KAAK,eAErB,MAAO,gBA6DX,6BAAiC,2BArcjC,aAmdiC,WA4C/B,kBACE,MAAM,MACN,KAAK,WAAa,GAsCpB,qCAIwD,QAAQ,KAC9D,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,YACN,gLAIN,aAAa,KAAM,WAAY,UAAW,SAa5C,cAME,GALI,KAAK,MAAQ,MACf,MAAK,KAAO,IAEd,KAAK,KAAO,KAAK,KAEb,MAAO,MAAK,WAAc,SAC5B,KAAK,WAAwB,aAAa,KAAK,WAC/C,KAAK,iBAAmB,QAExB,GAAI,CAAE,MAAK,oBAAqB,YAC9B,KAAM,IAAI,YACN,+DAEN,KAAK,WAAa,KAAK,UACvB,KAAK,iBAAmB,GAO1B,kBAAsC,GACtC,GAAI,CAAC,MAAM,QAAQ,KAAK,OAAS,MAAO,MAAK,MAAS,UAClD,MAAO,MAAK,MAAS,YACvB,KAAK,KAAO,KAAK,KACjB,eAAmB,MAAK,KACtB,GAAI,KAAK,YAAY,QAAQ,QAAU,GACrC,KAAM,IAAI,YACN,sCAAsC,4CACD,KAAK,eAGlD,eAAmB,MAAK,YAClB,KAAK,KAAK,OAAS,MACrB,QAAQ,KACJ,WAAW,gIAEQ,wBAEzB,cAAc,KAAY,IAAI,KAAK,KAAK,gBAEjC,MAAM,QAAQ,KAAK,OAC5B,GAAI,KAAK,KAAK,SAAW,KAAK,QAAQ,OACpC,KAAM,IAAI,YACN,2FAC+B,KAAK,QAAQ,yCACrB,KAAK,SAElC,cAAkB,KAAK,KACvB,cAAgB,UAAU,IAAI,GAAY,IAAI,SAE9C,iBAA4B,IAAI,KAAK,MACrC,KAAK,QAAQ,QAAQ,IACnB,cAAc,KAAK,gBAIvB,KAAK,cAAgB,cAErB,KAAK,gBAAkB,GACvB,KAAK,iBAAmB,GACxB,KAAK,YAAc,GACnB,UAAa,EAAG,EAAI,KAAK,QAAQ,OAAQ,EAAE,GAEzC,UAAc,KAAK,qBAAqB,QAC3B,KAAK,YAAY,GAC9B,KAAK,gBAAgB,KAAK,MAC1B,KAAK,iBAAiB,KAAK,OAC3B,KAAK,YAAY,KAAK,KAAK,cAAc,IAK3C,sBAAoC,GAGpC,KAAK,QAAU,KAAK,QAEpB,KAAK,aAAe,CAAC,QACrB,KAAK,eAAiB,GAMtB,UAAU,OAAQ,KAChB,UAAa,EAAG,EAAI,KAAK,QAAQ,OAAQ,EAAE,GACzC,GAAI,kBAAkB,QAAQ,KAAO,GACnC,SAIF,iBAAqB,KAAK,cAAc,GACpC,KAAK,QAAQ,OAAS,GACxB,MAAK,eAAe,KAAK,CAAC,aAAc,IACxC,KAAK,aAAa,KAAK,KAAK,YAAY,GAAK,aAQnD,kBAAsB,eAAe,KAAK,QAAS,KAAK,0BAOpD,wCAEM,KAAK,YAAY,OAAS,GAC5B,YAAa,KAAK,YAAY,aAAe,IAAM,YAErD,KAAK,aAAa,KAAK,YACvB,KAAK,eAAe,KAAK,CAAC,aAAc,eAG9C,UAAU,SAAU,KAClB,UAAa,EAAG,EAAI,KAAK,QAAQ,OAAQ,EAAE,GACzC,GAAI,kBAAkB,QAAQ,KAAO,GACnC,SAEF,kBAAsB,cAAc,iBAId,WACpB,qBAAyB,qCAMzB,iBAAqB,WACnB,GAAI,MAAO,SAAW,UAClB,CAAC,WAAY,MAAO,eAAgB,MAAM,QAAQ,UAC9C,IACN,gBAAoB,KAAK,qBAAqB,GAE1C,YAAY,YAAY,OAAS,KAAO,GACxC,KAAK,cAAc,KAAc,mBAE/B,CAAC,WAAY,OAAO,QAAQ,UAAY,GAC1C,MAAgB,eACP,CAAC,eAAgB,MAAM,QAAQ,UAAY,IACpD,OAAgB,qBAGhB,KAAK,cAAc,KACZ,8BAGL,CAAC,WAAY,OAAO,QAAQ,UAAY,GAC1C,MAAgB,0BACP,CAAC,eAAgB,MAAM,QAAQ,UAAY,IACpD,OAAgB,gCAId,CAAC,WAAY,OAAO,QAAQ,UAAY,GAC1C,MAAgB,oBACP,CAAC,eAAgB,MAAM,QAAQ,UAAY,IACpD,OAAgB,0BAGpB,WACI,CAAC,WAAY,OAAO,QAAQ,UAAY,GAC1C,OAAS,MACA,CAAC,eAAgB,MAAM,QAAQ,UAAY,IACpD,QAAS,MAGX,iBAAmB,MACnB,WAAa,iBAAmB,YAEhC,aAAyB,KAAI,QAE7B,iBAAmB,SACnB,WACI,iBAA2B,oBAAoB,QAIrD,iBACA,UAAU,WAAY,KACpB,aAAe,mBAEjB,aAAa,EAAG,WAAY,gBAIhC,cAAc,kBAOlB,KAAK,0BAA4B,KAAK,iBAY9B,mCACR,GAAI,KAAK,2BAA6B,KACpC,OAEE,KAAK,iBAAiB,SACtB,KAAK,0BAA0B,QACjC,QAAQ,KACJ,qJAqCR,kBAE8B,IAC5B,cAAkB,KAAK,WAAa,KAAO,GAAK,KAAK,UACrD,eAAe,WAIf,mBAAuB,oBAEnB,KAAK,sBAAsB,EAAG,EAAG,eAAgB,WACrD,IAGE,QAAY,iBAAiB,GAAG,OAAO,iBAAiB,IACxD,KAAK,mBACL,MAAU,KAAK,sBAEX,KAAK,SAAS,EAAG,IAAK,UAAW,KAAK,QAAS,KAAK,OACxD,MAAO,kBAAiB,kBAExB,kBAAkB,iBAAiB,GAAI,GACvC,kBAAkB,iBAAiB,GAAI,SA0BrC,gCAEJ,MAAA,MAAK,mBACE,gBAAgB,KAAM,SAAS,MAahC,8CAEQ,SACd,eACA,GAAI,OAAS,MAEX,GADA,WAAa,KACT,WAAa,KACf,KAAM,IAAI,YACN,MAAM,yEACa,qBAEhB,KAAO,KACZ,MAAM,QAAQ,KAChB,WAAa,IAAI,GAAG,MAAM,GAE1B,WAAa,IAAI,MAAM,OAGzB,MAAM,IAAI,YACN,yDACG,iCAET,MAAO,YAUT,wBAEE,GAAI,MAAM,QAAQ,UAAY,QAAQ,SAAW,EAC/C,KAAM,IAAI,YACN,sDAGN,mBAAuB,MAAM,QAAQ,qBAEhC,eAAiB,QAAsB,CAAC,+BACf,KAAK,wBAAwB,sBAG1C,GAAI,UAIrB,GAHI,iBAAkB,SACpB,QAAS,CAAC,SAER,MAAM,QAAQ,SAChB,GAAI,OAAO,SAAW,KAAK,OAAO,OAChC,KAAM,IAAI,YACN,kCAAkC,OAAO,8DAErC,KAAK,OAAO,YAEtB,UAAa,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,EACxC,SAAS,IAAI,KAAK,OAAO,GAAI,OAAO,QAGtC,kBAAoB,MAAK,QACvB,gBAAoB,OAAO,OAAM,MACjC,GAAI,aAAe,KACjB,KAAM,IAAI,YACN,8CAA8C,OAAM,QAE1D,SAAS,IAAI,OAAO,aAKxB,mBAAuB,QAAQ,sBAAuB,UACtD,MAAO,gBAAiB,eAAiB,eAAe,GAMlD,6CAEN,0BACI,aAAa,KAAM,oBAAoB,yBACpB,oBAAoB,OAC3C,gBAAoB,MAAK,QACvB,iBACI,MAAM,QAAQ,MAAM,QAAU,MAAM,OAAS,CAAC,MAAM,yBAC/B,aAAa,IAAI,QAAU,OAAO,MAC3D,UAAa,EAAG,EAAI,oBAAoB,OAAQ,EAAE,GAChD,UAAc,iBAAiB,QAAQ,oBAAoB,IAK3D,GAJI,QAAU,IACZ,uBAAsB,GAAK,aAAa,OACxC,oBAEE,mBAAqB,EACvB,MAGJ,GAAI,mBAAqB,EACvB,MAIJ,GAAI,iBAAmB,GACrB,mBAAiC,GACjC,KAAA,uBAAsB,QAAQ,gBACxB,WAAU,MACZ,eAAe,KAAK,oBAAoB,MAGtC,GAAI,YACN,mDACG,KAAK,UAAU,mBAExB,MAAO,uBAgBD,0BAA8C,WAAc,IAElE,MAAW,MAAK,KACd,eAAmB,KAAK,gBAAgB,KACxC,GAAI,QACF,KAAM,IAAI,qBACN,iDAQN,YAAgB,YAAY,WAAY,uBACR,KAAK,QAAQ,IAAI,QAAU,IAG3D,mBAAsB,EAAG,WAAa,QAAQ,OAAQ,EAAE,YACtD,cAAsB,KAAK,KACzB,eAAmB,QAAQ,YAAY,YACtB,QAAQ,YAAY,YAGpB,YAAY,IAAK,WAAY,gBAGhC,GACd,GAAI,MAAM,QAAQ,UAChB,UAAa,EAAG,EAAI,SAAS,OAAQ,EAAE,EACrC,MAAM,KAAK,CAAC,IAAK,KAAK,OAAO,GAAI,MAAO,SAAS,SAGnD,OAAM,KAAK,CAAC,IAAK,KAAK,OAAO,GAAI,MAAO,WAE1C,aAAiB,GAAI,UAAS,OAC9B,MAAO,SAAQ,KAAK,QAAS,YAE/B,UAAU,QAAQ,cAAiB,YAAY,GAAG,KAAK,WAEzD,MAAO,kBACH,YAAY,IAAI,UAAe,OAAO,SAAS,OA+BvD,eAAqD,IACnD,oBAAwB,2BAA2B,GACnD,eACI,gBAAiB,KAAK,WAAY,KAAK,gBAAiB,IAC5D,IAKE,cAAkB,KAAK,WAAa,KAAO,GAAK,KAAK,UACrD,MAAA,gBAAe,WACR,KAAK,YAAY,gBAAiB,mBAEzC,kBAAkB,gBAAiB,IAmBvC,kBACE,eAAe,EAAG,KAAK,WAAY,KAAK,gBAAiB,IAGzD,cAAmB,OAAM,QAAQ,GAAK,EAAE,GAAK,GAAG,MAAM,GACtD,MAAO,MAAK,YAAY,EAAG,WAGnB,yCAE6D,cAGrE,GAAI,KAAK,YAAc,KACrB,KAAM,IAAI,cACN,gGAGN,iBAA8B,GAC9B,UAAa,EAAG,EAAI,KAAK,iBAAiB,OAAQ,EAAE,GAClD,gBAAoB,KAAK,iBAAiB,UAC3B,KAAK,YAAY,GAC5B,SAAkB,8BACpB,aAAa,KACT,YAAY,MAAM,EAAG,YAAY,OAAS,GAAG,OAAO,CAAC,KAGzD,aAAa,KAAK,aAWtB,GARA,EAAI,qBACA,EAAG,KAAK,eAAgB,KAAK,gBAAiB,GAAO,SACzD,EAAI,qBACA,EAAG,KAAK,gBAAiB,aAAc,GAAO,UAElD,kBAAkB,EAAG,EAAG,MAExB,gCAAgC,EAAG,KAAK,YAAa,KAAK,kBACtD,KAAK,UAAY,WAAa,MAAQ,UAAY,GAChD,EAAE,GAAG,MAAM,GAAK,YAAc,EAChC,KAAM,IAAI,YACN,mHAEG,qBAAqB,EAAE,GAAG,MAAM,iBAG3C,MAAO,CAAC,EAAG,QAGG,iEAKK,cAEnB,2BACI,KAAK,sBAAsB,EAAG,EAAG,eAAgB,WAErD,GAAI,cAAgB,KAClB,KAAM,IAAI,OAAM,uCAGlB,0BAAsC,KACtC,GAAI,aAAe,MACjB,iBACI,wBAAwB,YAAa,KAAK,aAC9C,sBAAwB,GACxB,UAAa,EAAG,EAAI,aAAa,OAAQ,EAAE,EACzC,sBAAsB,KAClB,KAAM,oBAAmB,WAAW,GAAI,KAAM,aAAa,KAKnE,MAAO,CAAC,WAAY,WAAY,uBAc1B,iCAEM,SACZ,MAAW,MAAK,KACd,eAAmB,KAAK,gBAAgB,IAAK,UAAW,MAAO,cACxC,GACvB,GAAI,QAAU,EACZ,KAAM,IAAI,qBAAoB,wCAGhC,GAAI,OAAS,KACX,KAAM,IAAI,qBACN,mDACC,CACL,YAAgB,YAAY,WAAY,sBACrB,SAAS,OAAM,EAAG,aACrC,mBAAsB,EAAG,WAAa,QAAQ,OAAQ,EAAE,YACtD,eAAmB,QAAQ,YAAY,YACtB,QAAQ,YAAY,YAE/B,oBACE,WAAY,WAAY,SAAW,qBAG1B,qBAAqB,IAAK,oBACzB,EAAE,UACpB,GAAI,aAAe,EACjB,UAAa,EAAG,EAAI,UAAU,OAAQ,EAAE,EACtC,KAAK,KAAK,OAAO,IAGrB,UAAa,EAAG,EAAI,UAAU,OAAQ,EAAE,GACtC,aAAiB,UAAU,GAC3B,KAAK,GACG,KAAI,KAAK,GAAQ,IAAI,SAAW,WAAY,YAGxD,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,EACjC,KAAK,GAAS,IAAI,KAAK,GAAI,YAG/B,MAAO,QAID,yBACR,cAAkB,KAAK,8BAGE,GACzB,UAAa,EAAG,EAAI,UAAU,OAAQ,EAAE,GACtC,UAAc,UAAU,YACT,MACf,GAAI,MAAM,UAAW,OAAS,GAC5B,aAAiB,MAAM,UAAU,MAAM,EAAG,GAAI,OAC9C,UAAY,IAAI,WAElB,iBAAiB,KAAK,UAExB,MAAO,kBAaC,oBACR,MAAO,QACL,eAA6B,UAEd,KAAK,MAAM,EAAG,KAAK,OAAO,gBACzB,KAAK,MACjB,KAAK,OAAO,OAAQ,KAAK,OAAO,OAAS,KAAK,QAAQ,sBACpC,KAAK,MACvB,KAAK,OAAO,OAAS,KAAK,QAAQ,OAClC,KAAK,OAAO,OAAS,KAAK,QAAQ,OAAS,iBAEf,qBAKN,KACxB,UAAc,GACd,UAAa,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,EACxC,MAAM,KAAK,CAAC,IAAK,KAAK,OAAO,GAAI,MAAO,OAAO,KAEjD,aAAiB,GAAI,UAAS,eAE1B,QAAQ,KAAK,QAAS,SAAU,CAAC,SAAY,eAKjD,UAAa,EAAG,EAAI,KAAK,cAAc,OAAQ,EAAE,GAC/C,iBAAqB,KAAK,cAAc,QAC7B,aAAa,QAAQ,GAAI,QAAQ,IACxC,cAAc,IAAM,MACtB,MAAO,qBAAoB,KAAM,cAAc,KAIjD,aAA6B,KAAK,MAElC,WAAW,KAAK,UACZ,IAAM,EACR,UAAY,KAEZ,UAAgB,KAAI,UAAW,MAOnC,UAAa,EAAG,EAAI,KAAK,eAAe,OAAQ,EAAE,GAChD,mBAEA,GAAI,KAAK,QAAQ,OAAS,GAAK,EAAI,KAAK,QAAQ,OAC9C,eAAiB,WAAW,QAE5B,WAAe,KAAK,eAAe,GAAG,eAClB,KAAK,eAAe,GAAG,GAC3C,eACQ,KAAK,OAAO,QAAQ,aAAc,QAAQ,eAGhD,KAAK,gBAET,cAAc,KAAK,gBAGrB,MAAA,WAAgB,KAAK,WAGrB,KAAK,kBAAkB,QAAQ,kBAC7B,UAAgB,KAAI,UAAW,mBAG1B,sBAGS,KAAK,0BAA0B,IAC7C,OAAS,MAAM,mBACA,kBAEf,KAAK,WAAW,SAAS,kBAAmB,WAAY,YAE5D,MAAO,CAAC,gBAAgB,OAAO,gBAS3B,mBACN,KAAK,aAAe,MACP,KAAK,KACd,eAA6B,oBAEd,KAAK,MAAM,EAAG,KAAK,OAAO,gBACzB,KAAK,MACjB,KAAK,OAAO,OAAQ,KAAK,OAAO,OAAS,KAAK,QAAQ,cAC5C,GACd,UAAa,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,EACxC,MAAM,KAAK,CAAC,IAAK,KAAK,OAAO,GAAI,MAAO,OAAO,KAEjD,aAAiB,GAAI,UAAS,eACd,QAAQ,KAAK,QAAS,UAEtC,UAAa,EAAG,EAAI,KAAK,cAAc,OAAQ,EAAE,GAC/C,iBAAqB,KAAK,cAAc,QAGf,KAAK,aAAa,QAAQ,GAAI,QAAQ,KAC3D,IAAM,EACR,UAAY,KAEZ,UAAgB,KAAI,UAAW,MAEjC,WAAW,KAAK,WAGlB,UAAa,EAAG,EAAI,KAAK,eAAe,OAAQ,EAAE,GAChD,WAAe,KAAK,eAAe,GAAG,eAClB,KAAK,eAAe,GAAG,cAGnC,KAAK,OAAO,QAAQ,aAAc,QAAQ,eAClD,WAAW,KAAK,YAElB,MAAO,mBAuCP,cAGmB,IACvB,MAAO,YAAW,KAAM,EAAG,EAAG,WA0B1B,2BAEJ,MAAO,YAAW,KAAM,SAAS,WA0B7B,mBAMJ,mBAAuB,KAAM,MAAK,oBAAoB,EAAG,UAC1C,eAAe,WACd,eAAe,iBACT,KAAK,4BACZ,cAAc,OAAO,OAAO,qBACd,GAC7B,eAAmB,UACjB,MAAU,KAAM,MAAK,OACrB,WAAW,KAAK,EAAE,IAEpB,MAAI,SAAQ,SACL,iBAAiB,YAYhB,yBACR,iBAAoC,iBAEd,SAAU,MAAQ,QAAO,sBAC/B,cAAgB,KAAK,iBAAmB,KAAK,qBACxC,KAAK,WAAW,eACrC,UAAa,EAAG,EAAI,QAAQ,OAAQ,EAAE,GACpC,GAAI,eAAiB,CAAC,QAAQ,GAAG,UAE/B,SAEF,aAAa,KACT,CAAC,KAAM,QAAQ,GAAG,aAAc,OAAQ,aAAa,KAE3D,MAAO,iBAiCL,oBACF,KAAK,cAAgB,QAGnB,gBACF,MAAO,MAAK,iBAGV,aACF,MAAO,MAAK,cAGV,uBACE,KAAK,aAAe,YACtB,MAAK,WAAa,WAClB,KAAK,iBAAmB,IAI5B,UACE,WAAe,MAAM,UACrB,GAAI,OAAO,uBAAyB,GAAK,KAAK,WAAa,MACvD,KAAK,kBACP,qCAA6C,SAAS,WACtD,KAAK,WAAW,UAChB,OAAO,sBACH,iCAAuC,SAAS,WAEtD,MAAO,QAGD,qBAEN,cAEA,GAAI,MAAO,MAAK,MAAS,SACvB,UAAY,YAAY,KAAK,cACpB,MAAM,QAAQ,KAAK,OAC5B,eAAmB,MAAK,KACtB,GAAI,MAAO,OAAS,SAClB,KAAM,IAAI,OAAM,sDAGpB,UAAa,KAAK,KAAkB,IAAI,MAAQ,YAAY,YAG5D,gBAAoB,OAAO,KAAK,KAAK,MACrC,UAAY,GACZ,YACI,KAAK,KACT,qBAAyB,aACvB,GAAI,MAAO,SAAO,aAAgB,SAChC,UAAU,YACN,YAAY,QAAO,iBAEvB,MAAM,IAAI,OAAM,sDAItB,MAAO,WAGD,uBAEN,GAAI,MAAO,MAAK,SAAY,UACxB,MAAO,MAAK,SAAY,WAC1B,MAAO,CAAC,YAAoB,oBAAoB,KAAK,WAChD,GAAI,MAAM,QAAQ,KAAK,SAC5B,MAAO,MAAK,QAAQ,IAChB,QAAU,YAAoB,oBAAoB,UACjD,CACL,uBAA+D,GAC/D,cAAkB,MAAK,QACrB,mBAAmB,KACf,YAAoB,oBAAoB,KAAK,QAAQ,OAE3D,MAAO,qBAID,oBACR,MAAO,CACL,KAAM,KAAK,qBACX,QAAS,KAAK,uBACd,iBAAkB,CAChB,WAAY,KAAK,UAAU,eAC3B,OAAQ,KAAK,UAAU,cAQ7B,mCACE,GAAI,eAAe,kBAAoB,KACrC,KAAM,IAAI,OAAM,gDAElB,GAAI,eAAe,cAAgB,KACjC,KAAM,IAAI,OAAM,8CAElB,GAAI,eAAe,oBAAsB,KACvC,KAAM,IAAI,OAAM,oDAGlB,aAAiB,oBAAoB,eAAe,6BAElC,YAAY,eAG9B,GAAI,MAAO,gBAAe,MAAS,SACjC,KAAO,YAAY,eAAe,cACzB,MAAM,QAAQ,eAAe,MACtC,KAAO,eAAe,KAAK,IAAI,WAAa,YAAY,oBAC/C,eAAe,MAAQ,MAChC,KAAO,GACP,cAAkB,gBAAe,KAC/B,KAAK,KAAO,YAAY,eAAe,KAAK,MAIhD,aACA,GAAI,MAAM,QAAQ,eAAe,SAC/B,SAAU,eAAe,QAAQ,IAAI,QAAU,YAAY,iBAClD,eAAe,SAAW,MACnC,SAAU,GACV,cAAkB,gBAAe,QAC/B,SAAQ,KAAO,YAAY,eAAe,QAAQ,MAItD,KAAK,QAAQ,CAAC,KAAM,QAAA,SAAS,UAAA,kBAoFzB,4BAEJ,GAAI,MAAO,eAAiB,UAC1B,aAAiB,WAAG,gBAAgB,cACpC,GAAI,SAAS,SAAW,EACtB,KAAM,IAAI,YACN,0CAA0C,iBACzC,GAAI,SAAS,OAAS,EAC3B,KAAM,IAAI,YACN,wBAAwB,SAAS,kCACzB,iBAEd,aAAe,SAAS,GAE1B,GAAI,aAAa,MAAQ,KACvB,KAAM,IAAI,YACN,gHAIN,uBACI,KAAM,YAAG,cAAc,KAAK,gBAAgB,uBAE3B,aACC,iBACF,KAAK,OAAO,UAAW,6BACD,CACxC,cAAe,YACf,OAAQ,yBACR,YAAa,8BAA8B,WAC3C,YAAa,uBAGU,SAAU,KAAO,GAAQ,QAAO,iBACzD,GAAI,kBAAoB,KAAK,WAAa,MACxC,eAAe,eAAiB,KAAK,oBACrC,eAAmB,aACZ,yBAA2B,4BAC9B,KAAM,YAAG,cAAc,KAAM,MAAK,UAAU,aAAc,YAC9D,mBAAmB,MAAM,KAAK,GAAG,sBACjC,mBAAmB,KAAO,WAAG,wBACzB,CAAC,mBAAmB,KAAM,sBAGhC,GAAI,KAAK,qBAAuB,MAE9B,cAAkB,GAClB,yBAAyB,KAAK,oBAAqB,KAAK,KAAM,WAC9D,eAAe,oBAAsB,KAAK,oBAG5C,MAAA,gBAAe,WAAa,mBAAmB,KAC/C,eAAe,YAAc,mBAAmB,MACzC,aAAa,KAAK,gBAW3B,4CACE,yBAAyB,oBAAqB,KAAK,MACnD,KAAK,oBAAsB,oBAc7B,yBACE,MAAO,MAAK,sBAv4CP,YAAA,UAAY,QA04CrB,sBAAc,cAAc,aAj2D5B,eAAA,aA02DgC,eACvB,WAAA,UAAY,aAErB,sBAAc,cAAc,YChzD5B,kEAGQ,iBAAmB,wBACvB,uBAAwB,CAAC,cAAe,wBAE1C,sBAAwB,sBAExB,kBAAoB,sBAAsB,cACtC,cAAc,cAAmB,MAMnC,eAAgB,cAAc,cAEhC,aACI,oBAAoB,sBACV,YAAY,SAAU,eAEpC,GAAI,sBAAsB,iBAAmB,MAI3C,iBAAqB,KAAM,YAAG,YAC1B,sBAAsB,gBAAiB,sBAAsB,WAC7D,OAAM,QAAQ,IAAI,QAAU,OAAO,kCAGI,GAC3C,iBAAqB,QAAM,QACzB,mBAAmB,OAAO,cACtB,aAAa,OAAO,cAG1B,OAAM,YAAY,oBAElB,QAAQ,cAEV,MAAO,QAqIT,gEAME,GAHI,SAAW,MACb,SAAU,IAER,MAAO,kBAAoB,UAC7B,aAAiB,WAAG,gBAAgB,gBAAiB,SACrD,GAAI,SAAS,SAAW,EAKtB,SAAS,KAAK,WAAG,mBAAmB,gBAAiB,kBAC5C,SAAS,OAAS,EAC3B,KAAM,IAAI,YACN,wBAAwB,SAAS,kCACzB,oBAEd,gBAAkB,SAAS,GAE7B,MAAO,8BAA6B,gBAAiB,OAAW,SAalE,2EAME,GAHI,SAAW,MACb,SAAU,IAER,QAAQ,MAAQ,KAClB,KAAM,IAAI,YACN,iHAGN,cAAkB,KAAM,SAAQ,qBACZ,UAAU,cAC1B,cAAc,cAAmB,MACnC,eAAgB,cAAc,cAGhC,WAAe,QAAQ,QAAU,KAAO,GAAO,QAAQ,sBAOnD,UAAU,YAAc,MAAQ,UAAU,aAAe,MAAQ,cAEjE,YACI,oBAAoB,eACpB,cAAe,+BAEA,UAAU,eASjC,GARI,gBAAkB,MACpB,OAAM,mBAAmB,gBAEvB,UAAU,qBAAuB,MACnC,OAAM,uBAAuB,UAAU,qBAIrC,UAAU,YAAc,MAE1B,GAAI,UAAU,aAAe,KAC3B,KAAM,IAAI,YACN,kHAIN,IAAO,aAAc,kBAAoB,+BACrC,UAAU,WAAY,UAAU,aACpC,OAAM,YAAY,aAAc,QAE5B,OAAM,WAAa,MAAQ,iBAAiB,OAAS,GACvD,KAAM,QAAM,UAAU,WAAW,kBAInC,QAAQ,cACR,QAAQ,iBAAiB,IAAI,GAAK,EAAE,SAEtC,MAAO,QAGT,uDAGE,gBAAoB,WAAG,cAAc,QAAQ,oBACR,oBACG,GACxC,MAAA,OAAM,QAAQ,OACR,KAAK,QAAU,YACjB,iBAAiB,KAAK,CAAC,KAAM,KAAK,KAAM,OAAQ,YAAY,KAAK,QAEjE,aAAa,KAAK,MAAQ,YAAY,KAAK,QAGxC,CAAC,aAAc,kBAvVxB,eAAA,aA+XgC,aAI9B,kBACE,MAAM,CAAC,OAAQ,GAAI,QAAS,KAU5B,GATA,KAAO,MAAQ,GAEf,KAAK,UAAY,GACjB,KAAK,MAAQ,GAGb,KAAK,KAAQ,KAAK,MAAQ,KAAQ,KAAK,KAAO,OAAO,eAGjD,KAAK,QAAU,KACjB,gBAAoB,MAAK,OACvB,KAAK,IAAI,OAOP,kBACN,UAAc,MAAM,aAAa,GAAG,cAAc,GAAG,MACrD,GAAI,MAAM,KAAK,GAAK,EAAI,GACtB,KAAM,IAAI,YACN,kDACG,MAAM,0BACN,MAAM,aAAa,GAAG,aAAa,GAAG,UAyBjD,WACE,yBACI,gBAAiB,aAAc,gBAAiB,wBAEpD,GAAI,sBAEF,GADA,WAAa,MACT,WAAW,QAAQ,SAAW,EAChC,KAAM,IAAI,YACN,yHAKN,GAAI,WAAW,OAAO,SAAW,EAC/B,KAAM,IAAI,YACN,uHAOR,GAAI,KAAK,QAAQ,SAAW,GAE1B,GAAI,MAAM,aAAa,SAAW,GAEhC,GAAI,MAAM,iBAAmB,KAC3B,KAAM,IAAI,YACN,iGAIN,MAAU,MAAM,CACd,WAAY,MAAM,gBAClB,MAAO,MAAM,MACb,KAAM,MAAM,KAAO,WAIrB,MAAM,MAAM,GAGd,GAAI,qBACF,KAAK,QAAU,WAAW,QAC1B,KAAK,OAAS,WAAW,YAEzB,GAAI,MAAM,aAAa,SAAW,EAChC,KAAM,IAAI,YACN,gHAEI,MAAM,kBACG,MAAM,aAAa,4CAItC,GAAI,MAAM,aAAa,GAAG,cAAc,SAAW,EACjD,KAAM,IAAI,YACN,yHAKN,KAAK,WAAW,OAChB,KAAK,QAAU,CAAC,MAAM,aAAa,GAAG,cAAc,IACpD,KAAK,OAAS,gBAAgB,KAAK,QAAQ,IAG7C,KAAK,aAAe,GAKpB,GAAI,MAAK,CACP,cAAe,KACf,cAAe,GACf,YAAa,GACb,cAAe,GACf,aAAc,KAAK,OACnB,cAAe,KAAK,QAEpB,WAA0B,aAAa,KAAM,KAAK,OAAO,QACzD,YAAa,CAAC,MACd,YAAa,KAAK,OAAO,IAAI,GAAK,EAAE,OACpC,aAAc,KAAK,QAAQ,GAAG,aAGhC,iBAAqB,MAAM,MAAM,KAAK,QAAQ,IAC9C,GAAI,MAAM,QAAQ,cAChB,KAAM,IAAI,WACN,yHAKN,KAAK,WAAW,OAChB,KAAK,QAAU,CAAC,cAEhB,KAAK,aAAa,GAAG,cAAgB,KAAK,QAC1C,KAAK,aAAa,GAAG,aAAe,CAAC,KAAK,QAAQ,GAAG,OAGvD,KAAK,OAAO,KAAK,OACjB,KAAK,MAAQ,GAQf,MACE,GAAI,KAAK,OAAO,SAAW,EACzB,KAAM,IAAI,WAAU,qCAItB,GADA,KAAK,OAAO,MACR,KAAK,OAAO,SAAW,EACzB,KAAK,QAAU,GACf,KAAK,aAAe,GACpB,KAAK,cAAgB,QAErB,mBAAuB,KAAK,OAAO,OAAS,EAC5C,KAAK,OAAO,gBAAgB,cAAgB,GAC5C,KAAK,QAAU,CAAC,KAAK,OAAO,gBAAgB,QAE5C,KAAK,aAAa,GAAG,cAAgB,KAAK,QAC1C,KAAK,aAAa,GAAG,aAAe,CAAC,KAAK,QAAQ,GAAG,QAIzD,oBACE,MAAI,MAAK,OAAS,MAChB,KAAK,QAEA,KAAK,MAAM,KAAK,OAAQ,QAGjC,kBAKE,GAFA,mBAAmB,YAEf,KAAK,OAAO,SAAW,GAAK,KAAK,QAAQ,SAAW,EACtD,KAAM,IAAI,WACN,4EAIN,KAAK,MAAQ,GAAI,aAAY,CAC3B,OAAQ,KAAK,OACb,QAAS,KAAK,QAAQ,GACtB,KAAM,KAAK,KAAO,WAEpB,KAAK,MAAM,UAAY,KAAK,UAG5B,KAAK,gBAAkB,KAAK,MAAM,gBAElC,KAAK,YAAc,KAAK,MAAM,YAC9B,KAAK,uBAAyB,KAAK,MAAM,uBACzC,KAAK,yBAA2B,KAAK,MAAM,yBAC3C,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,wBAA0B,KAAK,MAAM,wBAC1C,KAAK,0BAA4B,KAAK,MAAM,0BAC5C,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,eAAiB,KAAK,MAAM,eACjC,KAAK,YAAc,KAAK,MAAM,YAC9B,KAAK,WAAa,KAAK,MAAM,WAG7B,KAAK,MAAQ,GAGf,cACE,MAAK,MAAK,OACR,KAAK,QAEA,MAAM,cAiCf,qCAIwD,QAAQ,KACzD,KAAK,OACR,KAAK,QAEP,MAAM,QAAQ,WAAY,UAAW,SASvC,oBACM,KAAK,OAAS,MAChB,KAAK,QAEP,KAAK,MAAM,WAAW,SAmCxB,kBAE8B,IAC5B,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,cACN,qDAEN,MAAO,MAAK,MAAM,SAAS,EAAG,EAAG,WAyB7B,gCAEJ,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,cACN,qDAEN,MAAO,MAAK,MAAM,gBAAgB,SAAS,MA8B7C,eAAqD,IACnD,MAAI,MAAK,OAAS,MAChB,KAAK,QAEA,KAAK,MAAM,QAAQ,EAAG,MAU/B,kBACE,MAAI,MAAK,OAAS,MAChB,KAAK,QAEA,KAAK,MAAM,eAAe,GAQnC,cACE,KAAK,QACL,KAAK,MAAM,QAAQ,MACnB,KAAK,WAAa,KAAK,MAAM,UAE7B,KAAK,iBAAoB,KAAK,MAAc,iBAC5C,KAAK,KAAO,KAAK,MAAM,KACvB,KAAK,QAAU,KAAK,MAAM,QAG1B,KAAK,eAAiB,KAAK,MAAM,eACjC,KAAK,aAAe,KAAK,MAAM,gBAI7B,aACF,MAAO,MAAK,OAAS,KAAO,OAAY,KAAK,MAAM,aAGjD,uBACF,KAAK,MAAM,UAAY,gBAkCnB,cAGmB,IACvB,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,cACN,qDAGN,MAAO,MAAK,MAAM,IAAI,EAAG,EAAG,WAwFxB,2BAEJ,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,cACN,qDAGN,MAAO,MAAK,MAAM,WAAW,SAAS,WA0BlC,mBAIJ,MAAO,MAAK,MAAM,aAAa,EAAG,SAK7B,sCAGa,kBACC,IACnB,iCACiD,GACjD,GAAI,kBAAkB,QACpB,GAAI,CAAE,SAAO,GAAG,WAAa,OACzB,QAAO,GAAG,YAAiB,QAC7B,KAAM,IAAI,YAAW,kDAEvB,YAAc,YAEd,cAAK,OACD,QAAO,QAAa,KACpB,IACI,uHAER,YAAc,QAAO,OACrB,MAAO,SAAO,OACd,iBAAmB,QAGrB,WAAc,GAAI,KAAI,kBACtB,GAAI,CAAE,kBAAiB,aACrB,KAAM,IAAI,qBACN,yDAAyD,UAE/D,eAAmB,cACjB,yBACc,YACI,KAAkC,eAClC,gBACd,gBACF,MAAM,6BAA6B,IAErC,OAAM,IAAI,OAEZ,MAAO,WA+BL,oBAGF,GAAI,KAAK,OAAS,KAChB,KAAM,IAAI,YACN,qFAGN,KAAK,MAAM,aAAe,QAGxB,gBACF,GAAI,KAAK,OAAS,KAChB,KAAM,IAAI,YACN,qFAGN,MAAO,MAAK,MAAM,aAMpB,YAKE,WAA2C,GAC3C,gBAAoB,MAAK,QACvB,SAAuC,GACvC,KAAK,UAAe,MAAM,eAC1B,KAAK,OAAY,MAAM,YACvB,OAAO,KAAK,MAEd,MAAO,CAAC,KAAM,KAAK,KAAM,UAvsBpB,WAAA,UAAY,aA0sBrB,sBAAc,cAAc,YCtgCtB,qBACJ,MAAO,IAAI,aAAY,MA+DnB,6BACJ,MAAO,IAAI,YAAW,SA8FlB,kDAGJ,MAAI,UAAW,MACb,SAAU,IAEL,wBAAwB,gBAAiB,SA0B5C,wBACJ,MAAO,OAAM,SAGT,yEAGJ,4BAA4B,4BACxB,eAAgB,qBC5QtB,eAAA,aAwByC,uBAAc,aAErD,YACE,MAAO,UA3BX,aAmCyB,YAUvB,cAAyB,GACvB,MAAS,MAAI,EAAG,SATF,KAAA,UAAY,MAY9B,sBAAc,cAAc,MAjD5B,UAAA,aA0D0B,YAGxB,SACE,MAAW,MAAK,KAFF,MAAA,UAAY,OAK9B,sBAAc,cAAc,OAjE5B,UAAA,aAsE0B,YAGxB,SACE,MAAW,MAAK,KAFF,MAAA,UAAY,OAK9B,sBAAc,cAAc,OA7E5B,WAAA,aAkF2B,YAGzB,SACE,MAAO,MAAK,IAAU,QAAQ,EAAS,KAAK,OAF9B,OAAA,UAAY,QAK9B,sBAAc,cAAc,QAzF5B,WAAA,aA4F4B,YAG1B,SACE,MAAO,KAFO,OAAA,UAAY,SAK9B,sBAAc,cAAc,QAnG5B,aAAA,aAwG6B,YAG3B,SACE,MAAW,SAAQ,KAFL,SAAA,UAAY,UAK9B,sBAAc,cAAc,UA/G5B,gBAAA,aAoHiC,YAG/B,SACE,MAAS,aAAY,KAFP,YAAA,UAAY,cAK9B,sBAAc,cAAc,aA3H5B,cAAA,aAgI8B,YAG5B,SACE,MAAW,UAAS,KAFN,UAAA,UAAY,WAK9B,sBAAc,cAAc,WAvI5B,aAAA,aA4I8B,YAG5B,SACE,MAAS,UAAS,KAFJ,SAAA,UAAY,WAK9B,sBAAc,cAAc,UAnJ5B,UAAA,aAwJ0B,YAGxB,SACE,MAAW,OAAK,KAFF,MAAA,UAAY,OAK9B,sBAAc,cAAc,OA/J5B,aAAA,aAoK6B,YAe3B,aAAiC,IAC/B,MAAW,SAAQ,EAAG,QAdR,SAAA,UAAY,UAiB9B,sBAAc,cAAc,UAvL5B,gBAAA,aA4LgC,YAgB9B,aAAiC,IAC/B,MAAW,YAAW,EAAG,QAfX,YAAA,UAAY,aAkB9B,sBAAc,cAAc,aAhN5B,UAAA,aAqN2B,YAUzB,cAAyB,GACvB,MAAO,MAAK,IAAU,QAAQ,EAAE,IAAI,QAAQ,IAAI,MATlC,MAAA,UAAY,QAY9B,sBAAc,cAAc,OAEtB,0CACJ,MAAO,aAAW,eAGd,qDAEuC,IAC3C,MAAO,wBACH,QAAQ,sBAAc,iBAAiB,SAAS,aAChD,cAAe,cAGf,mCAEJ,GAAI,YAAc,MAChB,YAAyC,GACzC,MAAA,SAAO,UAAe,SACtB,QAAO,OAAY,GACZ,sBAAsB,SAE/B,GAAI,MAAO,aAAe,UACxB,YAAyC,GACzC,MAAA,SAAO,UAAe,WACtB,QAAO,OAAY,GACZ,sBAAsB,aACxB,OAAI,sBAAsB,YACxB,WAEA,sBAAsB,YChPjC,gCACE,GAAI,MAAQ,MAAQ,MAAO,OAAS,SAClC,KAAM,IAAI,OACN,yFACyB,QArBjC,gBAAA,aA4B0C,uBAAc,oBA5BxD,aAiD0B,aAQxB,kBACE,QAEA,iBAAiB,MAEjB,KAAK,GAAK,MAAQ,MAAQ,KAAK,IAAM,KAAO,IAAO,KAAK,GACxD,KAAK,GAAK,MAAQ,MAAQ,KAAK,IAAM,KAAO,IAAO,KAAK,GACxD,KAAK,MAAQ,KAAK,KAAO,EACzB,KAAK,MAAQ,KAAK,KAAO,EAO3B,SACE,MAAO,MAAK,KACV,mBAA6B,MAAM,CAAC,IACpC,MAAI,MAAK,OACP,gBAAiB,KAAI,eAAgB,KAAQ,IAAI,KAAK,GAAI,IAAI,OAE5D,KAAK,OACP,gBACI,KAAI,eAAgB,KAAQ,IAAI,KAAK,GAAM,SAAO,OAEjD,eAAe,aAI1B,YACE,MAAO,CAAC,GAAM,KAAK,GAAI,GAAM,KAAK,UAI7B,yBAGL,MAAO,IAAI,KAAI,CAAC,GAAI,QAAO,GAAiB,GAAI,QAAO,OA3ClD,KAAA,UAAY,OA8CrB,sBAAc,cAAc,MAEtB,kBACJ,MAAA,kBAAiB,MACV,GAAI,MAAK,CAAC,GAAI,MAAQ,KAAO,KAAK,GAAK,KAAM,GAAI,IAGpD,kBACJ,MAAA,kBAAiB,MACV,GAAI,MAAK,CAAC,GAAI,MAAQ,KAAO,KAAK,GAAK,KAAM,GAAI,IAOnD,+CAC+C,CAChD,KAAQ,QAGR,0CAEJ,MAAO,sBAAqB,YAGxB,sDAEwC,IAC5C,MAAO,wBACH,QAAQ,sBAAc,iBAAiB,SAAS,aAChD,cAAe,eAGf,oCAGJ,GAAI,YAAc,KAChB,MAAO,MAET,GAAI,MAAO,aAAe,UACxB,cAAkB,aAAc,4CAC5B,2CAA2C,YAC3C,mBACW,CAAC,UAAW,OAAQ,IACnC,MAAO,wBAAuB,aACzB,OAAI,sBAAsB,aACxB,WAEA,uBAAuB,YClJlC,SAAA,aAmC0B,OAKxB,kBACE,MAAM,MAAQ,KAAO,GAAK,MAC1B,KAAK,gBAAkB,GACnB,MAAQ,MACV,MAAK,SAAW,KAAK,UAIzB,oBACE,OAAS,oBAAoB,QAC7B,WAAa,KAAK,QAClB,MAAI,MAAK,UAAY,MACnB,QAAS,YAAY,OAAQ,EAAG,KAAK,WAEhC,OAGT,+BACE,MAAO,YAGT,YACE,YAAyC,CAAC,SAAU,KAAK,qBACtC,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UA5BF,KAAA,UAAY,OA+BrB,sBAAc,cAAc,MApE5B,cAAA,aA6E+B,OAO7B,kBACE,MAAM,MAAQ,KAAO,GAAK,MAHnB,KAAA,cAAgB,GAInB,MAAQ,MACV,MAAO,IAET,KAAK,MAAQ,KAAK,OAAS,KAAO,KAAK,cAAgB,KAAK,MAG9D,oBACE,MAAU,oBAAoB,QAC9B,MAAO,WAAU,EAAG,KAAK,OAG3B,+BACE,MAAO,YAGT,YACE,YAAyC,CAAC,MAAO,KAAK,kBACnC,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UA1BF,UAAA,UAAY,YA6BrB,sBAAc,cAAc,WA5G5B,UAAA,aAyI2B,OAWzB,kBACE,MAAM,MAAQ,KAAO,GAAK,MAU1B,GAbO,KAAA,0BAAmD,QAItD,MAAQ,MACV,MAAO,IAGT,KAAK,gBAAkB,GACvB,KAAK,iBACD,eAAe,KAAK,kBAAoB,KAAK,2BACjD,KAAK,iBAAmB,eAAe,KAAK,kBAC5C,KAAK,gBAAkB,cAAc,KAAK,iBACtC,KAAK,YAAc,KACrB,KAAK,WAAa,aACT,MAAM,QAAQ,KAAK,YAC5B,KAAK,WAAa,KAAK,mBACd,MAAO,MAAK,YAAe,SACpC,KAAK,WAAa,CAAC,KAAK,gBAExB,MAAM,IAAI,YACN,sEACW,KAAK,cAIxB,kBACE,WAAa,mBAAmB,YAChC,eAA0B,WAAW,MAAM,GAC3C,GAAI,KAAK,YAAc,KACrB,YAAgB,MAAK,WACnB,WAAW,EAAI,GAAK,EAGxB,KAAK,MAAQ,KAAK,UACd,QAAS,WAAY,UAAW,KAAK,iBACrC,KAAK,iBAAkB,GAAM,KAAK,iBAEtC,SAAuC,GACvC,GAAI,KAAK,YAAc,KACrB,UAAa,EAAG,EAAI,WAAW,OAAQ,EAAE,EACvC,KAAK,GAAK,WAAW,GAGzB,KAAK,UAAY,CAAC,GAAI,WAAU,CAC9B,KAAM,WAAW,OACjB,QAEF,KAAK,MAAQ,GAGf,oBACE,MAAA,QAAS,oBAAoB,QACtB,MAAM,OAAQ,KAAK,MAAM,QAGlC,YACE,YAAyC,CACvC,iBAAkB,qBAAqB,KAAK,kBAC5C,iBAAkB,qBAAqB,KAAK,kBAC5C,gBAAiB,oBAAoB,KAAK,iBAC1C,WAAY,KAAK,uBAEA,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UAxEF,MAAA,UAAY,QA2ErB,sBAAc,cAAc,OAtN5B,QAAA,aA+NyB,OAOvB,kBACE,MAAM,MAAQ,KAAO,GAAK,MAK1B,GARO,KAAA,cAAgB,EAInB,MAAQ,MACV,MAAO,IAGL,KAAK,OAAS,MAAQ,KAAK,QAAU,KAAK,cAC5C,KAAM,IAAI,qBACN,4BAA4B,KAAK,iDAIvC,KAAK,MAAQ,KAAK,OAAS,KAAO,KAAK,cAAgB,KAAK,MAG9D,oBACE,MAAU,oBAAoB,QAC9B,MAAO,KAAI,GAGb,+BACE,MAAO,YAGT,YACE,YAAyC,CAAC,MAAO,KAAK,kBACnC,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UAjCF,IAAA,UAAY,MAoCrB,sBAAc,cAAc,KArQ5B,oBAAA,aA8QqC,OAOnC,kBACE,MAAM,MAAQ,KAAO,GAAK,MAHnB,KAAA,cAAgB,EAInB,MAAQ,MACV,MAAO,IAGT,KAAK,MAAQ,KAAK,OAAS,KAAO,KAAK,cAAgB,KAAK,MAG9D,oBACE,MAAU,oBAAoB,QAC9B,MAAO,GAAE,IAAI,OAAK,EAAE,QAAQ,KAAK,OAAQ,YAG3C,+BACE,MAAO,YAGT,YACE,YAAyC,CAAC,MAAO,KAAK,kBACnC,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UA3BF,gBAAA,UAAY,kBA8BrB,sBAAc,cAAc,iBA9S5B,aAAA,aAwT6B,OAO3B,kBACE,MAAM,MAAQ,KAAO,GAAK,MAHnB,KAAA,aAAe,EAIlB,MAAQ,MACV,MAAO,IAET,KAAK,QAAU,GAAI,YAAoB,MACvC,KAAK,KAAO,KAAK,MAAQ,KAAO,KAAK,aAAe,KAAK,KAG3D,oBACE,MAAU,oBAAoB,QAC9B,MAAO,MAAK,QAAQ,EAAG,KAAK,MAG9B,+BACE,MAAO,YAGT,YACE,YAAyC,CAAC,KAAM,KAAK,iBAClC,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UA3BF,SAAA,UAAY,UA8BrB,sBAAc,cAAc,UCjUtB,sCAEJ,GAAI,MAAO,QAAU,SACnB,MAAO,cAAa,MAAO,GAE3B,GAAI,MAAM,SAAW,EACnB,KAAM,IAAI,YACN,OAAO,gDAAgD,yBACzC,MAAM,oBAE1B,UAAa,EAAG,EAAI,EAAG,EAAE,GACvB,gBAAoB,MAAM,GAC1B,GAAI,CAAC,UAAU,aACb,KAAM,IAAI,YACN,OAAO,gDAAgD,yBAC/B,KAAK,UAAU,yCAChB,eAG/B,MAAO,OAYL,0EAEyB,GAC7B,GAAI,aAAe,KACjB,MAAO,aAET,sBAA0B,WAAc,YAAa,GAAM,UAAW,gBAEtE,MAAI,YAAY,OACd,aAAe,YAEf,aAAe,YAAc,kBAAoB,EAE5C,KAAK,MAAO,cAAe,OAAS,GAAK,QAG5C,8DAGJ,GAAI,SAAW,KACb,MAAO,MAGT,GAAI,WAAY,QACd,QAAU,QAAU,WAAa,KAAI,CAAC,WAAa,WAAY,YACtD,WAAY,OACrB,QAAU,QAAU,eAEpB,MAAM,IAAI,YAAW,2BAA2B,aAElD,MAAO,SC7CH,6CAGJ,MAAO,MAAK,IACV,iBAAgB,YACZ,aAAe,gBACN,UAAU,EAAG,CAAC,EAAG,EAAG,EAAG,IAE3B,IAUP,6CAEJ,MAAO,MAAK,IACV,iBAAgB,YACZ,aAAe,gBACN,UAAU,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAE9B,IAqBP,8CACiD,WAAa,gCACxB,GAC1C,MAAO,MAAK,KAMV,GALI,YAAc,MAChB,YAAa,mBAEf,gBAAgB,YAEZ,EAAE,MAAM,SAAW,EACrB,KAAM,IAAI,YACN,+DACG,EAAE,MAAM,mBAEjB,GAAI,OAAO,MAAM,SAAW,EAC1B,KAAM,IAAI,YACN,iEACG,OAAO,MAAM,kBAEtB,GAAI,MAAQ,MAAQ,KAAK,MAAM,SAAW,EACxC,KAAM,IAAI,YACN,+DACG,OAAO,MAAM,kBAMtB,GAHI,aAAe,iBACjB,GAAQ,UAAU,EAAG,CAAC,EAAG,EAAG,KAE1B,WAAY,SACd,KAAM,IAAI,qBACN,iFAGN,MAAoB,OAChB,EAA0B,OAAoB,QAC9C,WAAY,OAAS,OAAS,QAAS,MAAO,cAClD,MAAI,OAAQ,MACV,GAAM,QAAQ,EAAG,OAEZ,ICmDL,wDACiD,CAAC,EAAG,YAC7C,4CACqB,MACjC,MAAO,MAAK,KAKV,GAJI,YAAc,MAChB,YAAa,mBAEf,gBAAgB,YACZ,EAAE,OAAS,GAAK,EAAE,OAAS,EAC7B,KAAM,IAAI,YACN,6EACgB,EAAE,SAExB,GAAI,OAAO,OAAS,GAAK,OAAO,OAAS,EACvC,KAAM,IAAI,YACN,8EACgB,EAAE,SAExB,MAAQ,sBAAsB,EAAG,YACjC,GAAI,WAAY,SACd,KAAM,IAAI,qBACN,iFAGN,MAAA,GAAQ,kBAAM,OAAO,CACnB,EAAG,EACH,OAAQ,OACR,QACA,IAAK,WAAY,OAAS,OAAS,QACnC,UAAW,aACX,WAAY,OACZ,KACA,WAAA,cAEE,aAAe,iBACjB,GAAQ,UAAU,EAAG,CAAC,EAAG,EAAG,EAAG,KAE1B,IC6BL,8CACiD,CAAC,EAAG,EAAG,YAChD,iCAEZ,MAAO,MAAK,KAKV,GAJI,YAAc,MAChB,YAAa,mBAEf,gBAAgB,YACZ,EAAE,OAAS,GAAK,EAAE,OAAS,EAC7B,KAAM,IAAI,YACN,mEACG,EAAE,SAEX,GAAI,OAAO,OAAS,GAAK,OAAO,OAAS,EACvC,KAAM,IAAI,YACN,oEACG,EAAE,SAEX,MAAQ,sBAAsB,EAAG,YACjC,GAAI,WAAY,SACd,KAAM,IAAI,qBACN,iFAGN,MAAA,GAAQ,OACJ,EACA,OAAmC,QACnC,WAAY,OAAS,OAAS,QAAS,QAAS,cAChD,MAAQ,MACV,GAAM,QAAQ,EAAG,OAEf,aAAe,iBACjB,GAAQ,UAAU,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KAE7B,IArRX,aAAA,aAwYuC,OAwBrC,uBACE,MAAM,MAIN,GAVQ,KAAA,KAAsB,KAEvB,KAAA,2BAAoD,eACpD,KAAA,yBAAkD,QAIzD,SAAS,WAAW,MACpB,KAAK,KAAO,KACE,sBAAsB,KAAK,KAAM,QAC3C,KAAK,OAAS,GAAK,KAAK,OAAS,GAAK,KAAK,OAAS,EACtD,KAAM,IAAI,qBACN,qDACI,KAAK,iCAqBf,GAlBA,KAAK,WAAa,eAAe,KAAK,WAAY,KAAM,cACxD,KAAK,QAAU,eACX,KAAK,SAAW,KAAO,EAAI,KAAK,QAAS,KAAM,WACnD,KAAK,QAAU,KAAK,SAAW,KAAO,QAAU,KAAK,QACrD,iBAAiB,KAAK,SACtB,KAAK,WACD,KAAK,YAAc,KAAO,eAAiB,KAAK,WACpD,gBAAgB,KAAK,YACrB,KAAK,WAAa,cAAc,KAAK,YACrC,KAAK,QAAU,KAAK,SAAW,KAAO,GAAO,KAAK,QAClD,KAAK,gBACD,eAAe,KAAK,iBAAmB,KAAK,0BAChD,KAAK,eAAiB,cAAc,KAAK,gBACzC,KAAK,gBAAkB,eAAe,KAAK,iBAC3C,KAAK,oBAAsB,eAAe,KAAK,qBAC/C,KAAK,aAAe,eAChB,KAAK,cAAgB,KAAO,EAAI,KAAK,aAAc,KACnD,gBACA,KAAK,OAAS,GACb,MAAM,QAAQ,KAAK,eAAiB,KAAK,aAAa,SAAW,EACpE,KAAM,IAAI,YACN,iGAEG,KAAK,UAAU,KAAK,iBACtB,GAAI,KAAK,OAAS,GACvB,GAAI,MAAO,MAAK,cAAiB,SAC/B,KAAK,aAAe,CAAC,KAAK,aAAc,KAAK,sBACpC,KAAK,aAAa,SAAW,EACtC,KAAM,IAAI,YACN,0FAC6B,KAAK,UAAU,KAAK,yBAE9C,KAAK,OAAS,GACvB,GAAI,MAAO,MAAK,cAAiB,SAC/B,KAAK,aACD,CAAC,KAAK,aAAc,KAAK,aAAc,KAAK,sBACvC,KAAK,aAAa,SAAW,EACtC,KAAM,IAAI,YACN,4FAC6B,KAAK,UAAU,KAAK,wBAK1C,kBAIf,GAFc,QACV,cAAgB,MAAM,2CACtB,MAAO,MAAK,YAAe,UAC3B,CAAe,wBACX,KAAK,WAAY,SAAU,EAAG,GACpC,KAAM,IAAI,YACN,oGAEI,KAAK,UAAU,KAAK,gBAIhC,YACE,YAAyC,CACvC,WAAY,KAAK,WACjB,QAAS,KAAK,QACd,QAAS,KAAK,QACd,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,WAAY,oBAAoB,KAAK,YACrC,QAAS,KAAK,QACd,gBAAiB,qBAAqB,KAAK,iBAC3C,gBAAiB,qBAAqB,KAAK,iBAC3C,oBAAqB,qBAAqB,KAAK,qBAC/C,eAAgB,oBAAoB,KAAK,4BAExB,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,eArfX,aA6fmC,UAcjC,uBACE,MAAM,KAAM,MAZJ,KAAA,OAAwB,KAahC,KAAK,WAAW,MAChB,KAAK,QAAU,KAAK,QACN,sBAAsB,KAAK,QAAS,WAClD,KAAK,kBAAoB,eACrB,KAAK,mBAAqB,KAAK,4BACnC,KAAK,iBAAmB,cAAc,KAAK,kBAC3C,KAAK,kBAAoB,eAAe,KAAK,mBAG/C,kBACE,WAAa,mBAAmB,YAChC,gBACI,KAAK,aAAe,gBAAkB,EAAI,WAAW,OAAS,EAClE,GAAI,WAAW,cAAgB,KAC7B,KAAM,IAAI,YACN,+DACS,WAAW,gBAE1B,aAAiB,WAAW,yBAER,KAAK,WAAW,OAAO,CAAC,SAAU,KAAK,UAE3D,KAAK,OAAS,KAAK,UACf,SAAU,YAAa,KAAM,KAAK,kBAClC,KAAK,kBAAmB,GAAM,KAAK,kBACnC,KAAK,SACP,MAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,SAAU,KAAM,KAAK,gBACnC,KAAK,gBAAiB,GAAM,KAAK,iBAGvC,KAAK,UAAY,CAAC,CAAC,KAAM,KAAK,KAAO,EAAG,KAAM,EAAE,aAAc,YAC9D,KAAK,MAAQ,GAGf,oBACE,MAAO,MAAK,KACV,OAAS,oBAAoB,QAC7B,sBACkB,KAAK,MAAQ,KAAO,KAAO,KAAK,KAAK,2BACb,2BACtC,KAAK,WAAW,gBAEpB,GAAI,qBAAuB,MAAQ,KAAK,OAAS,EAC/C,QAAU,yBACN,OAAQ,KAAK,OAAO,OAAQ,UAAW,KAAK,QAAS,KAAK,QAC1D,KAAK,WAAY,KAAK,aACtB,0BAEJ,GAAI,KAAK,OAAS,EAChB,QAAU,eACN,OAAQ,KAAK,OAAO,OAAQ,UAAW,KAAK,QAAQ,GACpD,KAAK,QAAS,KAAK,WAAY,KAAK,aAAa,YAC5C,KAAK,OAAS,EAEvB,QAAU,yBACN,OAAQ,KAAK,OAAO,OAAQ,UAAW,KAAK,QAAS,KAAK,QAC1D,KAAK,WAAY,KAAK,sBACjB,KAAK,OAAS,EACvB,QAAU,eACN,OAAQ,KAAK,OAAO,OAAQ,UAAW,KAAK,QAAS,KAAK,QAC1D,KAAK,WAAY,KAAK,kBAE1B,MAAM,IAAI,qBACN,yDAGF,KAAK,YAAc,MACrB,SAAU,KAAK,WAAW,MAAM,UAIpC,MAAO,WAIX,+BACE,WAAa,mBAAmB,YAChC,aAA2B,SACZ,KAAK,aAAe,eAC/B,WAAW,MAAM,EAAG,WAAW,OAAS,GACxC,WAAW,MAAM,GACrB,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,GAClC,WAAe,iBACX,MAAM,GAAI,KAAK,WAAW,GAAI,KAAK,QAAS,KAAK,QAAQ,GACzD,MAAO,MAAK,cAAiB,SAAW,KAAK,aACL,KAAK,aAAa,IAC9D,SAAS,KAAK,QAGhB,gBAAkB,CAAC,WAAW,IAC9B,MAAI,MAAK,aAAe,eACtB,aAAc,YAAY,OAAO,UACjC,YAAY,KAAK,KAAK,UAEtB,aAAY,KAAK,KAAK,SACtB,YAAc,YAAY,OAAO,WAE5B,YAGT,YACE,YAAe,CACb,QAAS,KAAK,QACd,kBAAmB,qBAAqB,KAAK,mBAC7C,kBAAmB,qBAAqB,KAAK,mBAC7C,iBAAkB,oBAAoB,KAAK,8BAE1B,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,cAGQ,kBAEf,GAAI,CAAE,YAAa,QAAS,MAAO,MAAK,SAAY,UAChD,KAAK,QAAU,EACjB,KAAM,IAAI,YACN,0EACW,KAAK,UAAU,KAAK,sBApoBzC,aAyoB4B,MAG1B,kBACE,MAAM,EAAG,MACT,QAAO,WAAW,MAGpB,YACE,YAAe,MAAM,YACrB,MAAA,OAAO,SAAO,KACP,cAGQ,kBAEf,GAAK,MAAO,MAAK,YAAe,UAC5B,CAAe,wBACX,KAAK,WAAY,SAAU,EAAG,GACpC,KAAM,IAAI,YACN,8FAC+B,KAAK,UAAU,KAAK,kBAnBpD,QAAA,UAAY,SAuBrB,sBAAc,cAAc,SAlqB5B,YAAA,aAoqB4B,MAG1B,kBACE,MAAM,EAAG,MACT,QAAO,WAAW,MAGpB,YACE,YAAe,MAAM,YACrB,MAAA,OAAO,SAAO,KACP,cAGQ,kBAEf,GAAI,MAAO,MAAK,YAAe,UACzB,CAAE,OAAM,QAAQ,KAAK,aAClB,MAAK,WAAW,SAAW,GAAK,KAAK,WAAW,SAAW,IAChE,KAAM,IAAI,YACN,2FAEI,KAAK,UAAU,KAAK,kBApB3B,QAAA,UAAY,SAyBrB,sBAAc,cAAc,SA/rB5B,oBAAA,aAisBqC,SAKnC,kBACE,MAAM,MAGN,GAFA,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KAEnC,KAAK,UAAY,QAAU,KAAK,UAAY,QAC9C,KAAM,IAAI,YACN,uGAC0C,KAAK,WAIvD,kBAGE,GAFA,WAAa,mBAAmB,YAE5B,WAAW,SAAW,EACxB,KAAM,IAAI,YACN,mDACA,KAAK,UAAU,aAGrB,gBACI,KAAK,aAAe,gBAAkB,EAAI,WAAW,OAAS,EAClE,GAAI,WAAW,cAAgB,KAC7B,KAAM,IAAI,YACN,wEAGN,aAAiB,WAAW,yBACR,KAAK,WAAW,OAAO,CAAC,KAAK,QAAS,WAE1D,KAAK,OAAS,KAAK,UACf,SAAU,YAAa,UAAW,KAAK,kBACvC,KAAK,kBAAmB,GAAM,KAAK,kBACnC,KAAK,SACP,MAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,SAAU,UAAW,KAAK,gBACxC,KAAK,gBAAiB,GAAM,KAAK,iBAIvC,KAAK,UACD,CAAC,GAAI,WAAU,CAAC,KAAM,EAAG,KAAM,EAAE,aAAc,aACnD,KAAK,MAAQ,GAGf,oBACE,MAAW,MAAK,KACd,WAAY,oBAAoB,QAChC,GAAI,OAAM,MAAM,SAAW,EACzB,KAAM,IAAI,YACN,2FAC6B,OAAM,MAAM,UAG/C,eAAmB,OAAM,gBACP,WAAW,eAIzB,KAAK,aAAe,gBACtB,OAAQ,EACR,MAAQ,GAER,OAAQ,EACR,MAAQ,GAGV,WAAe,WAAW,aACZ,WAAW,eACT,KAAK,WAAW,WAChB,KAAK,WAAW,WAChB,KAAK,QAAQ,WACb,KAAK,QAAQ,aAGX,aAAa,OAAQ,QAAS,QAAS,KAAK,kBAC7C,aAAa,MAAO,QAAS,QAAS,KAAK,qBAOxD,CAAC,UAAW,UAAW,SAAU,KAAK,SAEtC,KAAK,aAAe,gBACtB,QAAY,UAAU,OAAO,CAAC,EAAG,EAAG,EAAG,KAEzC,YAAkB,gBACd,OAAmB,KAAK,OAAO,OAAoB,YACnD,KAAK,QAA6B,KAAK,SAC3C,MAAI,MAAK,aAAe,gBACtB,SAAc,UAAU,QAAS,CAAC,EAAG,EAAG,EAAG,KAGzC,KAAK,MAAQ,MACf,SACM,QAAQ,QAAS,KAAK,KAAK,OAAQ,KAAK,aAE5C,KAAK,YAAc,MACrB,SAAU,KAAK,WAAW,MAAM,UAE3B,UAIX,+BACE,WAAa,mBAAmB,YAChC,gBAAoB,WAAW,yCAK3B,KAAK,aAAe,gBACtB,aAAc,EACd,WAAa,EACb,UAAY,GAEZ,aAAc,EACd,WAAa,EACb,UAAY,GAGd,YAAgB,KAAK,WAAW,WAChB,KAAK,WAAW,WAChB,KAAK,QAAQ,WACb,KAAK,QAAQ,GAE7B,MAAA,aAAY,aAAe,KAAK,QAChC,YAAY,YACR,aAAa,YAAY,YAAa,QAAS,QAAS,KAAK,SACjE,YAAY,WACR,aAAa,YAAY,WAAY,QAAS,QAAS,KAAK,SACzD,YAGT,YACE,YAAe,MAAM,YACrB,MAAA,OAAO,SAAO,aACP,UA9IF,gBAAA,UAAY,kBAiJrB,sBAAc,cAAc,iBAp1B5B,kBAAA,aA83BmC,MAqBjC,0BACE,MAAM,KAAM,SAEZ,GAXO,KAAA,8BACL,gBACK,KAAA,8BACL,gBAEM,KAAA,gBAAiC,KACjC,KAAA,gBAAiC,KAKrC,QAAO,SAAW,KACpB,KAAM,IAAI,YACN,uFAGN,GAAI,QAAO,mBAAqB,MAAQ,QAAO,mBAAqB,MAChE,QAAO,kBAAoB,KAC7B,KAAM,IAAI,YACN,sPAKN,GAAI,QAAO,SAAW,MAAQ,QAAO,UAAY,QAC7C,QAAO,UAAY,QACrB,KAAM,IAAI,YACN,gBAAgB,KAAK,uEACe,KAAK,UAAU,QAAO,YAGhE,KAAK,gBACD,QAAO,iBAAmB,KAAO,EAAI,QAAO,gBAChD,KAAK,qBAAuB,eACxB,QAAO,sBAAwB,KAAK,+BACxC,KAAK,qBAAuB,eAAe,QAAO,sBAClD,KAAK,oBAAsB,cAAc,QAAO,qBAChD,KAAK,qBAAuB,eACxB,QAAO,sBAAwB,KAAK,+BACxC,KAAK,qBAAuB,eAAe,QAAO,sBAClD,KAAK,oBAAsB,cAAc,QAAO,qBAGlD,kBAEE,GADA,WAAa,mBAAmB,YAC5B,WAAW,OAAS,KAAK,KAAO,EAClC,KAAM,IAAI,YACN,0BAA0B,KAAK,0BAC5B,KAAK,KAAO,gCACZ,KAAK,UAAU,eAExB,gBACI,KAAK,aAAe,gBAAkB,EAAI,WAAW,OAAS,EAClE,GAAI,WAAW,cAAgB,MAAQ,WAAW,aAAe,EAC/D,KAAM,IAAI,YACN,oEACa,KAAK,UAAU,WAAW,iBAG7C,aAAiB,WAAW,kCAExB,KAAK,WAAW,OAAO,CAAC,SAAU,KAAK,uCACd,GAC7B,UAAa,EAAG,EAAI,KAAK,KAAM,EAAE,EAC/B,qBAAqB,KAAK,GAE5B,qBAAqB,KAAK,SAAW,KAAK,gBAAiB,KAAK,SAEhE,cAAkB,GAClB,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,qBAAsB,UAC1C,KAAK,qBAAsB,KAAK,qBAAsB,UACtD,KAAK,qBACT,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,qBAAsB,UAC1C,KAAK,qBAAsB,KAAK,qBAAsB,UACtD,KAAK,qBACL,KAAK,QACP,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,SAAU,UAAW,KAAK,gBACxC,KAAK,gBAAiB,UAAW,KAAK,gBAE1C,KAAK,KAAO,KAGd,KAAK,UACD,CAAC,GAAI,WAAU,CAAC,KAAM,KAAK,KAAO,EAAG,KAAM,EAAE,aAAc,aAC/D,KAAK,MAAQ,GAGf,oBACE,MAAO,MAAK,KACV,OAAS,oBAAoB,QAE7B,WACA,GAAI,KAAK,OAAS,EAChB,KAAM,IAAI,qBACN,oDACC,MAAI,MAAK,OAAS,GACnB,MAAK,aAAe,iBACtB,QAAa,UAAU,OAAQ,CAAC,EAAG,EAAG,EAAG,KAG3C,OAAa,gBACT,OAAoB,KAAK,gBAAgB,OACzC,KAAK,gBAAgB,OACrB,KAAK,QAA6B,KAAK,QACvC,KAAK,aAAkC,SAGzC,KAAK,SACP,QAAW,QAAQ,OAAQ,KAAK,KAAK,OAAQ,KAAK,aAEhD,KAAK,YAAc,MACrB,QAAS,KAAK,WAAW,MAAM,SAG7B,KAAK,aAAe,iBACtB,QAAa,UAAU,OAAQ,CAAC,EAAG,EAAG,EAAG,KAEpC,SAIX,YACE,YAAe,MAAM,YACrB,MAAA,OAAO,SAAO,KACd,MAAO,SAAO,kBACd,MAAO,SAAO,kBACd,MAAO,SAAO,iBACd,QAAO,qBACH,qBAAqB,KAAK,sBAC9B,QAAO,qBACH,qBAAqB,KAAK,sBAC9B,QAAO,qBACH,qBAAqB,KAAK,sBAC9B,QAAO,qBACH,qBAAqB,KAAK,sBAC9B,QAAO,oBACH,oBAAoB,KAAK,qBAC7B,QAAO,oBACH,oBAAoB,KAAK,qBACtB,UAzJF,cAAA,UAAY,gBAh4BrB,oBAAA,aA6hCqC,eAGnC,kBACE,MAAM,EAAG,QAFJ,gBAAA,UAAY,kBAKrB,sBAAc,cAAc,iBApiC5B,WAAA,aAsiC4B,MAG1B,kBACE,MAAM,EAAG,MACT,OAAO,WAAW,MAClB,KAAK,UAAY,CAAC,CAAC,KAAM,IAG3B,YACE,YAAe,MAAM,YACrB,MAAA,OAAO,SAAO,KACd,MAAO,SAAO,WACP,cAGQ,kBAEf,GAAI,MAAO,MAAK,YAAe,UAC3B,CAAe,wBACX,KAAK,WAAY,SAAU,EAAG,GACpC,KAAM,IAAI,YACN,yFAC0B,KAAK,UAAU,KAAK,kBArB/C,OAAA,UAAY,SAyBrB,sBAAc,cAAc,QAjkC5B,eAAA,aAimCgC,OAM9B,kBACE,MAAM,MACF,MAAO,MAAK,UAAa,SAC3B,KAAK,SACD,CAAC,CAAC,KAAK,SAAU,KAAK,UAAW,CAAC,KAAK,SAAU,KAAK,WACjD,MAAO,MAAK,SAAS,IAAO,SACrC,KAAK,SAAW,CACd,CAAC,KAAK,SAAS,GAAI,KAAK,SAAS,IACjC,CAAC,KAAK,SAAS,GAAc,KAAK,SAAS,KAG7C,KAAK,SAAW,KAAK,SAEvB,KAAK,WACD,KAAK,aAAe,OAAY,eAAiB,KAAK,WAC1D,KAAK,UAAY,CAAC,CAAC,KAAM,IAG3B,+BACE,MAAI,MAAK,aAAe,gBACf,CACL,WAAW,GAAI,WAAW,GAC1B,WAAW,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GACvD,WAAW,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,IAGlD,CACL,WAAW,GACX,WAAW,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GACvD,WAAW,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,WAAW,IAK5E,oBACE,MAAO,MAAK,KAGV,GAFA,OAAS,oBAAoB,QAEzB,KAAK,aAAe,gBACtB,YAAkB,eACd,OAAQ,KAAK,SAAS,GAAG,GACzB,OAAO,MAAM,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,GACjE,MAAS,gBACL,QAAS,KAAK,SAAS,GAAG,GAC1B,OAAO,MAAM,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,QAEjE,YAAkB,eACd,OAAQ,KAAK,SAAS,GAAG,GACzB,OAAO,MAAM,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,GACjE,MAAS,gBACL,QAAS,KAAK,SAAS,GAAG,GAC1B,OAAO,MAAM,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,MAKvE,YACE,YAAe,CAAC,SAAU,KAAK,SAAU,WAAY,KAAK,uBACvC,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UAhEF,WAAA,UAAY,aAmErB,sBAAc,cAAc,YAtqC5B,iBAAA,aAmsCkC,OAQhC,kBACE,MAAM,MANW,KAAA,aAAe,CAAC,EAAG,GAOpC,KAAK,UAAY,CAAC,CAAC,KAAM,IACzB,KAAK,KAAO,KAAK,MAAQ,KAAO,KAAK,aAAe,KAAK,KACzD,KAAK,WACD,KAAK,YAAc,KAAO,eAAiB,KAAK,WACpD,gBAAgB,KAAK,YACrB,KAAK,cACD,KAAK,eAAiB,KAAO,UAAY,KAAK,cAClD,yBAAyB,KAAK,eAGhC,+BACE,GAAI,KAAK,aAAe,iBACtB,WACI,WAAW,IAAM,KAAO,KAAO,KAAK,KAAK,GAAK,WAAW,SAC/C,WAAW,IAAM,KAAO,KAAO,KAAK,KAAK,GAAK,WAAW,GACvE,MAAO,CAAC,WAAW,GAAI,WAAW,GAAI,OAAQ,YAE9C,WACI,WAAW,IAAM,KAAO,KAAO,KAAK,KAAK,GAAK,WAAW,SAC/C,WAAW,IAAM,KAAO,KAAO,KAAK,KAAK,GAAK,WAAW,GACvE,MAAO,CAAC,WAAW,GAAI,OAAQ,MAAO,WAAW,KAIrD,oBACE,MAAW,MAAK,KACd,WAAY,oBAAoB,mBACb,OAAM,MAEzB,GAAI,KAAK,aAAe,iBACtB,OAAY,UAAU,OAAO,CAAC,EAAG,EAAG,EAAG,IACvC,WAAe,KAAK,KAAK,GAAK,WAAW,SAC3B,KAAK,KAAK,GAAK,WAAW,WAExB,KAAK,gBAAkB,UACnC,OAAM,sBAAsB,CAAC,OAAQ,QACrC,OAAM,eAAe,CAAC,OAAQ,QAClC,MAAW,WAAU,QAAS,CAAC,EAAG,EAAG,EAAG,SAExC,WAAe,KAAK,KAAK,GAAK,WAAW,SAC3B,KAAK,KAAK,GAAK,WAAW,GACxC,MAAO,MAAK,gBAAkB,UAC1B,OAAM,sBAAsB,CAAC,OAAQ,QACrC,OAAM,eAAe,CAAC,OAAQ,WAKxC,YACE,YAAe,CAAC,KAAM,KAAK,KAAM,WAAY,KAAK,uBAC/B,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UA5DF,aAAA,UAAY,eA+DrB,sBAAc,cAAc,cCxtCtB,oDAC8D,CAAC,EAAG,YAC1D,iCAEZ,MAAO,MAAK,KACN,YAAc,MAChB,YAAa,mBAEf,gBAAgB,YAChB,MAAQ,sBAAsB,EAAG,YACjC,GAAI,EAAE,OAAS,EACb,KAAM,IAAI,YACN,mEACG,EAAE,UAEX,GAAI,gBAAgB,OAAS,EAC3B,KAAM,IAAI,YACN,yDACG,gBAAgB,UAEzB,MAAA,GAAQ,gBACJ,EAAe,gBAA6B,QAC5C,WAAY,OAAS,OAAS,QAAS,OAAQ,cAC/C,aAAe,iBACjB,GAAQ,UAAU,EAAG,CAAC,EAAG,EAAG,EAAG,KAE1B,IAtEX,oBAAA,aA4GqC,UAUnC,kBACE,MAAM,EAAG,MAHH,KAAA,gBAAiC,KAIvC,KAAK,gBACD,KAAK,iBAAmB,KAAO,EAAI,KAAK,gBAC5C,KAAK,qBAAuB,eACxB,KAAK,sBAAwB,KAAK,4BACtC,KAAK,oBAAsB,cAAc,KAAK,qBAC9C,KAAK,qBAAuB,eAAe,KAAK,sBAGlD,kBAEE,GADA,WAAa,mBAAmB,YAC5B,WAAW,OAAS,EACtB,KAAM,IAAI,YACN,uEACyB,KAAK,UAAU,gBAE9C,gBAAoB,KAAK,aAAe,gBAAkB,EAAI,EAC9D,GAAI,WAAW,cAAgB,MAAQ,WAAW,aAAe,EAC/D,KAAM,IAAI,YACN,yFAC2B,WAAW,kBAE5C,aAAiB,WAAW,kCACQ,CAClC,KAAK,WAAW,GAAI,KAAK,WAAW,GAAI,SAAU,KAAK,iBAGzD,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,qBAAsB,KAC1C,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBACL,KAAK,QACP,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,SAAW,KAAK,iBAAkB,KAAM,KAAK,gBACtD,KAAK,gBAAiB,GAAM,KAAK,gBAErC,KAAK,KAAO,KAEd,KAAK,MAAQ,GAGf,oBACE,MAAO,MAAK,KACV,OAAS,oBAAoB,QAC7B,YAAc,iBACV,OAAQ,KAAK,gBAAgB,OAAQ,KAAK,QAC1C,KAAK,QAAS,KAAK,WAAY,MAEnC,MAAI,MAAK,SACP,SAAY,QAAQ,QAAS,KAAK,KAAK,OAAQ,KAAK,aAElD,KAAK,YAAc,MACrB,SAAU,KAAK,WAAW,MAAM,UAE3B,UAIX,+BACE,WAAa,mBAAmB,YAChC,SACI,KAAK,aAAe,gBAAkB,WAAW,GAAK,WAAW,QAEjE,KAAK,aAAe,gBAAkB,WAAW,GAAK,WAAW,cAClD,KAAK,aAAe,gBACnC,WAAW,GAAK,KAAK,gBACrB,WAAW,GAAK,KAAK,wBACT,iBACZ,KAAM,KAAK,WAAW,GAAI,KAAK,QAAS,KAAK,QAAQ,YACzC,iBACZ,KAAM,KAAK,WAAW,GAAI,KAAK,QAAS,KAAK,QAAQ,IACzD,MAAI,MAAK,aAAe,gBACf,CAAC,WAAW,GAAI,WAAY,QAAS,SAGrC,CAAC,WAAW,GAAI,QAAS,QAAS,YAI7C,YACE,YAAe,MAAM,YACrB,MAAA,SAAO,gBAAqB,KAAK,gBACjC,QAAO,qBACH,qBAAqB,KAAK,sBAC9B,QAAO,qBACH,qBAAqB,KAAK,sBAC9B,QAAO,oBACH,oBAAoB,KAAK,sBACtB,UAjGF,gBAAA,UAAY,kBAoGrB,sBAAc,cAAc,iBCzJtB,qEASJ,GAAI,MAAM,QAAQ,SAChB,GAAI,cAAgB,MAAQ,WAAa,KACvC,KAAM,IAAI,YACN,iFAGF,cAAgB,MAClB,WAAY,OAAO,MAAM,OAAO,OAAS,aAAc,OAAO,QAC9D,OAAS,OAAO,MAAM,EAAG,OAAO,OAAS,eAEvC,OAAO,OAAS,GAClB,cAAe,OAAO,MAAM,EAAG,OAAO,SAExC,OAAS,OAAO,GAGlB,yBAEE,MAAI,IAAK,MAAQ,MAAM,QAAQ,GACtB,EAEA,CAAC,GAIZ,MAAA,cAAe,aAAa,cAC5B,UAAY,aAAa,WAElB,CAAC,OAAQ,aAAc,WA8C1B,2DAEY,yBAAqD,sBAC9C,IACvB,MAAW,MAAK,KACd,SAAa,OAAO,MAAM,OAC1B,GAAI,KAAO,EACT,KAAM,IAAI,YAAW,uCAAuC,UAK9D,SAAa,CAAC,EAAG,GAAG,OAAkB,OAAM,EAAG,OAG/C,GAFA,OAAa,UAAU,OAAQ,MAE3B,WAAa,KACf,KAAM,IAAI,qBACN,kFAKF,QACF,QAAQ,KACJ,qGAIF,MAAQ,MACV,MAAO,KAAK,OAAO,QAAQ,OAAO,WAC9B,KAAK,OAAS,KAAO,GACvB,MAAW,WAAW,KAAM,KAE9B,KAAW,UAAU,KAAM,OAGzB,aACF,QAAa,QAAQ,OAAQ,GACzB,MAAQ,MACV,MAAW,QAAQ,KAAM,KAc7B,mBAAiC,qBAEpB,wBACK,OAAO,MAAM,iBACL,QAAQ,qBAE9B,MAAQ,MACV,cAAmB,QAAQ,OAG7B,UAAa,EAAG,EAAI,UAAW,EAAE,GAC/B,iBAAqB,cAAc,eACX,KAAK,IAAM,aAAa,aAAc,SAE9D,GAAI,MAAQ,KACV,WAAa,YAAY,GACzB,OAAS,YAAY,QAErB,kBAA0B,KAAK,KAC7B,aAAiB,aAAa,eACN,SAAS,UAAU,IAAI,iBAG3C,YAAY,GAAG,IAAI,UAAU,IAAI,OAAO,GAAG,IAAI,wBACjC,OAAO,IAAI,YACpB,YAAY,GAAG,GAAG,IAAI,UAAU,IAAI,OAAM,IAAI,eAEvD,MAAO,CAAC,OAAQ,aAElB,WAAa,cAAc,OAC3B,OAAS,cAAc,UAGrB,oBACF,eAAe,KAAK,YAGxB,YACA,GAAI,oBACF,SAAa,EACb,QAAc,MAAM,eAAgB,MAEtC,MAAO,CAAC,WAAY,QAAS,UA3OjC,QAAA,aAoVyB,OAqBvB,kBACE,MAAM,MACN,SACA,GAAI,KAAK,MAAQ,KACf,KAAM,IAAI,YACN,wDAMN,GALW,MAAM,QAAQ,KAAK,MAC5B,KAAO,GAAI,iBAAgB,CAAC,MAAO,KAAK,OAExC,KAAO,KAAK,KAEV,KAAK,WAAa,KACpB,KAAM,IAAI,YACN,qGAGN,KAAK,KAAO,KACZ,KAAK,gBACD,KAAK,iBAAmB,KAAO,GAAQ,KAAK,gBAChD,KAAK,YAAc,KAAK,aAAe,KAAO,GAAQ,KAAK,YAC3D,KAAK,YAAc,KAAK,aAAe,KAAO,GAAQ,KAAK,YAC3D,KAAK,UAAY,KAAK,UAAY,KAAO,GAAQ,KAAK,SACtD,KAAK,OAAS,KAAK,QAAU,KAAO,GAAQ,KAAK,OAEjD,KAAK,gBAAkB,GACvB,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KACvC,KAAK,UAAY,KACjB,KAAK,QAAU,KAEf,KAAK,aAAe,KAIpB,KAAK,WAAa,GAKpB,YACE,GAAI,KAAK,SAAW,MAClB,cACI,MAAM,QAAQ,KAAK,KAAK,WAAa,KAAK,KAAK,UAAU,OAAS,EACtE,MAAkB,QAAM,EAAG,WAAW,IAAI,GAAK,UAE/C,OAAO,MAAK,QAMhB,kBACE,KAAK,QAAU,OAGjB,+BACM,gBAAgB,aAClB,YAAc,WAAuB,IAEvC,WAAa,WAGb,cAAgB,KAAK,KAAK,UACrB,MAAM,QAAQ,YACjB,WAAY,CAAC,YAEf,cAAkB,UAAU,eAQ5B,GANI,KAAK,gBACP,YAAc,CAAC,WAAW,GAAI,WAAW,GAAI,WAE7C,YAAc,CAAC,WAAW,GAAI,WAG5B,KAAK,aACP,eAA4B,GAC5B,cAAkB,WAChB,WAAW,KAAK,CAAC,WAAW,GAAI,MAElC,MAAO,CAAC,aAAa,OAAO,gBAE5B,OAAO,aAIX,yBAEE,MAAW,MAAK,KACV,MAAM,QAAQ,OAChB,MAAO,KAAK,IAEd,eAAmB,KAAK,gBAAkB,KAAO,KAEjD,GAAI,KAAK,aACP,cAAkB,KAAK,OAAO,IAAI,GAAK,MACvC,MAAO,CAAC,YAAY,OAAO,eAE3B,OAAO,iBAWT,UACF,GAAI,KAAK,SAAW,MAClB,cACI,MAAM,QAAQ,KAAK,KAAK,WAAa,KAAK,KAAK,UAAU,OAAS,SAC7C,GACzB,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,OAAO,KAAK,MAEd,MAAO,YAEP,OAAO,MAAK,WAIZ,WACF,KAAK,QAAU,EAGV,kBAGL,kBAA+B,KAC/B,GAAI,KAAK,cAAgB,KACvB,KAAM,IAAI,qBACN,oDAGF,gBAAgB,aAClB,YAAc,WAAuB,IAEvC,WAAa,WAEb,cAA0B,KAAK,SAAW,WAAW,GAAK,cACzC,WAAW,MAAM,GAClC,KAAK,UAAU,GAAK,GAAI,WAAU,CAAC,MAAO,CAAC,UAAW,KAAM,GAAG,YAI/D,mBAAuB,CAAC,WAAW,IAAI,OAAO,WAAW,MAAM,IAC/D,GAAI,eAAiB,KACnB,KAAM,IAAI,qBACN,oDAEJ,KAAK,KAAK,MAAM,gBAIlB,cAOA,GANI,MAAM,QAAQ,KAAK,KAAK,WAC1B,UAAY,KAAK,KAAK,UAEtB,UAAY,CAAC,KAAK,KAAK,WAGrB,KAAK,WAAa,MACpB,GAAI,CAAC,aAAK,YACF,KAAK,UAAU,IAAI,MAAQ,KAAK,MAAM,KAAK,MAAM,OAAS,IAC1D,WACN,KAAM,IAAI,YACN,6FACsC,KAAK,wCACd,KAAK,KAAK,iBAG7C,MAAK,UACD,UAAU,IAAI,KAAO,GAAI,WAAU,CAAC,MAAO,CAAC,KAAM,QAEpD,KAAK,UACP,KAAK,cAqBT,6BAAiD,IAC/C,KAAK,KACH,GAAI,CAAC,KAAK,SACR,KAAM,IAAI,gBACN,mEAEN,cAAkB,KAAK,UAAU,GAAG,MAAM,GAC1C,GAAI,WAAa,KACf,KAAM,IAAI,YACN,yUAQN,GAAI,KAAK,SAAW,KACd,MAAM,QAAQ,KAAK,KAAK,WAC1B,KAAK,QACD,KAAK,KAAK,UAAU,IAAI,KAAW,MAAM,CAAC,UAAW,OAEzD,KAAK,QAAU,CAAK,MAAM,CAAC,UAAW,KAAK,KAAK,qBAEzC,QAAU,KAEf,QAAQ,KAAK,SAEb,KAAK,YAAc,MACjB,SAAQ,KAAK,YACjB,KAAK,WAAa,IAGhB,MAAM,QAAQ,KAAK,KAAK,WAC1B,KAAK,QACD,KAAK,KAAK,UAAU,IAAI,KAAW,MAAM,CAAC,UAAW,OAEzD,KAAK,QAAQ,GAAS,MAAM,CAAC,UAAW,KAAK,KAAK,iBAMpD,GAHK,MAAM,QAAQ,SACjB,QAAS,CAAC,SAER,OAAO,SAAW,KAAK,QAAQ,OACjC,KAAM,IAAI,YACN,SAAS,KAAK,gBAAgB,KAAK,QAAQ,oCACxB,OAAO,0CACb,UAGf,YAAa,GAKf,KAAK,WAAW,KAAK,KAAK,QAAQ,SAE9B,QAAQ,KAAK,SAGnB,cAAiB,EAAG,MAAQ,KAAK,QAAQ,OAAQ,EAAE,OACjD,UAAc,OAAO,WACT,MAAM,QAAQ,KAAK,KAAK,WAChC,KAAK,KAAK,UAAU,OACpB,KAAK,KAAK,wBACQ,CAAC,UAAW,KAClC,GAAI,CAAC,aAAK,YAAY,MAAM,MAAO,eACjC,KAAM,IAAI,YACN,SAAS,oCAAoC,KAAK,wBAChC,iCACd,MAAM,SAEhB,KAAK,QAAQ,OAAS,OAG1B,KAAK,QAAU,KAAK,QAAQ,IAAI,QAAa,KAAK,OAAM,YAI5D,qBAIE,iBACI,QAAU,KAAO,KAAO,OAAO,uBAE/B,QAAU,KAAO,KAAO,OAAO,UAC/B,QAAU,MACZ,QAAS,IAGX,iBACI,gBAAgB,OAAQ,aAAc,UAAW,KAAK,cAC1D,OAAS,aAAa,OACtB,aAAe,aAAa,aAC5B,UAAY,aAAa,UAMzB,qBAAqD,mBAClB,GACnC,GAAI,cAAgB,MAClB,OAAO,aAAkB,aACzB,iBAAmB,iBAAiB,OAAO,cAC3C,KAAK,UAAY,GACjB,iBAAoB,cAClB,KAAK,UAAU,KAAK,GAAI,WAAU,CAAC,MAAO,OAAM,SAKlD,gBAAkB,gBAAgB,OAAO,KAAK,WAE5C,WAAa,MACf,QAAO,UAAe,UACtB,iBAAmB,iBAAiB,OAAO,WAE3C,KAAK,aAAe,UAAU,QAGhC,cAAiB,iBAAiB,YAAc,gBAChD,GAAI,WAEF,cACI,CAAC,QAAQ,OAAO,gCACE,KAAK,UAAU,OAAO,mCAElB,KAAK,UAC/B,KAAK,UAAY,cACjB,WAAe,MAAM,MAAM,UAAW,QACtC,MAAA,MAAK,UAAY,kBACV,WAEP,OAAO,OAAM,MAAM,OAAQ,QAK/B,oBAIE,MAAO,MAAK,KACV,SAAa,QAAU,KAAO,KAAO,OAAO,eAC3B,QAAU,KAAO,KAAO,OAAO,sBAE5C,QAAU,KAAO,KAAO,OAAO,aAEnC,OAAS,oBAAoB,QACzB,cAAgB,MACd,MAAK,SACP,aAAe,KAAK,QAEpB,aAAe,KAAK,gBAAgB,SAIxC,cACI,MAAM,QAAQ,KAAK,KAAK,WAAa,KAAK,KAAK,UAAU,OAAS,EACtE,GAAI,aAAa,SAAW,UAC1B,KAAM,IAAI,YACN,iBAAiB,qCACd,aAAa,4BAElB,KAAK,QACP,QAAQ,KACJ,oEAGN,mBAA+B,CAAC,SAAA,iBAGnB,oBAGX,aACI,KAAK,KAAK,KAAK,CAAC,SAAQ,OAAO,SAAS,gBAE5C,MAAO,CAAC,SAAQ,GAAI,SAAQ,MAAM,gBAMhC,IAAI,MAAM,OAAQ,aAAc,KAAK,YAAa,KAAM,KACpD,KAAK,OAAQ,KAAK,4BACP,WAAW,WACd,WAAW,UACZ,WAAW,GAEtB,KAAK,UACP,KAAK,YAAY,OAAQ,WAG3B,WAAe,KAAK,gBAAkB,QAAU,WAIhD,MAAI,MAAK,YACA,CAAC,QAAQ,OAAO,QAEhB,SAKb,wBACE,MAAO,MAAK,KAGV,iBAAuB,MAAM,OAAO,OAKpC,MAHA,cAAmB,KAAI,aAAc,CAAC,EAAG,IACzC,aAAiB,YAAW,cAExB,MAAM,QAAQ,KAAK,KAAK,WACnB,KAAK,KAAK,UAAU,IACvB,KAAO,IAAM,EAAM,MAAK,aAAc,CAAC,EAAG,MAAQ,cAE/C,KAAK,KAAK,UAAY,EACzB,CAAG,MAAK,aAAc,CAAC,EAAG,KAAK,KAAK,aACpC,CAAC,mBAKP,oBACF,MAAK,MAAK,UAIH,KAAK,KAAK,iBAHR,MAMP,uBAEF,MAAK,MAAK,UAGH,KAAK,KAAK,oBAFR,KAAK,KAAK,QAKrB,oCACE,MAAM,6BAA6B,OAC/B,KAAK,MAAQ,MACf,KAAK,KAAK,6BAA6B,OAI3C,YACE,eAAmB,MAAM,oBAEgB,CACvC,gBAAiB,KAAK,gBACtB,YAAa,KAAK,YAClB,YAAa,KAAK,YAClB,SAAU,KAAK,SACf,OAAQ,KAAK,QAGX,KAAK,cAAgB,MACvB,SAAO,aAAkB,KAAK,cAGhC,eAAmB,KAAK,KAAK,YAE7B,MAAI,MAAK,iBAAmB,IAAI,WAC9B,SAAO,KAAU,CACf,UAAa,KAAK,KAAK,eACvB,OAAU,aAKd,OAAA,OAAA,GAAW,WAAe,WAAe,eAIpC,sCAGa,IAClB,eAAmB,QAAO,UACb,YAAY,WAAY,eACrC,MAAO,IAAI,KAAI,OAAO,OAAO,QAAQ,CAAC,UArfjC,IAAA,UAAY,MAwfrB,sBAAc,cAAc,KA90B5B,YAAA,aAw1BsC,uBAx1BtC,aAg7BmC,SAiCjC,kBACE,MAAM,MANC,KAAA,mBAAqB,OACrB,KAAA,2BAA6B,eAC7B,KAAA,8BAAgC,aAChC,KAAA,yBAAkD,QAIzD,KAAK,MAAQ,KAAK,MAClB,sBAAsB,KAAK,MAAO,SAClC,KAAK,WAAa,cACd,KAAK,YAAc,KAAO,KAAK,mBAAqB,KAAK,YAC7D,KAAK,QAAU,KAAK,SAAW,KAAO,GAAO,KAAK,QAElD,KAAK,kBAAoB,eACrB,KAAK,mBAAqB,KAAK,4BACnC,KAAK,qBAAuB,eACxB,KAAK,sBAAwB,KAAK,+BAEtC,KAAK,gBACD,eAAe,KAAK,iBAAmB,KAAK,0BAEhD,KAAK,kBAAoB,eAAe,KAAK,mBAC7C,KAAK,qBAAuB,eAAe,KAAK,sBAChD,KAAK,gBAAkB,eAAe,KAAK,iBAE3C,KAAK,iBAAmB,cAAc,KAAK,kBAC3C,KAAK,oBAAsB,cAAc,KAAK,qBAC9C,KAAK,eAAiB,cAAc,KAAK,gBAEzC,KAAK,QAAqB,KACtB,CAAC,EAAc,KAAI,CAAC,EAAG,KAAK,SAAW,KAAO,EAAI,KAAK,YAC3D,KAAK,iBAA8B,KAAI,CACrC,EACW,KACP,CAAC,EAAG,KAAK,kBAAoB,KAAO,EAAI,KAAK,qBAEnD,KAAK,UAAY,KAAK,MACtB,KAAK,YAAc,KACnB,KAAK,qBAAuB,KAG9B,kBACE,WAAa,mBAAmB,YAEhC,KAAK,OAAS,KAAK,UACf,SAAU,CAAC,WAAW,WAAW,OAAS,GAAI,KAAK,OAAQ,KAC3D,KAAK,kBAAmB,KAAK,kBAAmB,GAChD,KAAK,kBACT,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,CAAC,KAAK,MAAO,KAAK,OAAQ,KAC9C,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBACL,KAAK,QACP,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,OAAQ,KAAM,KAAK,gBACjC,KAAK,gBAAiB,GAAM,KAAK,gBAErC,KAAK,KAAO,KAEd,KAAK,MAAQ,GASf,oBACE,MAAO,MAAK,KAEV,GADA,OAAS,OACL,OAAO,SAAW,EACpB,KAAM,IAAI,YACN,8CAA8C,OAAO,WAE3D,eAAiB,OAAO,GACxB,OAAS,OAAO,GAChB,cAAiB,OAAO,UAAe,KAAO,GAAQ,OAAO,SAEzD,EAAI,KAAK,SAAW,KAAK,QAAU,GAAK,KAAK,aAAe,MAC9D,MAAK,YAAc,oBAAoB,CAClB,KAAM,IAAU,SAAS,QACzB,KAAM,KAAK,QACX,SAAA,aAGnB,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACrD,KAAK,sBAAwB,MAC/B,MAAK,qBAAuB,oBAAoB,CAClB,KAAM,IAAU,SAAS,YACzB,KAAM,KAAK,iBACX,SAAA,aAGhC,aACuB,KAAK,sBACF,KAAK,qBAC3B,QAAU,KACZ,EAAM,KAAQ,IAAI,OAAQ,QAAS,KAAK,OAAO,QAE/C,EAAM,KAAI,OAAQ,KAAK,OAAO,QAE5B,KAAK,MAAQ,MACf,GAAM,QAAQ,EAAG,KAAK,KAAK,SAEzB,WAAa,MACf,YAAiB,IAAI,WAAY,YAEnC,WAAiB,KAAI,EAAK,KAAI,WAAY,KAAK,gBAAgB,SAC/D,MAAI,MAAK,YAAc,MACrB,QAAS,KAAK,WAAW,MAAM,SAI1B,CAAC,OAAQ,UAIpB,YACE,eAAmB,MAAM,oBAEgB,CACvC,MAAO,KAAK,MACZ,WAAY,oBAAoB,KAAK,YACrC,QAAS,KAAK,QACd,kBAAmB,qBAAqB,KAAK,mBAC7C,qBAAsB,qBAAqB,KAAK,sBAChD,gBAAiB,qBAAqB,KAAK,iBAC3C,kBAAmB,qBAAqB,KAAK,mBAC7C,qBAAsB,qBAAqB,KAAK,sBAChD,gBAAiB,qBAAqB,KAAK,iBAC3C,oBAAqB,qBAAqB,KAAK,qBAC/C,iBAAkB,oBAAoB,KAAK,kBAC3C,oBAAqB,oBAAoB,KAAK,qBAC9C,eAAgB,oBAAoB,KAAK,gBACzC,QAAS,KAAK,QACd,iBAAkB,KAAK,kBAGzB,MAAA,QAAA,OAAA,GAAW,WAAe,WArKrB,cAAA,UAAY,gBAwKrB,sBAAc,cAAc,eA1lC5B,cAAA,aAqrC+B,KAG7B,kBACE,KAAK,KAAO,GAAI,eAAc,MAC9B,MAAM,MAIR,oBACE,MAAO,MAAK,KACN,KAAK,KAAK,aAAe,MACvB,SAAQ,KAAK,KAAK,aACtB,KAAK,KAAK,YAAc,MAEtB,KAAK,KAAK,sBAAwB,MAChC,SAAQ,KAAK,KAAK,sBACtB,KAAK,KAAK,qBAAuB,MAEnC,SAAa,QAAU,KAAO,KAAO,OAAO,eAC3B,QAAU,KAAO,KAAO,OAAO,sBAE5C,QAAU,KAAO,KAAO,OAAO,aACnC,MAAO,OAAM,KAAK,OAAQ,CAAC,KAAM,SAAA,UAAU,uBAKxC,yBAGL,MAAO,IAAI,KAAI,WA7BV,UAAA,UAAY,YAgCrB,sBAAc,cAAc,WAvtC5B,YAAA,aA4vC6B,SAqC3B,kBACE,MAAM,MACN,GAbO,KAAA,mBAAqB,OACrB,KAAA,6BAAqD,cAErD,KAAA,2BAA6B,eAC7B,KAAA,8BAAgC,aAChC,KAAA,yBAAkD,QAQrD,KAAK,WACP,KAAM,IAAI,YACN,+DAEN,KAAK,MAAQ,KAAK,MAClB,sBAAsB,KAAK,MAAO,SAClC,KAAK,WAAa,cACd,KAAK,aAAe,OAAY,KAAK,mBACL,KAAK,YACzC,KAAK,oBAAsB,cACvB,KAAK,sBAAwB,OACzB,KAAK,6BACL,KAAK,qBACb,KAAK,QAAU,KAAK,SAAW,KAAO,GAAO,KAAK,QAElD,KAAK,kBAAoB,eACrB,KAAK,mBAAqB,KAAK,4BACnC,KAAK,qBAAuB,eACxB,KAAK,sBAAwB,KAAK,+BAEtC,KAAK,gBACD,eAAe,KAAK,iBAAmB,KAAK,0BAEhD,KAAK,kBAAoB,eAAe,KAAK,mBAC7C,KAAK,qBAAuB,eAAe,KAAK,sBAChD,KAAK,gBAAkB,eAAe,KAAK,iBAE3C,KAAK,iBAAmB,cAAc,KAAK,kBAC3C,KAAK,oBAAsB,cAAc,KAAK,qBAC9C,KAAK,eAAiB,cAAc,KAAK,gBAEzC,KAAK,QAAqB,KACtB,CAAC,EAAc,KAAI,CAAC,EAAG,KAAK,SAAW,KAAO,EAAI,KAAK,YAC3D,KAAK,iBAA8B,KAAI,CACrC,EACW,KACP,CAAC,EAAG,KAAK,kBAAoB,KAAO,EAAI,KAAK,qBAEnD,KAAK,eAAiB,KAAK,eAC3B,KAAK,UAAY,KAAK,MACtB,KAAK,YAAc,KACnB,KAAK,qBAAuB,KAGvB,kBACL,WAAa,mBAAmB,YAChC,aAAiB,WAAW,WAAW,OAAS,GAChD,KAAK,OAAS,KAAK,UACf,SAAU,CAAC,SAAU,KAAK,MAAQ,GAAI,KAAM,KAAK,kBACjD,KAAK,kBAAmB,GAAM,KAAK,kBACvC,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,CAAC,KAAK,MAAO,KAAK,MAAQ,GAAI,KAClD,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBACL,KAAK,QACP,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,MAAQ,GAAI,KAAM,KAAK,gBACrC,KAAK,gBAAiB,GAAM,KAAK,gBAErC,KAAK,KAAO,KAId,KAAK,MAAQ,GAGf,oBACE,MAAO,MAAK,KAEV,GADA,OAAS,OACL,OAAO,SAAW,EACpB,KAAM,IAAI,YACN,uDACG,OAAO,WAGhB,cAAiB,OAAO,UAAe,KAAO,GAAQ,OAAO,kBAC9C,OAAO,GACtB,OAAS,OAAO,GAKZ,EAAI,KAAK,SAAW,KAAK,QAAU,GAAK,KAAK,aAAe,MAC9D,MAAK,YAAc,oBAAoB,CAClB,KAAM,IAAU,SAAS,QACzB,KAAM,KAAK,QACX,SAAA,UACA,MAAO,KAG1B,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACrD,KAAK,sBAAwB,MAC/B,MAAK,qBAAuB,oBAAoB,CAClB,KAAM,IAAU,SAAS,UACzB,KAAM,KAAK,iBACX,SAAA,UACA,MAAO,KAGvC,WAAe,KAAK,sBACF,KAAK,4BAKnB,EAAI,KAAK,SAAW,KAAK,QAAU,GACrC,QAAa,IAAI,OAAQ,OAAO,KAElC,YAAgB,KAAI,OAAQ,KAAK,OAAO,QACpC,KAAK,SACP,SAAY,QAAQ,QAAS,KAAK,KAAK,SAErC,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACvD,UAAe,IAAI,SAAU,UAAU,KAGzC,yBAA6B,KAAK,gBAAgB,iBAC3B,MACnB,qBAAsB,CAAC,EAAI,KAAK,MAAO,KAAK,OAC5C,qBAAqB,KAAO,eACV,KAAI,SAAU,gBAEX,MAAM,QAAS,EAAG,QAAQ,KAAO,2BAElD,MAAM,YAAa,EAAG,YAAY,KAAO,GACjD,EAAI,KAAK,oBAAoB,MAAU,KAAI,GAAI,aAC/C,EAAI,KAAK,oBAAoB,MAAU,KAAI,GAAI,aAE/C,eAAqB,KAAQ,IAAI,EAAG,UAAW,KAC/C,GAAK,KAAK,WAAW,MAAU,KAAI,GAAI,aAEvC,MACQ,KAAQ,IAAI,EAAG,UAAe,IAAQ,KAAI,EAAO,IAAI,IAAK,KAElE,MAAO,CAAC,EAAG,KAIf,YACE,eAAmB,MAAM,oBAEgB,CACvC,MAAO,KAAK,MACZ,WAAY,oBAAoB,KAAK,YACrC,oBAAqB,oBAAoB,KAAK,qBAC9C,QAAS,KAAK,QACd,kBAAmB,qBAAqB,KAAK,mBAC7C,qBAAsB,qBAAqB,KAAK,sBAChD,gBAAiB,qBAAqB,KAAK,iBAC3C,kBAAmB,qBAAqB,KAAK,mBAC7C,qBAAsB,qBAAqB,KAAK,sBAChD,gBAAiB,qBAAqB,KAAK,iBAC3C,oBAAqB,qBAAqB,KAAK,qBAC/C,iBAAkB,oBAAoB,KAAK,kBAC3C,oBAAqB,oBAAoB,KAAK,qBAC9C,eAAgB,oBAAoB,KAAK,gBACzC,QAAS,KAAK,QACd,iBAAkB,KAAK,iBACvB,eAAgB,KAAK,eACrB,WAAY,IAGd,MAAA,QAAA,OAAA,GAAW,WAAe,WAvMrB,QAAA,UAAY,UA0MrB,sBAAc,cAAc,SAx8C5B,QAAA,aAs+CyB,KAGvB,kBACM,KAAK,iBAAmB,GAC1B,QAAQ,KACJ,kHAGN,KAAK,KAAO,GAAI,SAAQ,MACxB,MAAM,MAIR,oBACE,MAAO,MAAK,KACN,KAAK,KAAK,aAAe,MACvB,SAAQ,KAAK,KAAK,aACtB,KAAK,KAAK,YAAc,MAEtB,KAAK,KAAK,sBAAwB,MAChC,SAAQ,KAAK,KAAK,sBACtB,KAAK,KAAK,qBAAuB,MAEnC,SAAa,QAAU,KAAO,KAAO,OAAO,eAC3B,QAAU,KAAO,KAAO,OAAO,sBAE5C,QAAU,KAAO,KAAO,OAAO,aACnC,MAAO,OAAM,KAAK,OAAQ,CAAC,KAAM,SAAA,UAAU,uBAKxC,yBAGL,MAAI,SAAO,gBAAqB,GAC9B,SAAO,eAAoB,GAEtB,GAAI,KAAI,WArCV,IAAA,UAAY,MAwCrB,sBAAc,cAAc,KAhhD5B,aAAA,aAujD8B,SAsC5B,kBACE,MAAM,MAZC,KAAA,mBAAqB,OACrB,KAAA,6BAA+B,cAC/B,KAAA,2BAA6B,eAC7B,KAAA,8BAAgC,aAEhC,KAAA,yBAA2B,QASlC,KAAK,MAAQ,KAAK,MAClB,sBAAsB,KAAK,MAAO,SAClC,KAAK,WAAa,cACd,KAAK,aAAe,OAAY,KAAK,mBACL,KAAK,YACzC,KAAK,oBAAsB,cACvB,KAAK,sBAAwB,OACzB,KAAK,6BACL,KAAK,qBACb,KAAK,QAAU,KAAK,SAAW,KAAO,GAAO,KAAK,QAElD,KAAK,kBAAoB,eACrB,KAAK,mBAAqB,KAAK,4BACnC,KAAK,qBAAuB,eACxB,KAAK,sBAAwB,KAAK,+BAEtC,KAAK,gBACD,eAAe,KAAK,iBAAmB,KAAK,0BAChD,KAAK,eAAiB,KAAK,eAE3B,KAAK,kBAAoB,eAAe,KAAK,mBAC7C,KAAK,qBAAuB,eAAe,KAAK,sBAChD,KAAK,gBAAkB,eAAe,KAAK,iBAE3C,KAAK,iBAAmB,cAAc,KAAK,kBAC3C,KAAK,oBAAsB,cAAc,KAAK,qBAC9C,KAAK,eAAiB,cAAc,KAAK,gBAEzC,KAAK,QAAqB,KACtB,CAAC,EAAc,KAAI,CAAC,EAAG,KAAK,SAAW,KAAO,EAAI,KAAK,YAC3D,KAAK,iBAA8B,KAAI,CACrC,EACW,KACP,CAAC,EAAG,KAAK,kBAAoB,KAAO,EAAI,KAAK,qBAEnD,KAAK,eAAiB,KAAK,eAC3B,KAAK,UAAY,CAAC,KAAK,MAAO,KAAK,OACnC,KAAK,YAAc,KACnB,KAAK,qBAAuB,KAGvB,kBAAA,OACL,WAAa,mBAAmB,YAChC,aAAiB,WAAW,WAAW,OAAS,GAChD,KAAK,OAAS,KAAK,UACf,SAAU,CAAC,SAAU,KAAK,MAAQ,GAAI,KAAM,KAAK,kBACjD,KAAK,kBAAmB,GAAM,KAAK,kBACvC,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,CAAC,KAAK,MAAO,KAAK,MAAQ,GAAI,KAClD,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBACT,oBACA,GAAI,KAAK,SACP,GAAI,KAAK,gBACP,qBAAyB,KAAK,8BACR,KAAK,MAC3B,gBAAkB,GAAI,IAAC,aAAyB,aAI9C,mBAEE,OAAW,iBAAiB,MAAM,CAAC,mBACvB,GAAI,QAAQ,MAAM,CAAC,uBAChB,iBAAiB,MAAM,CAAC,cAAgB,IACvD,MAAS,sBACH,qBAAqB,GAAI,IAAK,UAR/B,GAAA,UAAY,aAAA,QAYrB,iBAAkB,KAAK,gBAEzB,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,MAAQ,GAAI,KAAM,gBAAiB,KAAK,gBACtD,GAAM,KAAK,oBAEf,MAAK,KAAO,KAId,KAAK,MAAQ,GAGf,oBACE,MAAO,MAAK,KACV,cAAiB,OAAO,UAAe,KAAO,GAAQ,OAAO,SAE7D,GADA,OAAS,OACL,OAAO,SAAW,EACpB,KAAM,IAAI,YACN,wDACG,OAAO,WAEhB,aAAe,OAAO,YACL,OAAO,GACxB,OAAS,OAAO,GACZ,EAAI,KAAK,SAAW,KAAK,QAAU,GAAK,KAAK,aAAe,MAC9D,MAAK,YAAc,oBAAoB,CAClB,KAAM,IAAU,SAAS,QACzB,KAAM,KAAK,QACX,SAAA,UACA,MAAO,KAG1B,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACrD,KAAK,sBAAwB,MAC/B,MAAK,qBAAuB,oBAAoB,CAClB,KAAM,IAAU,SAAS,UACzB,KAAM,KAAK,iBACX,SAAA,UACA,MAAO,KAGvC,WAAe,KAAK,sBAEhB,KAAK,6BASL,EAAI,KAAK,SAAW,KAAK,QAAU,GACrC,QAAa,IAAI,OAAQ,OAAO,KAElC,MAAU,KAAI,OAAQ,KAAK,OAAO,QAC9B,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACvD,UAAe,IAAI,SAAU,UAAU,KAEzC,EAAQ,KAAI,EAAK,KAAI,SAAU,KAAK,gBAAgB,SAChD,KAAK,SACP,GAAM,QAAQ,EAAG,KAAK,KAAK,SAG7B,iBAA6B,MAAM,EAAG,EAAG,EAAE,KAAO,GAElD,EAAI,KAAK,oBAAoB,MAAM,IACnC,EAAI,KAAK,oBAAoB,MAAM,IACnC,EAAQ,KAAQ,IAAI,EAAG,UAAe,IAAI,EAAG,KAAK,WAAW,MAAM,MACnE,EAAI,KAAK,oBAAoB,MAAM,IAEnC,MAAc,IAAI,EAAG,KAAK,WAAW,MAAM,IAE3C,MAAO,CAAC,EAAG,EAAG,KAIlB,YACE,eAAmB,MAAM,oBAEgB,CACvC,MAAO,KAAK,MACZ,WAAY,oBAAoB,KAAK,YACrC,oBAAqB,oBAAoB,KAAK,qBAC9C,QAAS,KAAK,QACd,kBAAmB,qBAAqB,KAAK,mBAC7C,qBAAsB,qBAAqB,KAAK,sBAChD,gBAAiB,qBAAqB,KAAK,iBAC3C,eAAgB,KAAK,eACrB,kBAAmB,qBAAqB,KAAK,mBAC7C,qBAAsB,qBAAqB,KAAK,sBAChD,gBAAiB,qBAAqB,KAAK,iBAC3C,oBAAqB,qBAAqB,KAAK,qBAC/C,iBAAkB,oBAAoB,KAAK,kBAC3C,oBAAqB,oBAAoB,KAAK,qBAC9C,eAAgB,oBAAoB,KAAK,gBACzC,QAAS,KAAK,QACd,iBAAkB,KAAK,iBACvB,eAAgB,KAAK,gBAGvB,MAAA,QAAA,OAAA,GAAW,WAAe,WAnNrB,SAAA,UAAY,WAsNrB,sBAAc,cAAc,UA/wD5B,SAAA,aAozD0B,KAGxB,kBACM,KAAK,iBAAmB,GAC1B,QAAQ,KACJ,kHAGN,KAAK,KAAO,GAAI,UAAS,MACzB,MAAM,MAIR,oBACE,MAAO,MAAK,KACN,KAAK,KAAK,aAAe,MACvB,SAAQ,KAAK,KAAK,aACtB,KAAK,KAAK,YAAc,MAEtB,KAAK,KAAK,sBAAwB,MAChC,SAAQ,KAAK,KAAK,sBACtB,KAAK,KAAK,qBAAuB,MAEnC,SAAa,QAAU,KAAO,KAAO,OAAO,eAC3B,QAAU,KAAO,KAAO,OAAO,sBAE5C,QAAU,KAAO,KAAO,OAAO,aACnC,MAAO,OAAM,KAAK,OAAQ,CAAC,KAAM,SAAA,UAAU,uBAKxC,yBAGL,MAAI,SAAO,gBAAqB,GAC9B,SAAO,eAAoB,GAEtB,GAAI,KAAI,WArCV,KAAA,UAAY,OAwCrB,sBAAc,cAAc,MA91D5B,oBAAA,aAu2DqC,SAKnC,kBACE,MAAM,MACN,KAAK,MAAQ,KAAK,SAGhB,aAKF,cAA4B,GAC5B,eAAmB,MAAK,MAAM,QAAQ,UAChC,MAAM,QAAQ,KAAK,WACrB,UAAU,KAAK,GAAG,KAAK,WAEvB,UAAU,KAAK,KAAK,WAGxB,MAAO,WAGT,oBACE,MAAO,MAAK,KACV,OAAS,OACT,WAAa,OAAO,MAAM,gBAGO,GACjC,eAAmB,MAAK,MAAM,QAAQ,UAChC,MAAM,QAAQ,KAAK,WACrB,aAAa,KAAK,OAAO,OAAO,EAAG,KAAK,UAAU,SAElD,aAAa,KAAK,OAAO,OAAO,EAAG,IAGvC,aAAa,UAGb,oBAAoC,cAEpC,UAAa,EAAG,EAAI,KAAK,MAAM,OAAQ,EAAE,GACvC,SAAa,KAAK,MAAM,GACxB,OAAS,aAAa,GAElB,IAAM,EACR,WAAa,CAAC,OAAO,IAAI,OAAO,QAEhC,WAAa,CAAC,WAAW,IAAI,OAAO,QAEtC,WAAa,KAAK,KAAK,WAAY,QACnC,gBAAgB,KAAK,WAAW,MAAM,IAIxC,OAAS,GACT,qBAAyB,iBAAgB,QAAQ,UAC/C,OAAO,KAAK,GAAG,YAEjB,MAAO,CAAC,WAAW,IAAI,OAAO,UAI3B,kBACD,gBAAgB,aAGlB,YAAc,WAAuB,IAEvC,WAAa,WACb,cACA,KAAK,MAAM,QAAQ,WACjB,UAAU,WAAW,IAAK,KAGxB,KAAK,MAAM,YACP,MAAM,QAAQ,KAAK,WACrB,UAAY,KAAK,UAAU,GAE3B,UAAY,KAAK,UAEnB,WAAa,CAAC,WAAW,GAAI,eAGjC,KAAK,MAAQ,GAGf,YACE,eAAmB,MAAM,0BAEH,MACb,EACL,UAAa,KAAK,eAClB,OAAU,KAAK,0BAIC,KAAK,MAAM,IAAI,uBAEpB,CAAC,MAAS,aAEzB,MAAA,QAAA,OAAA,GAAW,WAAe,eAIrB,sCAGa,IAClB,UAAyB,GACzB,qBAA0B,SAAO,MAC/B,MAAM,KAAK,YAAY,WAAY,gBAErC,MAAO,IAAI,KAAI,CAAC,WAGd,oBACF,GAAI,CAAC,KAAK,UACR,MAAO,GAET,YAAiC,GACjC,eAAmB,MAAK,MACtB,QAAQ,KAAK,GAAG,KAAK,kBAEvB,MAAO,YAGL,uBACF,YAAiC,GACjC,eAAmB,MAAK,MACtB,QAAQ,KAAK,GAAG,KAAK,qBAEvB,GAAI,CAAC,KAAK,WACR,qBAA0C,GAC1C,eAAmB,MAAK,MACtB,iBAAiB,KAAK,GAAG,KAAK,kBAEhC,MAAO,kBAAiB,OAAO,SAEjC,MAAO,SAQT,aACE,YAAiC,GACjC,eAAmB,MAAK,MACtB,QAAQ,KAAK,GAAG,KAAK,SAEvB,MAAO,eAAc,SASvB,oBACE,WAA+C,GAC/C,eAAmB,MAAK,OACtB,cAAkB,KAAK,QAAQ,oBACV,QAAQ,OAAO,WACpC,UAAa,EAAG,EAAI,KAAK,QAAQ,OAAQ,EAAE,EACzC,OAAO,KAAK,CAAC,KAAK,QAAQ,GAAI,aAAa,KAG/C,cAAc,UA5KT,gBAAA,UAAY,kBAiLrB,sBAAc,cAAc,iBAEtB,mCAMJ,IAAO,WAAM,KAAM,mBAAW,GAAO,aAAQ,GAAK,mBAE5B,IAAQ,SAAQ,QAAQ,iBAE3B,IAAQ,aAAa,cAAe,MAAM,WAG7D,GAAI,CAAC,QAAS,QAAS,EACrB,MAAW,MAAK,aAAa,SAG/B,UAAc,MAAM,QAAO,KAAK,QAAW,IAAI,YAE/C,MAAO,OAAM,IAAI,GAAS,KAAK,EAAE,UC/iEnC,WAAA,cAAA,MAAA,GAAA,aAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,KAAA,EAAA,QAAA,IAAA,GAAA,GAAA,IAAA,EAAA,KAAA,GAAA,GAAA,MAAA,MAAA,QAAA,uBAAA,WAAA,UAAA,KAAA,OAAA,sBAAA,GAAA,EAAA,GAAA,OAAA,IAAA,EAAA,QAAA,GAAA,IAAA,GAAA,OAAA,UAAA,qBAAA,KAAA,EAAA,GAAA,KAAA,GAAA,GAAA,IAAA,EAAA,GAAA,KAAA,MAAA,I8zCiFqC,UAjFrC,aAkHwB,KAMtB,kBACE,GAAI,KAAK,OACP,KAAM,IAAI,qBACN,sDAGN,GAAI,MAAM,QAAQ,KAAK,MACrB,KAAM,IAAI,qBACN,kEAGN,MAAM,MAEN,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KAGzC,oBACE,MAAW,MAAK,KAad,GAZI,KAAK,KAAK,aAAe,MACvB,SAAQ,KAAK,KAAK,aAEtB,KAAK,KAAK,YAAc,MAGtB,KAAK,KAAK,sBAAwB,MAChC,SAAQ,KAAK,KAAK,sBAEtB,KAAK,KAAK,qBAAuB,MAG/B,QAAU,OAAO,UACnB,KAAM,IAAI,YAAW,6CAGvB,SAAa,QAAU,KAAO,KAAO,OAAO,eAE3B,QAAU,KAAO,KAAO,OAAO,sBAG5C,QAAU,KAAO,KAAO,OAAO,aAEnC,MAAO,OAAM,KAAK,OAAQ,CAAC,KAAM,SAAA,UAAU,iBAI/C,+BACE,aAAsB,KAAK,yBAAyB,YAEpD,MAAK,MAAK,iBACR,UAAW,CAAC,SAAS,GAAI,GAAG,SAAS,MAAM,KAGzC,KAAK,aACP,UACI,CAAC,SAAU,GAAG,MAAM,GAAG,KAAK,CAAC,WAAW,GAAI,GAAG,SAAS,MAAM,QAG7D,SAGT,wBACE,MAAW,MAAK,KACd,IAAO,WAAa,KAAK,gBAEN,OAAO,kBAEN,KAAK,yBAAyB,uBAE/B,CAAC,YAAY,GAAI,GAAG,YAAY,MAAM,iBAEhC,MAAM,YAE/B,MAAI,OAAM,QAAQ,WACT,MAAM,UAAU,QAAQ,KAAK,cAG/B,CAAC,gBAIZ,6BAAiD,IAC3C,KAAK,KACP,GAAI,CAAC,KAAK,SACR,KAAM,IAAI,gBACN,mEAGN,eAAmB,KAAK,UAAU,GAAG,kBAEjB,KAAK,yBAAyB,uBAE/B,CAAC,YAAY,GAAI,GAAG,YAAY,MAAM,cAEvC,WAAW,GAE7B,GAAI,WAAa,KACf,KAAM,IAAI,YACN,yUASN,GAAI,KAAK,aAAe,KAClB,MAAM,QAAQ,KAAK,KAAK,WAC1B,KAAK,QAAU,KAAK,KAAK,UAAU,IAAI,IAAU,MAAM,aAEvD,KAAK,QAAU,CAAK,MAAM,qBAEnB,QAAU,KAEf,QAAQ,KAAK,SAGb,KAAK,YAAc,MACjB,SAAQ,KAAK,YACjB,KAAK,WAAa,IAGhB,MAAM,QAAQ,KAAK,KAAK,WAC1B,KAAK,QAAU,KAAK,KAAK,UAAU,IAAI,IAAU,MAAM,aAEvD,KAAK,QAAQ,GAAS,MAAM,iBAO9B,GAJK,MAAM,QAAQ,SACjB,QAAS,CAAC,SAGR,OAAO,SAAW,KAAK,QAAQ,OACjC,KAAM,IAAI,YACN,SAAS,KAAK,gBAAgB,KAAK,QAAQ,oCACxB,OAAO,0CACb,UAGf,UAKF,KAAK,WAAW,KAAK,KAAK,QAAQ,SAE9B,QAAQ,KAAK,SAGnB,cAAiB,EAAG,MAAQ,KAAK,QAAQ,OAAQ,EAAE,OACjD,UAAc,OAAO,qBAEC,WAEtB,GAAI,CAAC,aAAK,YAAY,MAAM,MAAO,eACjC,KAAM,IAAI,YACN,SAAS,oCAAoC,KAAK,wBAChC,iCACd,MAAM,SAGhB,KAAK,QAAQ,OAAS,OAI1B,KAAK,QAAU,KAAK,QAAQ,IAAI,QAAa,KAAK,OAAM,YAIlD,qCACR,IAAO,WAAY,QAAS,WAAY,iBAAS,QAAS,cACtD,KAAK,qBAEe,aAAe,kBAE7B,WAAW,gBAAkB,EAAI,KACjC,WAAW,gBAAkB,EAAI,QAE9B,iBACT,EAAG,WAAW,GAAI,SAAS,QAAQ,GAAI,aAAa,SAC3C,iBACT,EAAG,WAAW,GAAI,SAAS,QAAQ,GAAI,aAAa,aAEhC,CACtB,GAAG,WAAW,MAAM,EAAG,GACvB,GAAI,gBAAkB,CAAC,QAAS,KAAM,MAAQ,CAAC,KAAM,KAAM,UAG7D,MAAO,YAhMF,UAAA,UAAY,YApHrB,mBAAA,aA2ToC,UAWlC,kBACE,IACE,QACA,WACA,QACA,iBACA,WACA,cACE,KAEJ,MAAK,OAAA,OAAA,GAAK,KAAI,CAAE,MAAO,WAEvB,KAAK,QAAU,QACf,sBAAsB,KAAK,QAAS,WAEpC,KAAK,WAAa,eAAe,WAAY,EAAG,cAChD,KAAK,WAAW,QAAQ,MAAQ,sBAAsB,KAAM,eAE5D,KAAK,QAAU,eAAe,SAAW,EAAG,EAAG,WAC/C,KAAK,QAAQ,QAAQ,QAAU,sBAAsB,OAAQ,YAE7D,KAAK,QAAU,UAAW,QAC1B,iBAAiB,KAAK,SAEtB,KAAK,WAAa,YAAc,eAChC,gBAAgB,KAAK,YAErB,KAAK,aAAe,eAAe,cAAgB,EAAG,EAAG,gBACzD,KAAK,aAAa,QACd,MAAQ,sBAAsB,KAAM,iBAGnC,kBAAA,OACL,WAAa,mBAAmB,YAEhC,gBACI,KAAK,aAAe,gBAAkB,EAAI,WAAW,OAAS,EAElE,GAAI,WAAW,cAAgB,KAC7B,KAAM,IAAI,YACN,+DACS,WAAW,gBAG1B,aAAiB,WAAW,0BAEP,cAGjB,KAAK,WAAW,OAAO,CAAC,SAAU,KAAK,QAAU,eAErD,KAAK,OAAS,KAAK,UACf,SAAU,YAAa,KAAM,KAAK,kBAClC,KAAK,kBAAmB,GAAM,KAAK,kBAEvC,yBACI,KAAK,WAAW,OAAO,CAAC,KAAK,QAAS,KAAK,QAAU,eAOzD,GALA,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,qBAAsB,KAC1C,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBAEL,KAAK,SACP,oBAEA,GAAI,KAAK,gBACP,UAAa,KAAK,wBAEF,KAAK,QAErB,gBAAkB,GAAI,IAAC,aAAyB,aAI9C,mBACE,UAAc,MAAK,MAAM,CAAC,gBACR,MAAK,CAAC,oBACN,MAAK,MAAM,CAAC,QAAU,IACxC,MAAS,aAAY,CAAC,MAAO,MAAO,cAN/B,GAAA,UAAY,aAAA,QAUrB,iBAAkB,KAAK,gBAGzB,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,QAAU,cAAe,KAAM,gBAC7C,KAAK,gBAAiB,GAAM,KAAK,gBAGvC,KAAK,MAAQ,GAGf,oBACE,MAAW,MAAK,KACd,GAAI,OAAO,SAAW,EACpB,KAAM,IAAI,YACN,8DACG,OAAO,WAGhB,cAAiB,OAAO,UAAe,KAE7B,OAAO,YACA,OAAO,YACP,OAAO,gBAEH,EAIjB,EAAI,KAAK,SAAW,KAAK,QAAU,GAAK,KAAK,aAAe,MAC9D,MAAK,YAAc,oBAAoB,CAClB,KAAM,IAAU,SAAS,GACzB,KAAM,KAAK,QACX,SAAA,UACA,MAAO,gBAI9B,gBAAoB,KAAK,yBAGrB,iBACM,CAAC,MAAQ,CAAC,KAAK,OACV,GAGE,IAAI,KAAK,OAAQ,OAGzB,aAAa,EAAG,YAAa,MAC7B,aAAa,EAAG,YAAa,MAC7B,aAAa,EAAG,YAAa,MAC7B,aAAa,EAAG,YAAa,GAElC,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACrD,KAAK,sBAAwB,MAC/B,MAAK,qBAAuB,oBAAoB,CAClB,KAAM,IAAU,SAAS,UACzB,KAAM,KAAK,iBACX,SAAA,UACA,MAAO,gBAIvC,mBAAuB,KAAK,wBAEnB,aAAa,SAAU,eAAgB,MACvC,aAAa,SAAU,eAAgB,MACvC,aAAa,SAAU,eAAgB,MACvC,aAAa,SAAU,eAAgB,qBAEtB,oCAGlB,MAAM,KAAK,OAAO,OAAQ,aAAc,6CAEG,KAAK,QAChD,MAAM,KAAK,KAAK,OAAQ,cAC5B,CAAC,KAAM,KAAM,KAAM,MAEvB,GAAK,KAAK,UAAU,GAAI,QAAS,MAAO,KAAK,SAC7C,GAAK,KAAK,UAAU,GAAI,QAAS,MAAO,KAAK,SAC7C,GAAK,KAAK,UAAU,GAAI,QAAS,MAAO,KAAK,SAC7C,GAAK,KAAK,UAAU,GAAI,QAAS,MAAO,KAAK,SAE7C,iDACQ,MACA,KAAK,gBAAgB,OAAQ,aAAc,mBAEnD,GAAK,KAAK,cAAc,GAAI,YAC5B,GAAK,KAAK,cAAc,GAAI,YAC5B,GAAK,KAAK,cAAc,GAAI,YAC5B,GAAK,KAAK,cAAc,GAAI,YAE5B,MAAU,KAAK,oBAAoB,MAAU,KAAI,GAAI,OAC3C,KAAK,oBAAoB,MAAU,KAAI,GAAI,OACvC,KACN,IAAI,EAAG,UACP,IAAI,EAAG,KAAK,WAAW,MAAU,KAAI,GAAI,SACnC,IACV,KAAK,oBAAoB,MAAU,KAAI,GAAI,KAC3C,KAAK,WAAW,MAAM,IAE1B,MAAO,CAAC,EAAG,EAAG,KAIlB,YACE,OAAM,MAAA,aAAC,SAAU,cAAE,OAAA,GAAA,CAAA,kBAE0B,CAC3C,QAAS,KAAK,QACd,WAAY,KAAK,WACjB,QAAS,KAAK,QACd,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,QAAS,KAAK,SAGhB,MAAA,QAAA,OAAA,GAAW,WAAe,SAG5B,0BACE,QAAgB,OACZ,EAAmB,EAAmB,KAAK,QAC1C,UAAW,QACZ,KAAK,aAAe,gBAAkB,OAAS,OAC/C,KAAK,cAET,MAAI,GACO,QAAQ,IAAK,EAAG,KAAK,YAGzB,IAGT,mBACE,YAAgB,EAEhB,MAAW,QACP,EAAmB,EAAmB,QAAS,OAC/C,KAAK,aAAe,gBAAkB,OAAS,UAzO9C,eAAA,UAAY,iBA6OjB,sBAAc,cAAc,gBA1iBhC,eAAA,aA+iBgC,WAI9B,kBACE,SAAa,GAAI,gBAAe,MAEhC,MAAM,OAAA,OAAA,GAAI,KAAI,CAAE,cAIX,yBAGL,MAAO,IAAI,KAAI,WAZV,WAAA,UAAY,aAgBjB,sBAAc,cAAc,YCjkBhC,YAAA,aAkD6B,OAO3B,kBACE,MAAM,MACN,KAAK,KAAO,KAAK,IAAI,KAAK,IAAI,KAAK,KAAM,GAAI,GAE7C,KAAK,WAAa,KAAK,WACvB,KAAK,KAAO,KAAK,KACjB,KAAK,gBAAkB,GAGf,sBACR,GAAI,KAAK,YAAc,KACrB,MAAO,MAAK,WAEd,eAAmB,OAAM,iBACC,GAC1B,UAAa,EAAG,EAAI,KAAK,WAAW,OAAQ,EAAE,EAC5C,WAAW,KACP,KAAK,WAAW,IAAM,KAAO,WAAW,GAAK,KAAK,WAAW,IAEnE,MAAO,YAGT,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAC5B,WAAc,oBAAoB,QAClC,GAAI,EAAI,KAAK,MAAQ,KAAK,KAAO,GAC/B,cACI,OAAO,UAAe,KAAO,GAAQ,OAAO,oBAC7B,KAAK,cAAc,eACrB,aACb,IAAQ,SAAQ,OAAO,KAAK,KAAM,WAAY,KAAK,MACnD,IAAM,OAAO,WACjB,MAAO,QAET,MAAO,UAIX,YACE,YAAe,CACb,KAAM,KAAK,KACX,WAAY,KAAK,WACjB,KAAM,KAAK,iBAEM,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,QAGT,UACE,MAAO,OAAM,YAxDR,QAAA,UAAY,UA2DrB,sBAAc,cAAc,SA/G5B,qBAAA,aA2KsC,SAIpC,kBACE,MAAM,MACN,KAAK,UAAY,CAAC,CAAC,KAAM,IAGjB,sBACR,eAAmB,OAAM,MACzB,MAAO,CAAC,WAAW,GAAI,EAAG,WAAW,MAThC,iBAAA,UAAY,mBAYrB,sBAAc,cAAc,kBAzL5B,UAAA,aA2L2B,OAmBzB,kBACE,MAAM,MACN,GAhBM,KAAA,WAA2B,KAC3B,KAAA,QAAU,GAGV,KAAA,OAAwB,KACxB,KAAA,KAAsB,KAErB,KAAA,2BAAoD,eACpD,KAAA,yBAAkD,QAQrD,KAAK,iBAAmB,MAAQ,KAAK,YAAc,MACnD,KAAK,UAAY,MAGnB,cAAwB,KACpB,KAAK,WAAa,MACpB,WAAY,KAAK,WAEnB,KAAK,gBAAkB,CAAC,UAAW,KAAK,UAG1C,KAAK,MAAQ,KAAK,MAClB,sBAAsB,KAAK,MAAO,SAClC,KAAK,WAAa,cAAc,KAAK,YACjC,KAAK,SAAW,MAClB,MAAK,QAAU,KAAK,SAEtB,KAAK,kBAAoB,eACrB,KAAK,mBAAqB,KAAK,4BACnC,KAAK,gBACD,eAAe,KAAK,iBAAmB,KAAK,0BAChD,KAAK,iBAAmB,cAAc,KAAK,kBAC3C,KAAK,eAAiB,cAAc,KAAK,gBACzC,KAAK,kBAAoB,eAAe,KAAK,mBAC7C,KAAK,gBAAkB,eAAe,KAAK,iBAC3C,KAAK,oBAAsB,eAAe,KAAK,qBAC/C,KAAK,gBAAkB,GAEvB,KAAK,UAAY,CAAC,CAAC,QAAS,IAGvB,kBACL,WAAa,mBAAmB,YAChC,iBAAqB,WAAW,WAAW,OAAS,GAChD,KAAK,QAAU,MACjB,MAAK,OAAS,KAAK,UACf,SAAU,CAAC,aAAc,KAAK,OAAQ,KAAM,KAAK,kBACjD,KAAK,kBAAmB,GAAM,KAAK,kBACnC,KAAK,SACP,MAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,OAAQ,KAAM,KAAK,gBACjC,KAAK,gBAAiB,GAAM,KAAK,kBAIzC,KAAK,UAAY,CAAC,CAAC,QAAS,EAAG,KAAM,EAAE,IAAK,gBAC5C,KAAK,MAAQ,GAGf,+BACE,WAAa,mBAAmB,YAChC,gBAAoB,WAAW,QAC/B,MAAA,aAAY,YAAY,OAAS,GAAK,KAAK,MACpC,YAGT,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAE5B,WAAc,oBAAoB,4BAE9B,2BAA2B,KAAK,WAAW,uBAG/C,MAAI,sBAAuB,KACzB,OAAW,KACP,OAAO,KAAK,OAAO,OAAQ,oBAC3B,KAAK,KAAO,KAAK,KAAK,OAAS,MAEnC,QAAW,KAAI,OAAO,KAAK,OAAO,QAC9B,KAAK,MAAQ,MACf,QAAW,QAAQ,OAAQ,KAAK,KAAK,SAEnC,KAAK,YAAc,MACrB,QAAS,KAAK,WAAW,MAAM,UAI5B,SAIX,YACE,YAAyC,CACvC,MAAO,KAAK,MACZ,WAAY,oBAAoB,KAAK,YACrC,QAAS,KAAK,QACd,kBAAmB,qBAAqB,KAAK,mBAC7C,gBAAiB,qBAAqB,KAAK,iBAC3C,kBAAmB,qBAAqB,KAAK,mBAC7C,gBAAiB,qBAAqB,KAAK,iBAC3C,oBAAqB,qBAAqB,KAAK,qBAC/C,iBAAkB,oBAAoB,KAAK,kBAC3C,eAAgB,oBAAoB,KAAK,4BAExB,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UArHF,MAAA,UAAY,QAwHrB,sBAAc,cAAc,OArT5B,YAAA,aA4T6B,OAK3B,kBACE,KAAO,MAAQ,GACf,MAAM,MACN,KAAK,UAAY,CAAC,CAAC,QAAS,IAC5B,KAAK,WAAa,KAAK,WAGzB,+BACE,WAAa,mBAAmB,YAChC,cAAkB,YAAW,MAAM,GACjC,GAAI,KAAO,KACT,KAAM,IAAI,YACN,iEACQ,WAAW,MAAM,qHAKjC,MAAO,CAAC,WAAW,GAAI,UAAU,WAAY,IAG/C,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAE5B,WAAY,oBAAoB,QAChC,GAAI,KAAK,aAAe,iBAAmB,OAAM,KAAO,GACtD,gBAA8B,CAAC,GAC/B,UAAa,EAAG,EAAI,OAAM,KAAM,EAAE,EAChC,YAAY,KAAK,GAEnB,YAAY,KAAK,GACjB,OAAQ,OAAM,UAAU,aAG1B,MAAS,cAAa,UAI1B,YACE,YAAyC,GACrC,KAAK,YAAc,MACrB,SAAO,WAAgB,KAAK,YAE9B,eAAmB,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UA/CF,QAAA,UAAY,UAkDrB,sBAAc,cAAc,SAlX5B,gBAAA,aA2XgC,OAK9B,kBACE,MAAM,MACN,KAAK,gBAAkB,GACvB,KAAK,WAAa,cAAc,KAAK,YAGvC,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAC5B,WAAc,oBAAoB,QAClC,MAAO,MAAK,WAAW,MAAM,UAIjC,YACE,YAAe,CAAC,WAAY,oBAAoB,KAAK,wBAClC,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UArBF,YAAA,UAAY,aAwBrB,sBAAc,cAAc,aArZ5B,iBAAA,aAmakC,OAKhC,kBACE,MAAM,MACN,KAAK,EAAI,KAAK,EACd,KAAK,UAAY,CAAC,CAAC,KAAM,IAG3B,+BACE,MAAO,CAAC,WAAW,GAAI,KAAK,EAAG,WAAW,IAG5C,oBACE,MAAO,MAAK,IACV,QAAS,oBAAoB,QACpB,OAAO,OAAQ,KAAK,KAIjC,YACE,YAAe,CACb,EAAG,KAAK,cAES,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UA1BF,aAAA,UAAY,eA6BrB,sBAAc,cAAc,cAlc5B,aAAA,aAoc6B,OAK3B,kBACE,MAAM,MACN,KAAK,YAAc,KAAK,YAGxB,UAAa,EAAG,EAAI,KAAK,YAAY,OAAQ,EAAE,EACzC,KAAK,UAAU,KAAK,YAAY,KAClC,MAAK,YAAY,GAAK,MAKpB,eACN,MAAO,KAAM,GAAK,KAAO,KAiBnB,4CACN,aAAiB,wDACE,YAAY,cACnB,UACE,KACd,UAAa,EAAG,EAAI,WAAW,OAAQ,EAAE,GACvC,QAAY,WAAW,GACvB,GAAI,KAAK,UAAU,KACjB,GAAI,UAAY,KACd,QAAU,MAEV,MAAM,IAAI,YAAW,gDAGvB,QAAS,IAIb,iBAAqB,UAAU,YAC/B,GAAI,UAAY,MACd,GAAI,QAAU,GAAK,aAAe,QAAU,EAC1C,KAAM,IAAI,YAAW,UAEvB,WAAW,SAAW,aAAe,cAC5B,eAAiB,MAC1B,KAAM,IAAI,YAAW,UAGvB,MAAO,YAGT,+BACE,mBAAqB,GACrB,UAAa,EAAG,EAAI,WAAW,OAAQ,EAAE,EACvC,GAAI,KAAK,UAAU,WAAW,KAC5B,eAAiB,GACjB,MAIJ,MAAI,gBACK,WAAW,MAAM,EAAG,GAAG,OAAO,KAAK,aAEnC,WAAW,MAAM,EAAG,GAAG,OAC1B,KAAK,oBAAoB,WAAW,MAAM,GAAI,KAAK,cAI3D,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAC5B,WAAc,oBAAoB,mBACf,OAAM,kBACL,WAAW,MAAM,EAAG,GAAG,OACvC,KAAK,oBAAoB,WAAW,MAAM,GAAI,KAAK,cACvD,MAAO,QAAM,QAAQ,eAIzB,YACE,YAAe,CACb,YAAa,KAAK,wBAED,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UAlGF,SAAA,UAAY,UAqGrB,sBAAc,cAAc,UA3iB5B,YAAA,aAujB6B,OAM3B,kBACE,MAAM,MACN,GAAI,KAAK,MAAQ,KACf,KAAM,IAAI,OACN,mFAGN,GAAI,CAAC,MAAM,QAAQ,KAAK,MACtB,KAAM,IAAI,OACN,sEACG,KAAK,iBAId,0BAA8B,OAAM,EAAG,KAAK,KAAK,OAAS,GAC1D,GAAI,CAAC,aAAK,YAAY,KAAK,KAAK,QAAQ,OAAQ,uBAC9C,KAAM,IAAI,OACN,+BAAiC,KAAK,UAAU,KAAK,MACrD,8DAGN,KAAK,KAAO,KAAK,KACjB,KAAK,mBAAqB,CAAC,GAAG,OAAO,KAAK,MAC1C,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KAAK,KAAK,OAAS,KAG5D,+BACE,WAAa,mBAAmB,YAChC,gBAAoB,WAAW,QAC/B,MAAA,MAAK,KAAK,QAAQ,UAChB,YAAY,EAAI,GAAM,WAAqB,OAEtC,YAGT,oBACE,MAAO,WAAU,oBAAoB,QAAS,KAAK,oBAGrD,YACE,YAAe,CACb,KAAM,KAAK,iBAEM,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UAjDF,QAAA,UAAY,UAoDrB,sBAAc,cAAc,SA7mB5B,YAAA,aAsnB6B,OAK3B,kBACE,MAAM,MAAQ,KAAO,GAAK,MAC1B,KAAK,gBAAkB,GACnB,MAAQ,KACV,KAAK,UAAY,KAAK,WAAa,KAAO,EAAI,KAAK,UAEnD,KAAK,UAAY,EAIrB,+BACE,MAAO,YAGT,YACE,eAAmB,MAAM,oBACV,CAAC,UAAW,KAAK,WAChC,MAAA,QAAO,OAAO,QAAQ,YACf,QAGT,yBACE,WAAc,oBAAoB,aACrB,GACb,MAAO,KAAI,SAAS,OAAO,KAAK,WAAY,MAG9C,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAC5B,WAAc,oBAAoB,aACrB,YACI,eACG,IAAI,SAAS,OAAO,KAAK,WAAY,KAAM,iBAChD,OAAM,IAAI,YAAY,OAAO,OAAM,QAClD,MAAO,YAtCJ,QAAA,UAAY,UA0CrB,sBAAc,cAAc,SClqB5B,cAAA,aA2E+B,OAgB7B,kBACE,MAAM,MACN,GATM,KAAA,WAA4B,KAE3B,KAAA,+BACL,gBAME,KAAK,iBAAmB,MAAQ,KAAK,YAAc,MAKrD,cAAwB,KACpB,KAAK,WAAa,MACpB,WAAY,KAAK,WAEf,KAAK,aAAe,KAGtB,KAAK,gBAAkB,CAAC,UAAW,MAInC,KAAK,gBACD,CAAC,WAAW,OAAqB,OAAO,KAAK,cAGrD,KAAK,SAAW,KAAK,SACP,sBAAsB,KAAK,SAAU,YACnD,KAAK,UAAY,KAAK,UACR,sBAAsB,KAAK,UAAW,aACpD,KAAK,sBAAwB,eACzB,KAAK,uBAAyB,KAAK,gCACvC,KAAK,sBAAwB,eAAe,KAAK,uBACjD,KAAK,oBAAsB,eAAe,KAAK,qBAC/C,KAAK,qBAAuB,cAAc,KAAK,sBAC/C,KAAK,SAAW,KAAK,SACrB,KAAK,gBAAkB,KAAK,SAC5B,KAAK,YAAc,KAAK,YAGnB,kBACL,KAAK,WAAa,KAAK,UACnB,aAAc,CAAC,KAAK,SAAU,KAAK,WAAY,KAAK,MACpD,KAAK,sBAAuB,KAAK,sBAAuB,GACxD,KAAK,sBACT,KAAK,MAAQ,GAKL,0CAEV,yBACE,MAAO,MAAK,IACL,KAAK,SAGR,QAAS,oBAAoB,QACtB,SAAS,OAAQ,UAAU,UAH3B,MAQb,+BAEE,GADA,WAAa,mBAAmB,YAC5B,KAAK,aAAe,KACtB,MAAO,CAAC,GAAG,WAAY,KAAK,WAG9B,WAAuC,OAAO,KAAK,aACnD,GAAI,OAAO,SAAW,WAAW,OAAS,EACxC,KAAM,IAAI,YACN,oBAAoB,KAAK,mDACA,cACxB,CACL,MAAQ,EACR,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,GACnC,OAAW,OAAO,MACP,WAAW,EAAI,GAC1B,GAAK,IAAM,MAAU,IAAM,MAAU,KAAO,GAC1C,KAAM,IAAI,YACN,oBAAoB,KAAK,mDACA,cACpB,IAAM,MACf,QAAO,GAAK,IAEd,KAGJ,MAAO,CAAC,WAAW,GAAI,GAAG,OAAQ,KAAK,WAGzC,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAE5B,WAAY,oBAAoB,QAC5B,OAAM,QAAU,SAClB,QAAU,OAAK,OAAO,UAExB,WAAiB,QAAO,KAAK,WAAW,OAAQ,OAAM,QACtD,MAAO,QAAO,QACV,mBAAmB,KAAK,mBAAmB,OAAM,WAIzD,YACE,YAAe,CACb,SAAU,KAAK,SACf,UAAW,KAAK,UAChB,sBAAuB,qBAAqB,KAAK,uBACjD,sBAAuB,qBAAqB,KAAK,uBACjD,oBAAqB,qBAAqB,KAAK,qBAC/C,qBAAsB,oBAAoB,KAAK,sBAC/C,SAAU,KAAK,SACf,YAAa,KAAK,wBAED,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UAjIF,UAAA,UAAY,YAoIrB,sBAAc,cAAc,WCjN5B,UAAA,aA+BoC,OAGlC,kBACE,MAAM,MAAQ,IACd,KAAK,gBAAkB,GAOf,sBACR,KAAM,IAAI,qBAaJ,+CACN,GAAI,QAAU,MAAQ,QAAU,KAC9B,MAAO,MACF,GAAI,OAAO,OAAS,OAAO,OAChC,MAAO,MAAK,gCAAgC,OAAQ,QAC/C,GAAI,OAAO,SAAW,EAC3B,MAAO,QAET,gBAA2B,OAAO,MAAM,EAAG,OAAO,OAAS,OAAO,QAClE,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,GACnC,MAAU,OAAO,OAAO,OAAS,OAAO,OAAS,KACvC,OAAO,GACjB,GAAI,GAAK,MAAQ,GAAK,MAAQ,EAAI,GAAK,EAAI,EACzC,YAAY,KAAK,cACR,IAAM,EACf,YAAY,KAAK,WACR,IAAM,EACf,YAAY,KAAK,QAEjB,GAAI,IAAM,EACR,KAAM,IAAI,YACN,wDACA,KAAK,UAAU,QAAU,IAAM,KAAK,UAAU,SAEpD,YAAY,KAAK,IAGrB,MAAO,aAGT,kBAOE,GALI,MAAM,QAAQ,aAAe,CAAC,MAAM,QAAQ,WAAW,KAEzD,YAAa,CAAC,mBAAmB,cAEnC,WAAa,WACT,WAAW,OAAS,EACtB,KAAM,IAAI,YACN,wEACQ,WAAW,oBAKzB,eAA2B,GAC3B,gBAAoB,YACd,OAAS,MAAQ,MAAM,KAAO,MAChC,WAAW,KAAK,MAAM,IAI1B,GADA,WAA2B,QAAO,YAC9B,WAAW,OAAS,EACtB,KAAM,IAAI,YACN,8EAC4B,KAAK,UAAU,gBAGjD,gBACI,WAAW,IAAM,KAAO,KAAO,WAAW,GAAG,MAAM,GACvD,UAAa,EAAG,EAAI,WAAW,OAAQ,EAAE,GACvC,UAAc,WAAW,IAAM,KAAO,KAAO,WAAW,GAAG,MAAM,GACjE,YAAc,KAAK,gCAAgC,YAAa,OAIlE,aAAiB,WAAW,IAAI,OAAS,MAAM,QAC3C,WAAW,QAAQ,QAAU,IACf,QAAO,UAAU,SAAW,EAC5C,KAAK,gBAAkB,GAEvB,KAAK,gBAAkB,GAI3B,oBACE,MAAO,MAAK,KAEV,GADA,OAAS,OACL,KAAK,iBACP,mBAAiC,aACf,OAAO,IAAI,QAAS,OAAM,MAC5C,GAAI,UAAU,QAAQ,QAAU,IAG9B,YAA0B,KAAI,WAC9B,YAAc,SACZ,UAAc,EAAE,KAChB,UAAa,EAAG,EAAI,QAAU,MAAO,EAAE,EACrC,EAAM,YAAW,EAAG,GAEtB,eAAe,KAAK,GAEtB,MAAO,MAAK,cAAc,qBAI1B,eAAiB,GACjB,YAAgB,SACd,UAAc,EAAE,KAChB,GAAI,OAAS,MACX,WAAe,EAAE,gBACC,OAAO,YACR,OAAO,MAAM,GAAG,OAAO,CAAC,wBACvB,EAAE,QAChB,CAAC,WAAW,OAAiB,UAAU,OAAO,MAAM,MACxD,YAAkB,UAAU,YAAa,CAAC,EAAG,IAC7C,YAAc,YAAY,QAAQ,UAClC,eAAe,KAAK,aACpB,WAAa,WACJ,MAAQ,GACjB,SAAuB,OAAM,EAAG,OAAO,OAAO,CAAC,IAC/C,eAAe,KAAS,UAAU,EAAG,OACrC,WAAa,OAGb,gBAAe,KAAK,GAGxB,MAAQ,KAAK,cAAc,sBACb,EAAE,KAChB,GAAI,YAGF,GAAI,OAAS,MACX,WAAe,EAAE,aACH,OAAO,iBACH,OAAO,OAAQ,YAE7B,CAAC,WAAW,OAAO,OAAO,MAAM,EAAG,OAAO,OAAS,IACvD,EAAQ,UAAU,EAAE,QAAQ,CAAC,GAAI,YAAa,CAAC,EAAG,IACzC,QAAQ,kBACR,MAAQ,GACjB,SAAa,CAAC,MAAQ,GAAG,OAAiB,OAAM,EAAG,MAAQ,IAC3D,EAAQ,UAAU,EAAG,OAGzB,MAAO,QAGT,OAAO,MAAK,cAAc,UAKhC,+BACE,WAAa,WACb,gBACI,WAAW,IAAM,KACnB,YAAc,KAEd,YAAc,WAAW,GAAG,MAAM,GAEpC,UAAa,EAAG,EAAI,WAAW,OAAQ,EAAE,GACvC,UAAc,WAAW,IAAM,KAAO,KAAO,WAAW,GAAG,MAAM,GACjE,YAAc,KAAK,gCAAgC,YAAa,OAGlE,eAA2B,GAC3B,gBAAoB,YACd,OAAS,MAAQ,MAAM,KAAO,MAChC,WAAW,KAAK,MAAM,IAG1B,MAAA,YAA2B,QAAO,YAC9B,WAAW,SAAW,EACxB,YAAc,WAAW,OAAO,aAEhC,YAAc,CAAC,MAAM,OAAO,aAEvB,YAGT,yBACE,MAAW,MAAK,KACd,GAAI,MAAQ,KACV,MAAO,MAET,GAAI,CAAC,MAAM,QAAQ,MACjB,KAAM,IAAI,YAAW,6BAEvB,GAAI,CAAC,MAAM,QAAQ,QACjB,KAAM,IAAI,YAAW,+BAEvB,GAAI,KAAK,SAAW,OAAO,OACzB,KAAM,IAAI,YACN,mGAEI,OAAO,aAAa,KAAK,WAEnC,GAAI,KAAK,MAAM,GAAK,GAAK,MACvB,MAAO,MAET,KAAO,KAAK,IAAI,GAAK,GAAK,KAAO,EAAQ,WAAW,EAAG,IACvD,WAAa,KAAK,GAClB,UAAa,EAAG,EAAI,KAAK,OAAS,EAAG,EAAE,EACrC,OAAa,WAAW,OAAQ,KAAK,IAEvC,MAAO,iBA9Pb,aAmQyB,OAGvB,kBACE,MAAM,MAGE,sBACR,MAAO,MAAK,KACV,WAAa,OAAO,GAAG,QACvB,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,OAAa,KAAI,OAAQ,OAAO,IAElC,MAAO,YAXJ,KAAA,UAAY,MAerB,sBAAc,cAAc,MCpR5B,cAAA,aA8U8B,OAG5B,kBACE,MAAM,MAGE,sBACR,MAAO,MAAK,KACV,WAAa,OAAO,GAAG,QACvB,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,OAAa,IAAI,OAAQ,OAAO,IAElC,MAAO,YAXJ,UAAA,UAAY,WAerB,sBAAc,cAAc,WC/V5B,YAAA,aAyZ6B,OAG3B,kBACE,MAAM,MAGE,sBACR,MAAO,MAAK,KACV,WAAa,OAAO,GAAG,QACvB,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,OAAa,KAAI,OAAQ,OAAO,IAElC,MAAW,KAAI,EAAI,OAAO,OAAQ,YAX/B,QAAA,UAAY,UAerB,sBAAc,cAAc,SC1a5B,aAAA,aAqe6B,OAG3B,kBACE,MAAM,MAGE,sBACR,MAAO,MAAK,KACV,WAAa,OAAO,GACpB,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,OAAa,QAAQ,OAAQ,OAAO,IAEtC,MAAO,YAXJ,SAAA,UAAY,UAerB,sBAAc,cAAc,UCtf5B,aAAA,aAgjB6B,OAG3B,kBACE,MAAM,MAGE,sBACR,MAAO,MAAK,KACV,WAAa,OAAO,GACpB,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,OAAa,QAAQ,OAAQ,OAAO,IAEtC,MAAO,YAXJ,SAAA,UAAY,UAerB,sBAAc,cAAc,UCjkB5B,gBAAA,aAkoBiC,OAM/B,kBACE,MAAM,MAJC,KAAA,aAAe,GAKlB,MAAQ,MACV,MAAO,IAET,KAAK,KAAO,KAAK,MAAQ,KAAO,KAAK,aAAe,KAAK,KACzD,KAAK,gBAAkB,GACvB,KAAK,gBAAkB,GAGzB,kBAEE,GAAI,CAAE,OAAM,QAAQ,aAAe,MAAM,QAAQ,WAAW,MACxD,WAAW,SAAW,EACxB,KAAM,IAAI,YACN,yEAGN,WAAa,WAEb,iBAAmB,GACnB,gBAAoB,YAClB,GAAI,OAAS,MACX,aAAe,GACf,MAGJ,GAAI,aACF,OAGF,aAA0B,GAC1B,UAAa,EAAG,EAAI,WAAW,OAAQ,EAAE,GACvC,2BAA+B,WAAW,GAAG,QAC7C,uBAAuB,OAAO,KAAK,KAAM,GACzC,WAAa,GACb,gBAAoB,UAClB,GAAI,aAAK,YAAY,MAAO,yBAC1B,OAAS,GACT,MAGC,QACH,SAAS,KAAK,wBAGlB,GAAI,SAAS,OAAS,EACpB,KAAM,IAAI,YACN,4GAEA,KAAK,UAAU,aAIb,sBACR,MAAO,MAAK,IACD,YAAY,OAAQ,KAAK,OAItC,+BACE,GAAI,CAAE,OAAM,QAAQ,aAAe,MAAM,QAAQ,WAAW,KAC1D,KAAM,IAAI,YACN,+DAEN,gBAAoB,uBACA,YAAY,GAAG,aACtB,KAAK,KAAO,EAAI,YAAY,OAAS,KAAK,KAAO,KAAK,KAGnE,gBAAoB,aAAY,MAAM,IACpC,GAAI,YAAY,OAAS,MAAQ,MAAM,OAAS,MAC9C,YAAY,MAAQ,KACpB,MAEF,YAAY,OAAS,MAAM,MAE7B,MAAO,aAGT,yBACE,GAAI,MAAQ,KACV,MAAO,MAET,GAAI,CAAC,MAAM,QAAQ,MACjB,KAAM,IAAI,YAAW,6CAEvB,GAAI,CAAC,MAAM,QAAQ,QACjB,KAAM,IAAI,YAAW,+CAEvB,GAAI,KAAK,SAAW,OAAO,OACzB,KAAM,IAAI,YACN,mCAAmC,KAAK,qCACX,OAAO,WAE1C,MAAW,MAAK,KACd,iBAAmB,GAOnB,GANA,KAAK,QAAQ,IACX,GAAI,GAAK,MACP,aAAe,GACf,UAGA,aACF,MAAO,MAET,gBAA8B,GAC9B,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EAC/B,KAAK,IAAM,KAEb,YAAY,KAAS,SAAS,OAAO,IAAI,OAAO,SACvC,KAAK,GAAG,KAAO,OAAO,GAAG,KAElC,YAAY,KAAS,WAAW,KAAK,GAAI,KAEzC,YAAY,KAAK,KAAK,IAG1B,sBAA8B,OAAO,YAAa,KAAK,MACvD,MAAW,KAAI,kBAAmB,GAAI,MAI1C,YACE,YAAyC,CACvC,KAAQ,KAAK,iBAEI,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UArIF,YAAA,UAAY,cAwIrB,sBAAc,cAAc,aCuF5B,iCACE,KAAO,KAAO,GACZ,MAAQ,IAEV,MAAO,MAGT,4BACE,GAAI,EAAE,MAAM,OAAS,GAAK,EAAE,MAAM,OAAS,EACzC,KAAM,IAAI,qBACN,oEAeN,GAbI,aAAK,OACL,EAAE,MAAM,QAAU,EAClB,IAAM,uDACS,EAAE,MAAM,UACvB,aAAK,OACL,EAAE,MAAM,QAAU,EAClB,IAAM,uDACS,EAAE,MAAM,UAEvB,MAAO,OAAS,UAClB,MAAO,CAAC,KAAM,OAGZ,EAAE,QAAU,aAAe,EAAE,QAAU,YACzC,KAAM,IAAI,qBACN,+DAGN,UAAc,EAAE,MAAM,aACR,EAAE,MAAM,OAClB,MAAQ,MAEV,MAAO,CAAC,MAAQ,EAAG,MAAQ,IAE7B,cAAkB,KAElB,MAAW,MAAK,KACd,SACA,GAAI,MAAQ,OACV,KAAO,MAAQ,MACf,cAAyB,GACzB,UAAa,EAAG,EAAI,KAAM,EAAE,EAC1B,UAAU,KAAK,GAEjB,EAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,oBACpB,MAAQ,OACjB,KAAO,MAAQ,MACf,cAAyB,GACzB,UAAa,EAAG,EAAI,KAAM,EAAE,EAC1B,UAAU,KAAK,GAEjB,EAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,gBAE7B,MAAO,EAGT,QACA,GAAI,EAAE,MAAM,SAAW,GAAK,EAAE,MAAM,SAAW,EACzC,UAAU,KAAO,UAAU,GAC7B,IAAM,EAAE,IAAI,GAAG,IAAI,UAAU,IAE7B,IAAM,EAAE,UAAU,CAAC,EAAG,IAAI,IAAI,GAAG,IAAI,UAAU,SAGjD,SAAa,UAAU,KAAO,EAAE,MAAM,OAAS,OAClC,UAAU,KAAO,EAAE,MAAM,OAAS,EAC/C,IAAM,EAAE,OAAO,EAAG,KAAM,MAG1B,GAAI,KAAO,GACT,QACI,MAAQ,MACV,IAAM,MAAQ,MAAQ,EAEtB,IAAM,MAAQ,EAEhB,gBAA8B,GAC9B,UAAa,IAAK,EAAI,IAAM,KAAM,EAAE,EAClC,YAAY,KAAK,GAEnB,IAAM,IAAI,QAAQ,aAEpB,MAAI,KAAI,MAAM,SAAW,GACvB,KAAM,IAAI,WAAW,IAEhB,MA17BX,QAAA,aA87ByB,OAOvB,kBACE,MAAM,MACN,KAAK,KAAO,KAAK,KACjB,KAAK,UAAY,KAAK,WAAa,KAAO,GAAQ,KAAK,UACvD,KAAK,gBAAkB,GACvB,KAAK,gBAAkB,GAGzB,kBACM,aAAK,OACL,MAAM,QAAQ,aAAe,WAAW,SAAW,GAC/C,MAAM,QAAQ,WAAW,KAAO,MAAM,QAAQ,WAAW,IAC7D,IAAM,iEACV,WAAe,WAAW,UACX,WAAW,GAC1B,GAAI,OAAO,OAAS,GAAK,OAAO,OAAS,EACvC,KAAM,IAAI,qBACN,gEAGN,SAAa,KAAK,cAAc,OAAQ,QACxC,GAAI,OAAO,KAAK,MAAQ,OAAO,KAAK,IAClC,KAAM,IAAI,YACN,8BACG,OAAO,KAAK,WAAW,OAAO,KAAK,OAIpC,sBACR,GAAI,OAAO,SAAW,EACpB,KAAM,IAAI,YACN,oEACgB,OAAO,oBAG7B,OAAS,OAAO,MACP,OAAO,QAEhB,MAAK,OAAM,QAAQ,KAAK,MAMtB,KAAO,KAAK,KAAK,IACN,UAAa,cACT,KAAM,OAAO,GAAG,MAAM,SAPrC,KAAO,CACL,cAAc,KAAK,KAAM,GAAG,MAAM,QAClC,cAAc,KAAK,KAAM,GAAG,MAAM,SAOlC,KAAK,WACP,IAAK,YAAY,GAAI,KAAK,IAC1B,GAAK,YAAY,GAAI,KAAK,KAErB,SAAS,GAAI,GAAI,MAGlB,6BACN,SACA,MAAK,OAAM,QAAQ,KAAK,MAQtB,KAAO,KAAK,KANZ,KAAO,CACL,cAAc,KAAK,KAAM,OAAO,QAChC,cAAc,KAAK,KAAM,OAAO,SAM7B,KAGT,+BACM,aAAK,OACL,MAAM,QAAQ,aAAe,WAAW,SAAW,GAC/C,MAAM,QAAQ,WAAW,KAAO,MAAM,QAAQ,WAAW,IAC7D,IAAM,iEACV,WAAgB,WAAW,GAAa,eACxB,WAAW,GAAa,QACxC,GAAI,OAAO,OAAS,GAAK,OAAO,OAAS,EACvC,KAAM,IAAI,qBACN,gEAGN,SAAa,KAAK,cAAc,OAAQ,QACxC,OAAO,OAAO,KAAK,GAAI,GACvB,OAAO,OAAO,KAAK,GAAI,GACvB,OAAO,OAAO,EAAG,GACjB,gBAAoB,OAAO,OAAO,QAClC,MAAI,aAAY,SAAW,GACzB,YAAY,KAAK,GAEZ,YAGT,yBACE,MAAO,MAGT,YACE,YAAyC,CACvC,KAAQ,KAAK,KACb,UAAa,KAAK,sBAED,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UA7GF,IAAA,UAAY,MAgHrB,sBAAc,cAAc,KChjC5B,kBAAA,aA2BmC,OAKjC,kBACE,MAAM,MACN,KAAK,gBAAkB,GACvB,KAAK,OAAS,KAAK,OAGrB,+BACE,MAAO,YAGT,YACE,eAAmB,MAAM,oBACV,CAAC,OAAQ,KAAK,QAC7B,MAAA,QAAO,OAAO,QAAQ,YACf,QAGT,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAC5B,WAAc,oBAAoB,eACnB,IACT,cAAa,OAAM,MAAO,EAAG,KAAK,QAAQ,IAAI,eAE9C,aAAa,OAAQ,IAAM,OAAO,OAAO,UAAe,IAC9D,MAAO,YA5BJ,cAAA,UAAY,gBAgCrB,sBAAc,cAAc,eA7D5B,oBAAA,aAoEqC,OAKnC,kBACE,MAAM,MACN,KAAK,gBAAkB,GACvB,KAAK,KAAO,KAAK,KAGnB,+BACE,MAAO,YAGT,YACE,eAAmB,MAAM,oBACV,CAAC,KAAM,KAAK,MAC3B,MAAA,QAAO,OAAO,QAAQ,YACf,QAGT,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAC5B,WAAc,oBAAoB,QAClC,GAAI,KAAK,KAAO,GAAK,KAAK,KAAO,GAC/B,WAAe,KACb,WAAe,KAAK,KAAK,KAAK,KAAQ,GAAI,KAAK,OAC/C,MAAO,QAAM,IAAM,cAAa,OAAM,MAAO,EAAG,UAElD,MAAS,cAAa,OAAQ,IAAM,OAAO,OAAO,UAAe,IAEnE,MAAO,YA/BJ,gBAAA,UAAY,kBAmCrB,sBAAc,cAAc,iBAzG5B,iBAAA,aAkJkC,OAMhC,kBACE,MAAM,MACN,KAAK,gBAAkB,GACvB,KAAK,KAAO,KAAK,KACjB,KAAK,WAAa,KAAK,WAGzB,uBACE,MAAO,MAAK,YAAc,oBAAoB,QAAQ,MAGxD,+BACE,MAAO,YAGT,YACE,eAAmB,MAAM,oBACV,CAAC,KAAM,KAAK,MAC3B,MAAA,QAAO,OAAO,QAAQ,YACf,QAGT,oBACE,MAAO,MAAK,KACV,GAAI,KAAK,KAAO,GAAK,KAAK,KAAO,GAC/B,eAAmB,KAAK,eAAe,sBAEjB,KACpB,WAAc,oBAAoB,cAEpB,2BACA,0BAEC,CAAC,MAAQ,gBAEV,aAAa,cAAc,YAAa,KAAK,MAE3D,QAAY,OAAK,QAAS,WAG1B,MAAY,IAAI,KAAK,MAAS,GAAI,KAAK,KAAO,QAAU,KAAO,MACrD,CAAC,EAAI,OAAS,KAAK,OAGnB,OAAM,IAAI,SAAS,IAAI,QAAQ,IAAI,IAAI,IAAI,SAErD,MAAO,GAAE,IAAI,GAAG,IAAI,IAEtB,MAAS,cACL,cAAe,IAAM,oBAAoB,QACzC,OAAO,UAAe,IAE5B,MAAO,YAxDJ,aAAA,UAAY,eA4DrB,sBAAc,cAAc,cCrKtB,kEAEQ,MACZ,QACA,GAAI,EAAE,OAAS,EACb,IAAU,YACN,EAAe,MACf,SAAiC,KACjC,MAA8B,mBACzB,EAAE,OAAS,EAEpB,IAAU,YACN,EAAe,MACf,SAAiC,KACjC,MAA8B,mBACzB,EAAE,OAAS,EACpB,IAAU,YACN,EAAe,MACf,SAAiC,KACjC,MAA8B,eAElC,MAAM,IAAI,qBACN,2DAA2D,EAAE,YAGnE,MAAO,KAoBT,8EAEc,MACZ,MAAO,MAAK,KACH,oBAA4B,QAAQ,EAAG,qBAC1B,gBAAgB,cACZ,gBAAgB,gBAE7B,mBAAmB,EAAG,MAAM,SAAU,KAAM,MAAO,WACvD,MAAO,CAAC,OAAQ,MAAM,YAqBjC,gFAEc,MACZ,MAAO,MAAK,KACH,oBAA4B,QAAQ,EAAG,qBAC1B,gBAAgB,cACZ,gBAAgB,qBACH,GAC9B,eAA8B,QAAM,EAAG,EAAE,MACnC,cAAc,QAAQ,QAAU,GAClC,YAAY,KAAK,GAEjB,YAAY,KAAK,EAAE,MAAM,OAG7B,kBAAsB,MAAK,QAAQ,+BACT,SAAS,QAAQ,4BAEvC,OAAS,KAAO,KAAO,MAAM,QAAQ,2BAErC,MAAQ,KAAO,KAAO,KAAK,QAAQ,oBACxB,mBACX,EAAG,cAAe,kBAAmB,cACrC,eAAgB,WACpB,MAAO,CAAC,OAAQ,MAAM,YAe3B,uEAEQ,MACZ,MAAI,cAAK,YACD,cAAc,QAAQ,OAAmB,OAAM,EAAG,EAAE,KAAO,IAC1D,gCACH,EAAG,MAAO,KAAM,cAAe,WAE5B,kCACH,EAAG,MAAO,KAAM,cAAe,WAtKvC,uBAAA,aA4PwC,OAqBtC,kBACM,MAAQ,MACV,MAAO,IAET,MAAM,MAEN,KAAK,gBAAkB,GACvB,KAAK,KAAO,KAAK,MAAQ,KAAO,GAAK,KAAK,KAC1C,KAAK,SAAW,KAAK,UAAY,KAAO,IAAO,KAAK,SACpD,KAAK,QAAU,KAAK,SAAW,KAAO,KAAO,KAAK,QAClD,KAAK,OAAS,KAAK,QAAU,KAAO,GAAO,KAAK,OAChD,KAAK,MAAQ,KAAK,OAAS,KAAO,GAAO,KAAK,MAC9C,KAAK,gBAAkB,eAAe,KAAK,iBAAmB,SAC9D,KAAK,iBAAmB,eAAe,KAAK,kBAAoB,QAChE,KAAK,sBACD,eAAe,KAAK,uBAAyB,SACjD,KAAK,0BACD,eAAe,KAAK,2BAA6B,QACrD,KAAK,eAAiB,cAAc,KAAK,gBACzC,KAAK,gBAAkB,cAAc,KAAK,iBAC1C,KAAK,gBAAkB,eAAe,KAAK,iBAC3C,KAAK,iBAAmB,eAAe,KAAK,kBAGvC,kBACL,WAAa,mBAAmB,YAChC,SAAa,KAAK,MAAQ,EAAI,KAAK,KAAQ,KAAK,KAAO,WAAW,WACtD,WAAW,MACvB,GAAI,KAAO,KACT,KAAM,IAAI,YACN,QAAQ,mGAEL,KAAK,UAAU,gBAExB,KAAK,UACD,CAAC,GAAI,WAAU,CAAC,KAAM,WAAW,OAAQ,KAAM,EAAE,MAAO,QAC5D,UAAc,CAAC,KACX,KAAK,OACP,MAAK,MAAQ,KAAK,UACd,QAAS,MAAO,KAAM,KAAK,iBAAkB,KAAK,iBAClD,GAAM,KAAK,kBAEb,KAAK,QACP,MAAK,KAAO,KAAK,UACb,OAAQ,MAAO,KAAM,KAAK,gBAAiB,KAAK,gBAAiB,GACjE,KAAK,iBAEX,KAAK,WAAa,KAAK,UACnB,cAAe,MAAO,KAAM,KAAK,sBAAuB,KAAM,IAClE,KAAK,eAAiB,KAAK,UACvB,kBAAmB,MAAO,KAAM,KAAK,0BAA2B,KAChE,IACJ,KAAK,MAAQ,GAGf,oBACE,MAAO,MAAK,KACV,cAAiB,OAAO,UAAe,KAAO,GAAQ,OAAO,gBAC/C,oBAAoB,mBACf,OAAM,WACZ,WAAW,qBACS,OAAM,EAAG,WAC7B,KAAK,MAAQ,EAAI,KAAK,KAAQ,KAAK,KAAO,KACvD,cAAc,OAAO,KAAM,GAC3B,mBAAqC,aAAa,EAAG,MACrD,eAAe,MAAQ,WAAW,MAElC,wBAA4B,cAAc,QAC1C,oBAAoB,OACpB,sBAA0B,CAAC,aAAK,YAC5B,oBAAgC,OAAM,EAAG,MAAM,MAAM,EAAG,KAAO,uBAE1B,KACvC,GAAI,mBACF,wBACI,KAAK,WAAW,OAAO,QAAQ,wCAE/B,KAAK,eAAe,OAAO,QAAQ,8BAEnC,KAAK,OAAS,KAAK,KAAK,OAAO,QAAQ,gBAAkB,oBAEzD,KAAK,MAAQ,KAAK,MAAM,OAAO,QAAQ,gBAAkB,KAC7D,MAAO,oBACH,OAAO,oBAAqB,wBAC5B,cAAe,eAAgB,KAAK,aAExC,OAAO,oBACH,OAAO,KAAK,WAAW,OAAQ,KAAK,eAAe,OACnD,KAAK,MAAQ,KAAO,KAAO,KAAK,KAAK,OACrC,KAAK,OAAS,KAAO,KAAO,KAAK,MAAM,OAAQ,KAAK,UAI5D,GAAI,CAAC,UACH,MAAO,sBAGT,mCAAyC,yBACrC,OAAO,KAAK,MAAM,OAAQ,KAAK,KAAK,OAAQ,cAC5C,KAAK,yBAGL,6BACM,KAAK,KACP,UAAc,EAAI,mBACA,UAAS,mBACP,UAAU,IAAI,OAAO,IAAI,OAC7C,UAAS,MAAM,UAAU,IAAI,6CAUD,KAClC,gBAAgB,KAAK,WAAY,MAAM,KAAK,UAC5C,gBAAgB,KAAK,eAAgB,SAAU,KAAK,WAEtD,MAAA,+BAEO,iBAIX,YACE,YAAyC,CACvC,KAAM,KAAK,KACX,SAAU,KAAK,SACf,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,gBAAiB,qBAAqB,KAAK,iBAC3C,iBAAkB,qBAAqB,KAAK,kBAC5C,sBAAuB,qBAAqB,KAAK,uBACjD,0BACI,qBAAqB,KAAK,2BAC9B,gBAAiB,qBAAqB,KAAK,iBAC3C,iBAAkB,qBAAqB,KAAK,kBAC5C,eAAgB,oBAAoB,KAAK,gBACzC,gBAAiB,oBAAoB,KAAK,6BAEzB,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UArKF,mBAAA,UAAY,qBAwKrB,sBAAc,cAAc,oBAta5B,uBAAA,aAwdwC,OAgBtC,kBAOE,GANI,MAAQ,MACV,MAAO,IAET,MAAM,MAEN,KAAK,KAAO,KAAK,MAAQ,KAAO,GAAK,KAAK,KACtC,MAAO,MAAK,MAAS,UACvB,GAAI,CAAC,OAAO,UAAU,KAAK,MACzB,KAAM,IAAI,OACN,gDAAgD,KAAK,gBAElD,MAAM,QAAQ,KAAK,OAC5B,eAAmB,MAAK,KACtB,GAAI,CAAC,OAAO,UAAU,MACpB,KAAM,IAAI,OACN,0DACgB,KAAK,UAAU,KAAK,aAI5C,MAAM,IAAI,OACN,wEACgB,KAAK,UAAU,KAAK,SAG1C,KAAK,QAAU,KAAK,SAAW,KAAO,KAAO,KAAK,QAClD,KAAK,OAAS,KAAK,QAAU,KAAO,GAAO,KAAK,OAChD,KAAK,MAAQ,KAAK,OAAS,KAAO,GAAO,KAAK,MAC9C,KAAK,gBAAkB,eAAe,KAAK,iBAAmB,SAC9D,KAAK,iBAAmB,eAAe,KAAK,kBAAoB,QAChE,KAAK,gBAAkB,eAAe,KAAK,iBAC3C,KAAK,iBAAmB,eAAe,KAAK,kBAE5C,KAAK,gBAAkB,GAGlB,kBACL,WAAa,mBAAmB,YAChC,UAAc,WAAW,OAGrB,MAAO,MAAK,MAAS,UACvB,MAAK,KAAO,CAAC,KAAK,OAEpB,UAAa,EAAG,EAAI,KAAK,KAAK,OAAQ,EAAE,EAClC,KAAK,KAAK,GAAK,GACjB,MAAK,KAAK,IAAM,OAKpB,eAAmB,MAAK,KACtB,GAAI,KAAO,GAAK,MAAQ,MACtB,KAAM,IAAI,OAAM,iBAAiB,QAGrC,GAAI,KAAK,KAAK,SAAyB,QAAO,KAAK,MAAM,OACvD,KAAM,IAAI,OAAM,4BAA4B,KAAK,QAGnD,eAAmB,KAAK,KAAK,IAAI,MAAQ,WAAW,iBAElC,GACd,KAAK,MACP,KAAK,MAAQ,KAAK,UACd,QAAS,WAAY,UAAW,KAAK,iBACrC,KAAK,iBAAkB,WAE3B,KAAK,MAAQ,KAEX,KAAK,OACP,KAAK,KAAO,KAAK,UACb,OAAQ,WAAY,UAAW,KAAK,gBACpC,KAAK,gBAAiB,WAE1B,KAAK,KAAO,KAGd,KAAK,MAAQ,GAGf,oBACE,WAAc,oBAAoB,mBACf,OAAM,YACX,WAAW,OAEzB,MAAO,MAAK,KACV,aAAiB,IACZ,WAAM,UAAY,QAAQ,OAAO,KAAK,KAAM,yBACZ,aAAa,EAAG,OACrD,cAAkB,MAAK,KACrB,eAAe,KAAO,WAAW,KAGnC,cAAkB,GACZ,GAAK,MAAQ,EAAE,MAAM,SAAW,OAChC,KAAK,OAAS,CAAC,MAAQ,GAClB,EAAE,QAAQ,gBAEV,UAIC,UAAU,KAAK,MAAM,eACpB,UAAU,KAAK,KAAK,sBAQD,qBACI,GACpC,UAAa,EAAG,EAAI,MAAO,EAAE,EACtB,KAAK,KAAkB,QAAQ,KAAO,GACzC,eAAc,KAAK,WAAW,IAC9B,kBAAkB,KAAK,IAEvB,eAAc,KAAK,GACnB,kBAAkB,KAAK,WAAW,KAGtC,MAAA,OAAO,MAAK,KAAK,eACjB,SAAW,SAAS,KAAK,eACzB,QAAQ,QAAM,KAAK,mBACnB,OAAS,OAAO,KAAK,mBAEd,mBACH,OAAO,MAAM,SAAU,OAAQ,QAAO,KAAK,WAInD,YACE,YAAyC,CACvC,KAAM,KAAK,KACX,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,gBAAiB,qBAAqB,KAAK,iBAC3C,iBAAkB,qBAAqB,KAAK,kBAC5C,gBAAiB,qBAAqB,KAAK,iBAC3C,iBAAkB,qBAAqB,KAAK,8BAE3B,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UAjKF,mBAAA,UAAY,qBAoKrB,sBAAc,cAAc,oBE3jBtB,iDAGJ,MAAO,MAAK,KACV,GAAI,EAAE,OAAS,EACb,KAAM,IAAI,YACN,kEACG,EAAE,kBAMX,GAHI,UAAW,MACb,UAAU,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,KAErB,SAAQ,SAAW,GAAK,SAAQ,GAAG,SAAW,GAC9C,SAAQ,GAAG,SAAW,EACxB,KAAM,IAAI,YACN,+GAON,GAHI,YAAc,MAChB,YAAa,mBAEX,aAAe,gBAAkB,aAAe,gBAClD,KAAM,IAAI,YACN,wBAAwB,6EAI9B,YACA,MAAI,cAAe,gBACjB,QAAU,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,SAAQ,GAAI,SAAQ,IAE/C,QAAU,CAAC,CAAC,EAAG,GAAI,SAAQ,GAAI,SAAQ,GAAI,CAAC,EAAG,IAGtC,IAAI,EAAG,WAvGtB,kBAAA,aAoImC,OAMjC,kBAUE,GATI,MAAQ,MACV,MAAO,IAET,MAAM,MAEN,KAAK,WACD,KAAK,YAAc,KAAO,kBAAoB,KAAK,WAGnD,KAAK,SAAW,KAClB,KAAK,QAAU,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,YACnB,MAAO,MAAK,SAAY,SACjC,KAAK,QACD,CAAC,CAAC,KAAK,QAAS,KAAK,SAAU,CAAC,KAAK,QAAS,KAAK,eAGvD,GADA,KAAK,QAAU,KAAK,QAChB,KAAK,QAAQ,SAAW,EAC1B,KAAM,IAAI,YACN,+EACqB,KAAK,QAAQ,iBAGxC,+BAEA,GAAI,MAAO,MAAK,QAAQ,IAAO,SAC7B,cAAgB,CAAC,KAAK,QAAQ,GAAI,KAAK,QAAQ,IAC/C,aAAe,CAAC,KAAK,QAAQ,GAAc,KAAK,QAAQ,SAIxD,GAFA,KAAK,QAAU,KAAK,QAEhB,KAAK,QAAQ,GAAG,SAAW,EAC7B,KAAM,IAAI,YACN,sFACyB,KAAK,QAAQ,GAAG,iBAI/C,GAFA,cAAgB,KAAK,QAAQ,GAEzB,KAAK,QAAQ,GAAG,SAAW,EAC7B,KAAM,IAAI,YACN,qFACyB,KAAK,QAAQ,GAAG,iBAE/C,aAAe,KAAK,QAAQ,GAE9B,KAAK,QAAU,CAAC,cAAe,cAEjC,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KAGzC,+BACE,WAAa,mBAAmB,YAEhC,cAEA,MAAI,MAAK,aAAe,gBAClB,YAAW,IAAM,MAAQ,WAAW,IAAM,EAC5C,KAAO,WAAW,GAAK,KAAK,QAAQ,GAAG,GAAK,KAAK,QAAQ,GAAG,GAE5D,KAAO,KAEL,WAAW,IAAM,MAAQ,WAAW,IAAM,EAC5C,KAAO,WAAW,GAAK,KAAK,QAAQ,GAAG,GAAK,KAAK,QAAQ,GAAG,GAE5D,KAAO,KAEF,CAAC,WAAW,GAAI,WAAW,GAAI,KAAM,OAExC,YAAW,IAAM,MAAQ,WAAW,IAAM,EAC5C,KAAO,WAAW,GAAK,KAAK,QAAQ,GAAG,GAAK,KAAK,QAAQ,GAAG,GAE5D,KAAO,KAEL,WAAW,IAAM,MAAQ,WAAW,IAAM,EAC5C,KAAO,WAAW,GAAK,KAAK,QAAQ,GAAG,GAAK,KAAK,QAAQ,GAAG,GAE5D,KAAO,KAEF,CAAC,WAAW,GAAI,KAAM,KAAM,WAAW,KAIlD,oBACE,MAAO,MACH,IAAM,iBACF,oBAAoB,QAAS,KAAK,QAAS,KAAK,aAG1D,YACE,YAAyC,CACvC,QAAS,KAAK,QACd,WAAY,KAAK,uBAEA,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,UAnGF,cAAA,UAAY,gBAsGrB,sBAAc,cAAc,eCnMtB,iEAIJ,MAAO,MAAK,KACV,gBAAgB,YAChB,cAAc,UACd,iBAAiB,UACb,SAAW,MACb,SAAU,CAAC,EAAG,IAEZ,UAAW,MACb,UAAU,SAER,YAAc,MAChB,YAAa,mBAEX,UAAY,MACd,UAAW,OAKb,EAAI,sBAAsB,EAAG,YAC7B,oBACuB,WAAY,OAAU,OAAS,QACtD,MAAI,YAAa,MAEf,EAAQ,QAAQ,EAAe,SAAU,QAAS,eAIlD,EAAQ,QAEJ,EAA0B,SAAU,QAAS,eAE/C,aAAe,iBACjB,GAAQ,UAAU,EAAG,CAAC,EAAG,EAAG,EAAG,KAE1B,IAcL,iEAIJ,MAAO,MAAK,KACV,gBAAgB,YAChB,cAAc,UACd,iBAAiB,UACb,SAAW,MACb,SAAU,CAAC,EAAG,EAAG,IAEf,UAAW,MACb,UAAU,SAER,YAAc,MAChB,YAAa,mBAEX,UAAY,MACd,UAAW,OAIb,EAAI,sBAAsB,EAAa,YACvC,oBACuB,WAAY,OAAU,OAAS,QACtD,MAAI,YAAa,MACf,EAAQ,UAAU,EAAG,SAAU,QAAS,eAExC,EAAQ,UAAU,EAAG,SAAU,QAAS,eAEtC,aAAe,iBACjB,GAAQ,UAAU,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KAE7B,IA/HX,cAAA,aAqJwC,OAWtC,kBAKE,GAJI,KAAK,UAAY,MACnB,MAAK,SAAW,GAElB,MAAM,MACF,MAAO,MAAK,UAAa,SAC3B,KAAK,SAAW,CAAC,KAAK,kBAEpB,MAAM,QAAQ,KAAK,WAClB,KAAK,SAAsB,SAAW,GACvC,MAAQ,MAAK,SAAsB,IAAO,SAC5C,KAAK,SAAW,KAAK,aAErB,MAAM,IAAI,YACN,qGAEG,KAAK,UAAU,KAAK,aAG7B,GADA,sBAAsB,KAAK,SAAU,YACjC,KAAK,SAAW,KAClB,KAAK,QAAU,KAAK,iBAEhB,MAAO,MAAK,SAAY,SAC1B,KAAK,QAAU,CAAC,KAAK,iBAEnB,MAAM,QAAQ,KAAK,UAClB,KAAK,QAAqB,SAAW,GACtC,MAAQ,MAAK,QAAqB,IAAO,SAC3C,KAAK,QAAU,KAAK,YAEpB,MAAM,IAAI,YACN,oGAEG,KAAK,UAAU,KAAK,YAG/B,sBAAsB,KAAK,QAAS,WAEpC,KAAK,QAAU,KAAK,SAAW,KAAO,QAAU,KAAK,QACrD,iBAAiB,KAAK,SACtB,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KAGzC,+BACE,WAAa,mBAAmB,YAChC,WAAe,iBACX,WAAW,GAAI,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IAChE,MAAO,CAAC,WAAW,GAAI,OAAQ,WAAW,IAO5C,oBACE,MAAO,MAAK,KACV,KAAK,eAAe,OAAQ,QAE5B,OAAW,YAAW,oBAAoB,QAAS,GACnD,WAAe,KAAK,gBAChB,oBAAoB,QAAS,CAAC,KAAK,SAAS,GAAI,GAChD,CAAC,KAAK,QAAQ,GAAI,GAAI,KAAK,QAAS,gBAExC,MAAW,SAAQ,OAAQ,CAAC,MAIhC,YACE,YAAe,CACb,SAAU,KAAK,SACf,QAAS,KAAK,QACd,QAAS,KAAK,oBAEG,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,uBA3OX,aA+OkC,WAGhC,kBACE,MAAM,MAGE,6DAGR,MAAA,iBAAgB,YAChB,iBAAiB,UACV,OAAO,OAAQ,SAAU,QAAS,SAAS,WAAY,SAVzD,aAAA,UAAY,eAarB,sBAAc,cAAc,cA9P5B,qBAAA,aAgQsC,WAGpC,kBACE,MAAM,MAGE,6DAGR,MAAA,iBAAgB,YAChB,iBAAiB,UACV,OAAO,OAAQ,SAAU,QAAS,SAAS,WAAY,SAVzD,iBAAA,UAAY,mBAarB,sBAAc,cAAc,kBA/Q5B,cAAA,aA8SwC,OAMtC,kBAQE,GAPI,KAAK,UAAY,MACnB,MAAK,SAAW,CAAC,EAAG,IAEtB,MAAM,MACN,KAAK,SAAW,MAAM,QAAQ,KAAK,UAC/B,KAAK,SACL,CAAC,KAAK,SAAU,KAAK,UACrB,KAAK,SAAW,KAClB,KAAK,QAAU,KAAK,iBACX,MAAM,QAAQ,KAAK,UAC5B,GAAI,KAAK,QAAQ,SAAW,EAC1B,KAAM,IAAI,YACN,wHAEG,KAAK,QAAQ,WAEtB,KAAK,QAAU,KAAK,YAGpB,MAAK,QAAU,CAAC,KAAK,QAAS,KAAK,SAErC,sBAAsB,KAAK,SAAU,YACrC,sBAAsB,KAAK,QAAS,WACpC,KAAK,QAAU,KAAK,SAAW,KAAO,QAAU,KAAK,QACrD,KAAK,WACD,KAAK,YAAc,KAAO,eAAiB,KAAK,WACpD,gBAAgB,KAAK,YACrB,iBAAiB,KAAK,SAEtB,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KAGzC,+BACE,WAAa,mBAAmB,YAChC,SACI,KAAK,aAAe,gBAAkB,WAAW,GAAK,WAAW,QAEjE,KAAK,aAAe,gBAAkB,WAAW,GAAK,WAAW,GAKrE,MAJA,MACI,iBAAiB,KAAM,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACxE,KACI,iBAAiB,KAAM,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACpE,KAAK,aAAe,gBACf,CAAC,WAAW,GAAI,WAAW,GAAI,KAAM,MAErC,CAAC,WAAW,GAAI,KAAM,KAAM,WAAW,IAQlD,oBACE,MAAO,MAAK,IACV,MAAK,eAAe,OAAQ,QACrB,KAAK,gBACR,oBAAoB,QAAS,KAAK,SAAU,KAAK,QACjD,KAAK,QAAS,KAAK,cAI3B,YACE,YAAe,CACb,SAAU,KAAK,SACf,QAAS,KAAK,QACd,QAAS,KAAK,QACd,WAAY,KAAK,uBAEA,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,uBA5XX,aAgYkC,WAGhC,kBACE,MAAM,MAGE,6DAGR,MAAA,iBAAgB,YAChB,iBAAiB,UACV,OAAO,OAAQ,SAAU,QAAS,SAAS,WAAY,SAVzD,aAAA,UAAY,eAarB,sBAAc,cAAc,cA/Y5B,qBAAA,aAiZsC,WAGpC,kBACE,MAAM,MAGE,6DAGR,MAAA,iBAAgB,YAChB,iBAAiB,UACV,OAAO,OAAQ,SAAU,QAAS,SAAS,WAAY,SAVzD,iBAAA,UAAY,mBAarB,sBAAc,cAAc,kBAha5B,cAAA,aA+bwC,OAMtC,kBAQE,GAPI,KAAK,UAAY,MACnB,MAAK,SAAW,CAAC,EAAG,EAAG,IAEzB,MAAM,MACN,KAAK,SAAW,MAAM,QAAQ,KAAK,UAC/B,KAAK,SACL,CAAC,KAAK,SAAU,KAAK,SAAU,KAAK,UACpC,KAAK,SAAW,KAClB,KAAK,QAAU,KAAK,iBACX,MAAM,QAAQ,KAAK,UAC5B,GAAI,KAAK,QAAQ,SAAW,EAC1B,KAAM,IAAI,YACN,wHAEG,KAAK,QAAQ,WAEtB,KAAK,QAAU,KAAK,YAGpB,MAAK,QAAU,CAAC,KAAK,QAAS,KAAK,QAAS,KAAK,SAEnD,sBAAsB,KAAK,SAAU,YACrC,sBAAsB,KAAK,QAAS,WACpC,KAAK,QAAU,KAAK,SAAW,KAAO,QAAU,KAAK,QACrD,KAAK,WACD,KAAK,YAAc,KAAO,eAAiB,KAAK,WACpD,gBAAgB,KAAK,YACrB,iBAAiB,KAAK,SAEtB,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KAGzC,+BACE,WAAa,mBAAmB,YAChC,WACI,KAAK,aAAe,gBAAkB,WAAW,GAAK,WAAW,QAEjE,KAAK,aAAe,gBAAkB,WAAW,GAAK,WAAW,QAEjE,KAAK,aAAe,gBAAkB,WAAW,GAAK,WAAW,GAOrE,MANA,QAAS,iBACL,OAAQ,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACzD,KACI,iBAAiB,KAAM,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACxE,KACI,iBAAiB,KAAM,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACpE,KAAK,aAAe,gBACf,CAAC,WAAW,GAAI,WAAW,GAAI,OAAQ,KAAM,MAE7C,CAAC,WAAW,GAAI,OAAQ,KAAM,KAAM,WAAW,IAS1D,oBACE,MAAO,MAAK,IACV,MAAK,eAAe,OAAQ,QACrB,KAAK,gBACR,oBAAoB,QAAS,KAAK,SAAU,KAAK,QACjD,KAAK,QAAS,KAAK,cAI3B,YACE,YAAe,CACb,SAAU,KAAK,SACf,QAAS,KAAK,QACd,QAAS,KAAK,QACd,WAAY,KAAK,uBAEA,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,uBAlhBX,aAshBkC,WAGhC,kBACE,MAAM,MAGE,6DAIR,MAAA,iBAAgB,YAChB,iBAAiB,UACV,OACH,OAAoB,SAAU,QAAS,SAAS,WAAY,SAZ3D,aAAA,UAAY,eAerB,sBAAc,cAAc,cAviB5B,qBAAA,aAyiBsC,WAGpC,kBACE,MAAM,MAGE,6DAIR,MAAA,iBAAgB,YAChB,iBAAiB,UACV,OACH,OAAoB,SAAU,QAAS,SAAS,WAAY,SAZ3D,iBAAA,UAAY,mBAerB,sBAAc,cAAc,kBA1jB5B,oBAAA,aA+jB8C,OAC5C,kBACE,MAAM,MACN,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KAGzC,+BACE,MAAO,CAAC,WAAW,GAAI,WAAW,IAGpC,oBACE,KAAM,IAAI,8CA1kBd,aA8kB4C,iBAG1C,kBACE,MAAM,MAAQ,IAGhB,oBACE,MAAO,MAAK,KACV,WAAc,oBAAoB,QAClC,MAAW,MAAK,OAAO,OARpB,uBAAA,UAAY,yBAYrB,sBAAc,cAAc,wBA5lB5B,uBAAA,aA8lBwC,iBAGtC,kBACE,MAAM,MAAQ,IAGhB,oBACE,MAAO,MAAK,KACV,WAAc,oBAAoB,QAClC,MAAW,KAAI,OAAO,OARnB,mBAAA,UAAY,qBAYrB,sBAAc,cAAc,oBA5mB5B,oBAAA,aA6nB8C,OAE5C,kBACE,MAAM,MACN,KAAK,WACD,KAAK,YAAc,KAAO,eAAiB,KAAK,WACpD,gBAAgB,KAAK,YACrB,KAAK,UAAY,CAAC,GAAI,WAAU,CAAC,KAAM,KAGzC,+BAEE,MADA,YAAa,WACT,KAAK,aAAe,eACf,CAAC,WAAW,GAAI,WAAW,IAE3B,CAAC,WAAW,GAAI,WAAW,IAItC,oBACE,KAAM,IAAI,qBAGZ,YACE,YAAe,CAAC,WAAY,KAAK,uBACd,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,iCAxpBX,aA4pB4C,iBAI1C,oBACE,MAAO,MAAK,KACV,WAAc,oBAAoB,QAClC,MAAI,MAAK,aAAe,eACX,KAAK,OAAO,CAAC,EAAG,IAEhB,KAAK,OAAO,CAAC,EAAG,QAR1B,uBAAA,UAAY,yBAarB,sBAAc,cAAc,wBA3qB5B,uBAAA,aA6qBwC,iBAItC,oBACE,MAAO,MAAK,KACV,WAAc,oBAAoB,QAClC,MAAI,MAAK,aAAe,eACX,IAAI,OAAO,CAAC,EAAG,IAEf,IAAI,OAAO,CAAC,EAAG,QARzB,mBAAA,UAAY,qBAarB,sBAAc,cAAc,oBC5rB5B,YAAA,aA4CsC,OAGpC,kBAQE,MAAM,MACN,KAAK,MAAQ,KAAK,MAGpB,kBACE,KAAK,MAAQ,MAKX,aAIF,MAAI,MAAK,OAAS,KACT,KAAK,MAAM,UAEX,MAIP,kBAIE,KAAK,OAAS,MAChB,MAAK,MAAM,UAAY,UAIvB,oBACF,MAAO,MAAK,MAAM,oBAIhB,uBACF,MAAO,MAAK,MAAM,uBAIhB,WAEF,MAAQ,MAAK,MAAc,YAKzB,UACF,MAAO,MAAK,MAAM,OAKpB,aACE,MAAO,MAAK,MAAM,aAGpB,oBACE,KAAK,MAAM,WAAW,SAGxB,YACE,YAAyC,CACvC,MAAS,CACP,UAAa,KAAK,MAAM,eACxB,OAAU,KAAK,MAAM,yBAGN,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,QAGT,oCACE,MAAM,6BAA6B,OAC/B,KAAK,OAAS,MAChB,KAAK,MAAM,6BAA6B,aAKrC,sCAGa,IAClB,gBAAoB,QAAO,YACb,YAAY,YAAa,eACvC,MAAO,SAAO,MACd,cAAkB,CAAC,OACnB,MAAA,QAAO,OAAO,UAAW,SAClB,GAAI,KAAI,6BAjJnB,aAqJqC,SAGnC,kBACE,MAAM,MACN,KAAK,gBAAkB,GAGzB,kBAEE,GADA,WAAa,mBAAmB,YAC5B,WAAW,OAAS,EACtB,KAAM,IAAI,YACN,gFACe,KAAK,UAAU,eAEpC,KAAK,UAAY,CAAC,CAAC,MAAO,aAC1B,oBAAwB,CAAC,WAAW,IAAI,OAAO,WAAW,MAAM,IAC3D,KAAK,MAAM,OACd,MAAK,MAAM,MAAM,iBACjB,KAAK,MAAM,MAAQ,IAErB,MAAM,MAAM,YAGd,+BACE,WAAa,mBAAmB,YAChC,oBAAwB,CAAC,WAAW,IAAI,OAAO,WAAW,MAAM,qBAE5D,KAAK,MAAM,mBAAmB,2BAChB,WAAW,GAC7B,MAAO,CAAC,iBAAiB,GAAI,WAAW,OAAO,iBAAiB,MAAM,IAGxE,oBACE,MAAO,MAAK,KAEV,OAAS,oBAAoB,QAI7B,UAA8B,mBAK5B,WAAe,oBAAoB,KAAK,MAAM,KAAK,QAAQ,SAC3D,MAAO,CAAC,OAAQ,gBAGd,IAAI,MAAM,OAAQ,GAAI,GAAyB,KAC3C,KAAsB,GACtB,MACE,WAAW,GAGrB,MAAO,OArDJ,gBAAA,UAAY,kBA2DrB,sBAAc,cAAc,iBAEtB,4CACU,0BACV,gCAAiC,yBAA0B,OAmBjE,qCAAiE,uBAzOjE,aA2OmC,SAWjC,kBACE,MAAM,MAUN,gBAAoB,KAAK,MAAM,qBACY,GAC3C,SAAS,UAAe,KAAK,MAAM,eACnC,SAAS,OAAY,YACrB,KAAK,aAAe,YAAY,UAChC,YAAY,YACR,CAAA,aAAY,cAAmB,IACnC,aAA2C,GAW3C,GAVA,SAAS,UAAe,KAAK,MAAM,eACnC,SAAS,OAAY,YACrB,KAAK,cAAgB,YAAY,UACjC,KAAK,aAAa,KAAO,WAAa,KAAK,aAAa,KACxD,KAAK,cAAc,KAAO,YAAc,KAAK,cAAc,KAE3D,KAAK,UAAY,KAAK,YAAc,OAChC,iCACA,KAAK,UACT,4BAA4B,KAAK,WAC7B,KAAK,QACP,KAAM,IAAI,qBACN,mEAEN,KAAK,UAAY,KAAK,MAAM,SAC5B,KAAK,gBAAkB,KAAK,MAAM,gBAClC,KAAK,YAAc,KAAK,MAAM,YAC9B,KAAK,gBAAkB,GACvB,KAAK,WAAa,GAClB,KAAK,UAAY,KAAK,MAAM,UAC5B,KAAK,aAAe,QAGlB,aACF,MAAO,MAAK,cAGV,kBAIF,KAAK,WAAa,MACd,KAAK,cAAgB,MACvB,MAAK,aAAa,UAAY,OAE5B,KAAK,eAAiB,MACxB,MAAK,cAAc,UAAY,OAInC,aACE,MAAO,MAAK,aAAa,aAAa,OAClC,KAAK,cAAc,cAGzB,oBACE,eAAmB,QAAQ,sBACJ,KAAK,MAAM,WAAa,GAC/C,KAAK,aAAa,WAAW,QAAQ,MAAM,EAAG,iBAC9C,KAAK,cAAc,WAAW,QAAQ,MAAM,iBAG9C,+BACE,gBACI,KAAK,aAAa,mBAAmB,YACnC,MAAM,QAAQ,cAAgB,MAAM,QAAQ,YAAY,KAC5D,aAAc,CAAC,cAEjB,YAAc,YAEd,wCAmBA,MAhBI,MAAK,aACP,YAAa,YAAY,MAAM,IAC/B,YAAc,YAAY,GAI5B,YAAc,YACV,KAAK,YAAc,SACrB,aAAY,YAAY,OAAS,IAAM,EACvC,aAAe,CAAC,cACP,KAAK,WAAa,KAC3B,aAAe,CAAC,YAAa,YAAY,SAEzC,aAAe,CAAC,aAGd,KAAK,YACH,KAAK,WAAa,KACb,aAAa,OAAO,YAAY,OAAO,WAAW,SAEpD,CAAC,aAAa,OAAO,YAAY,OAAO,WAAW,SAEvC,iBAAiB,cAGxC,qBAGE,iBACI,QAAU,KAAO,KAAO,OAAO,uBAE/B,QAAU,KAAO,KAAO,OAAO,UAC/B,QAAU,MACZ,QAAS,IAEX,iBACI,gBAAgB,OAAQ,aAAc,UAAW,KAAK,cAU1D,GATA,OAAS,aAAa,OACtB,aAAe,aAAa,aAC5B,UAAY,aAAa,UAErB,MAAM,QAAQ,SAChB,cAAgB,OAAuC,MAAM,GAC7D,OAAU,OAAuC,IAG9C,eAAgB,MAAQ,aAAa,SAAW,IACjD,WAAa,KACf,MAAO,OAAM,MAAM,OAAQ,QAE7B,qBAAuD,mBAClB,GACrC,GAAI,cAAgB,MAClB,cAAkB,aAAa,OAC/B,GAAI,UAAY,EAAI,EAClB,KAAM,IAAI,YACN,iIAIN,OAAO,aAAkB,aACzB,iBAAiB,KAAK,GAAG,cACzB,eAAoB,aACI,IAAI,QAAS,GAAI,WAAU,CAAC,MAAO,OAAM,SACjE,KAAK,aAAa,UAAY,WAAW,MAAM,EAAG,UAAY,GAC9D,KAAK,cAAc,UAAY,WAAW,MAAM,UAAY,GAC5D,gBAAgB,KAAK,GAAG,YAE1B,GAAI,WAAa,KACf,KAAM,IAAI,qBACN,yEAIN,qBAAyB,iBAAiB,YAAc,gBACxD,oBAAqB,kBACnB,GAAI,oBAAkB,kBAAmB,iBACvC,KAAM,IAAI,YACN,gHAKR,GAAI,kBAEF,cAAkB,CAAC,QAAQ,OAAO,gCACZ,KAAK,UAAU,OAAO,mCAUlB,KAAK,UAC/B,KAAK,UAAY,cACjB,WACI,MAAM,MAAM,UAA0C,QAC1D,MAAA,MAAK,UAAY,kBACV,WAEP,OAAO,OAAM,MAAM,OAAQ,QAI/B,oBACE,MAAO,MAAK,KACV,iBAAqB,OAAO,oBAI5B,GAAI,cAAgB,KAClB,EAAI,KAAK,aAAa,KAAK,OAAQ,QACnC,KAAO,KAAK,cAAc,KAAK,OAAQ,aAEvC,iBAAqB,aAAa,MAAM,EAAG,aAAa,OAAS,iBAC3C,aAAa,MAAM,aAAa,OAAS,GAC/D,EAAI,KAAK,aAAa,KAClB,OAAQ,OAAO,OAAO,OAAQ,CAAC,aAAc,gBACjD,KAAO,KAAK,cAAc,KACtB,OAAQ,OAAO,OAAO,OAAQ,CAAC,aAAc,iBAGnD,WACI,KAAK,aACH,OAAM,QAAQ,IAChB,QAAS,EAAE,MAAM,GAAG,OAAQ,KAAkB,MAAM,KAGtD,EAAK,EAAe,GACpB,KAAQ,KAAkB,IAGxB,KAAK,iBACP,MAAW,QAAQ,KAAgB,IAGrC,WAcA,MAbI,MAAK,YAAc,SACrB,OAAW,YAAY,CAAC,EAAa,OAC5B,KAAK,YAAc,MAC5B,OAAa,KAAI,EAAa,MACrB,KAAK,YAAc,MAC5B,OAAa,IAAI,GAAQ,KAAI,EAAa,OACjC,KAAK,YAAc,MAC5B,OAAa,IAAI,EAAa,MACrB,KAAK,WAAa,MAC3B,QAAS,CAAC,EAAa,OAIrB,KAAK,YACH,KAAK,WAAa,KACZ,OAAoB,OAAO,QAE9B,CAAC,QAAkB,OAAO,QAE5B,SAIX,oBACE,KAAK,aAAa,cAClB,KAAK,cAAc,cAGrB,kBACE,UAAU,KAAK,aAAa,KAAM,KAChC,KAAK,aAAa,MAAM,cAE1B,UAAU,KAAK,cAAc,KAAM,KACjC,KAAK,cAAc,MAAM,cAE3B,KAAK,MAAQ,GAGf,yBAEM,MAAM,QAAQ,OAChB,MAAO,KAAK,IAEd,eAcA,GAbI,KAAK,gBACH,KAAK,WAAa,KACpB,WAAa,CAAC,KAAM,MAEpB,WAAa,KAGX,KAAK,WAAa,KACpB,WAAa,CAAC,KAAM,MAEpB,WAAa,KAGb,KAAK,aACP,WAAe,KAAK,aAAa,iBACL,OAAO,IAAI,QAAS,MAChD,MAAI,OAAM,QAAQ,YACT,WAAW,OAAO,WAAW,OAAO,WAEpC,CAAC,YAAY,OAAO,WAAW,OAAO,eAG/C,OAAO,eAIP,oBACF,MAAO,MAAK,aAAa,iBAAiB,OACtC,KAAK,cAAc,qBAGrB,uBACF,MAAO,MAAK,aAAa,oBAAoB,OACzC,KAAK,cAAc,qBAKzB,oCACE,MAAM,6BAA6B,OAC/B,KAAK,cAAgB,MACvB,KAAK,aAAa,6BAA6B,OAE7C,KAAK,eAAiB,MACxB,KAAK,cAAc,6BAA6B,OAIpD,YACE,YAAyC,CACvC,UAAa,KAAK,sBAGD,MAAM,YACzB,MAAA,QAAO,OAAO,QAAQ,YACf,cAIF,yBAGL,aACI,YAAY,QAAO,OAGvB,GAFA,MAAO,SAAO,MAEV,QAAO,cAAmB,KAC5B,KAAM,IAAI,qBACN,4FAIN,cAAwC,QACxC,MAAA,WAAU,MAAW,SACd,GAAI,KAAI,aA7VV,cAAA,UAAY,gBAgWrB,sBAAc,cAAc,eC3gBtB,0BACJ,MAAO,IAAI,YAAW,MA6BlB,oBACJ,MAAO,IAAI,KAAI,MAoBX,oBACJ,MAAO,IAAI,MAAK,MAuBZ,yBACJ,MAAO,IAAI,WAAU,MAwBjB,sBACJ,MAAO,IAAI,OAAM,MAmBb,wBACJ,MAAO,IAAI,UAAQ,MA2Bf,+BACJ,MAAO,IAAI,iBAAgB,MAyBvB,uBACJ,MAAO,IAAI,QAAO,MAqBd,uBACJ,MAAO,IAAI,SAAO,MAsCd,gCACJ,MAAO,IAAI,iBAAgB,MAqBvB,uBACJ,MAAO,IAAI,SAAO,MAgCd,gCACJ,MAAO,IAAI,iBAAgB,MAkCvB,0BACJ,MAAO,IAAI,YAAW,MA2BlB,4BACJ,MAAO,IAAI,cAAa,MAepB,gCACJ,MAAO,IAAI,iBAAgB,MAoCvB,0BACJ,MAAO,IAAI,aAAW,MAoClB,qBACJ,MAAO,IAAI,OAAM,MAab,wBACJ,MAAO,IAAI,SAAQ,MAmCf,gCACJ,MAAO,IAAI,kBAAiB,MAsBxB,wBACJ,MAAO,IAAI,SAAQ,MAiBf,4BACJ,MAAO,IAAI,cAAa,MA0BpB,yBACJ,MAAO,IAAI,UAAQ,MA+Bf,uBACJ,MAAO,IAAI,SAAQ,MAcf,yBACJ,MAAO,IAAI,WAAU,MAyBjB,qBACJ,MAAO,IAAI,MAAI,MAqBX,uBACJ,MAAO,IAAI,SAAQ,MAuBf,4BACJ,MAAO,IAAI,aAAY,MAqBnB,wBACJ,MAAO,IAAI,UAAQ,MAqBf,wBACJ,MAAO,IAAI,UAAQ,MAsBf,wBACJ,MAAO,IAAI,WAAS,MAyBhB,oBACJ,MAAO,IAAI,KAAI,MA0BX,mCACJ,MAAO,IAAI,oBAAmB,MAuB1B,kCACJ,MAAO,IAAI,oBAAmB,MA2B1B,6BACJ,MAAO,IAAI,eAAc,MAgBrB,gCACJ,MAAO,IAAI,kBAAiB,MAExB,yBACJ,MAAO,kBAAiB,MAIpB,4BACJ,MAAO,kBAAiB,MA0BpB,gCACJ,MAAO,IAAI,kBAAiB,MAExB,yBACJ,MAAO,kBAAiB,MAIpB,4BACJ,MAAO,kBAAiB,MAwBpB,gCACJ,MAAO,IAAI,kBAAiB,MAExB,0BACJ,MAAO,kBAAiB,MAIpB,4BACJ,MAAO,kBAAiB,MAYpB,sCACJ,MAAO,IAAI,wBAAuB,MAiB9B,sCACJ,MAAO,IAAI,wBAAuB,MAY9B,kCACJ,MAAO,IAAI,oBAAmB,MAiB1B,kCACJ,MAAO,IAAI,oBAAmB,MAY1B,4BACJ,MAAO,IAAI,cAAa,MAwBpB,4BACJ,MAAO,IAAI,cAAa,MAwBpB,4BACJ,MAAO,IAAI,cAAa,MA4BpB,mBACJ,MAAO,IAAI,KAAI,MAgDX,uBACJ,MAAO,IAAI,SAAQ,MA0Bf,oBACJ,MAAO,IAAI,MAAK,MAgDZ,wBACJ,MAAO,IAAI,UAAS,MA2BhB,yBACJ,MAAO,IAAI,WAAU,MAgDjB,6BACJ,MAAO,IAAI,eAAc,MA8BrB,0BACJ,MAAO,IAAI,YAAW,MAoClB,8BACJ,MAAO,IAAI,gBAAe,MA+DtB,oBACJ,MAAO,IAAI,KAAI,MAUX,+BACJ,MAAO,IAAI,iBAAgB,MAMvB,6BACJ,MAAO,IAAI,eAAc,MAiDrB,+BACJ,MAAO,IAAI,iBAAgB,MAItB,oBAAwB,mCACA,6BACN,uBACA,aC2BnB,6BACJ,MAAO,IAAI,eAAc,MA2BrB,+BACJ,MAAO,IAAI,iBAAgB,MAkCvB,4BACJ,MAAO,IAAI,cAAa,MA0BpB,uBACJ,MAAO,IAAI,SAAQ,MClpDrB,4BAAA,GAAA,UAAA,wBAAA,CAAA,KAAA,IAAA,MAAA,IAAA,IAAA,KAAA,eAAA,IAAA,gBAAA,mBAAA,IAAA,oBAAA,oBAAA,IAAA,qBAAA,wBAAA,IAAA,yBAAA,gBAAA,IAAA,iBAAA,KAAA,IAAA,MAAA,kBAAA,IAAA,mBAAA,4BAAA,IAAA,6BAAA,iBAAA,IAAA,kBAAA,IAAA,IAAA,KAAA,UAAA,IAAA,WAAA,OAAA,IAAA,QAAA,0BAAA,IAAA,6BCgCM,sCACJ,MAAe,gBAAe,MAAO,OAoBjC,0CACJ,MAAe,qBAAmB,MAAO,OAsBrC,iDAEJ,MAAe,2BAA0B,MAAO,OAqB5C,2CACJ,MAAe,qBAAoB,MAAO,OActC,+CACJ,MAAe,0BAAwB,MAAO,OAsC1C,iCACJ,MAAe,WAAU,MAAO,OAsC5B,8BACJ,MAAe,QAAO,MAAO,OAwBzB,uCACJ,MAAc,iBAAgB,MAAO,OAuBjC,yCACJ,MAAc,mBAAkB,MAAO,OAqBnC,mDAEJ,MAAc,6BAA4B,MAAO,OAG7C,4BACJ,MAAc,6BAA4B,MAAO,OAG7C,4BACJ,MAAc,6BAA4B,MAAO,OAqB7C,wCACJ,MAAc,mBAAiB,MAAO,OAGlC,2BACJ,MAAc,mBAAiB,MAAO,OAGlC,2BACJ,MAAc,mBAAiB,MAAO,OC1TxC,2BAAA,GAAA,UAAA,uBAAA,CAAA,cAAA,IAAA,gBEAA,iCAAA,GAAA,UAAA,6BAAA,CAAA,GAAA,IAAA,IAAA,KAAA,IAAA,KAAA,GAAA,IAAA,MCqBM,uBACJ,MAAO,IAAI,MAAK,SAYZ,sBACJ,MAAoB,IAAG,SAYnB,sBACJ,MAAoB,IAAG,SChDzB,aAAA,aAkBuC,cAAvC,cAAA,MAAA,GAAA,WAEE,KAAA,MAAqB,KAErB,iBACE,GAAI,CAAE,kBAAiB,cACrB,KAAM,IAAI,OAAM,yDAElB,KAAK,MAAQ,SA8DjB,gCACE,MAAO,SAAU,QAGnB,oCACE,MAAO,SAAU,QA7FnB,kBAAA,aAoGmC,UAcjC,kBACE,QAIA,GAHI,MAAQ,MACV,MAAO,IAEL,KAAK,mBACP,KAAM,IAAI,qBACN,sEAGN,KAAK,QAAU,KAAK,SAAW,WAC/B,KAAK,SAAW,KAAK,IAAI,KAAK,UAAY,GAC1C,KAAK,SAAW,KAAK,UAAY,EACjC,KAAK,QAAU,KAAK,SAAW,EAC/B,KAAK,KAAO,KAAK,MAAQ,OACzB,KAAK,SAAW,KAAK,SAEjB,CAAC,OAAQ,MAAO,OAAO,QAAQ,KAAK,QAAU,IAChD,SAAQ,KACJ,uBAAuB,KAAK,kDAEhC,KAAK,KAAO,QAGV,KAAK,OAAS,MAChB,KAAK,YAAc,MACV,KAAK,OAAS,MACvB,KAAK,YAAc,UAGf,KAAK,QAAQ,QAAQ,SAAW,GAClC,KAAK,YAAc,UAEnB,KAAK,YAAc,MAInB,KAAK,cAAgB,OACvB,MAAK,UAAY,SAIf,qBACJ,KAAK,KAAO,EACZ,KAAK,aAAe,EAChB,KAAK,UAAY,KACnB,KAAK,KAAO,KAAK,SAEjB,KAAK,KAAO,KAAK,cAAgB,MAAO,SAAW,eAIjD,yBACJ,KAAM,sBAAqB,OAC3B,YAAgB,KAAK,gBAAgB,OACrC,GAAI,SAAW,KACb,OAGE,KAAK,YAAY,QAAU,KAAK,SAAU,KAAK,MACjD,MAAK,KAAO,QACZ,KAAK,KAAO,GAGZ,MAAK,OACD,KAAK,MAAQ,KAAK,UACpB,MAAK,aAAe,MACpB,KAAK,MAAM,aAAe,UAM1B,mBACA,KAAK,aAAe,GAAK,KAAK,SAChC,QAAQ,IAAI,SAAS,KAAK,iCAItB,uBACF,OAAQ,MACV,OAAO,IAET,iBAAqB,MAAK,KAAK,SAC/B,MAAI,eAAgB,MAClB,QAAQ,KACJ,4BAA4B,KAAK,oDACP,OAAO,KAAK,UAErC,eA+CL,6BACJ,MAAO,IAAI,eAAc,MAGpB,cAAkB,CAAC,wBEhO1B,AAAA,qBACE,UAAA,UAAA,WAAA,GAAA,aACA,UAAA,UAAA,SAAA,GAAA,WACA,UAAA,UAAA,UAAA,GAAA,YACA,UAAA,UAAA,SAAA,GAAA,WACA,UAAA,UAAA,SAAA,GAAA,WACA,UAAA,UAAA,SAAA,GAAA,WACA,UAAA,UAAA,QAAA,GAAA,UACA,UAAA,UAAA,UAAA,GAAA,YACA,UAAA,UAAA,aAAA,GAAA,eACA,UAAA,UAAA,SAAA,GAAA,WACA,UAAA,UAAA,QAAA,IAAA,UACA,UAAA,UAAA,SAAA,IAAA,WACA,UAAA,UAAA,UAAA,IAAA,YACA,UAAA,UAAA,UAAA,IAAA,YACA,UAAA,UAAA,YAAA,IAAA,cACA,UAAA,UAAA,aAAA,KAAA,eACA,UAAA,UAAA,cAAA,KAAA,gBACA,UAAA,UAAA,aAAA,KAAA,eACA,UAAA,UAAA,aAAA,KAAA,eACA,UAAA,UAAA,aAAA,KAAA,eACA,UAAA,UAAA,YAAA,KAAA,cACA,UAAA,UAAA,cAAA,KAAA,gBACA,UAAA,UAAA,iBAAA,KAAA,mBACA,UAAA,UAAA,aAAA,KAAA,eACA,UAAA,UAAA,YAAA,KAAA,cACA,UAAA,UAAA,aAAA,KAAA,eACA,UAAA,UAAA,cAAA,KAAA,gBACA,UAAA,UAAA,cAAA,KAAA,gBACA,UAAA,UAAA,gBAAA,KAAA,oBA7BU,UAAA,UAAQ,KAyRd,aAAN,AAAA,qBAEE,4BAAA,AAAA,oCAAqC,yBAAA,yBAAA,OAAA,GAAA,SAAc,yBAAA,yBAAA,GAAA,GAAA,KAAU,yBAAA,yBAAA,GAAA,GAAA,OAAjD,wBAAA,UAAA,yBAAA,WAAA,wBAAuB,OAFpB,UAAA,UAAQ,KCnSzB,eAA8C,GA2BxC,iCACJ,aAA2B,CACzB,SAAU,KACV,SAAU,SACV,OAAQ,GACR,MAAO,GACP,eAAgB,QAGlB,WAAW,MAAQ,SAUf,+BACJ,MAAO,YAAW,MAUd,4BACJ,MAAO,YAAW,MCtDd,0EAGJ,eAAmB,MAAK,YAAY,WACpC,GAAI,YAAc,WAAW,kBAAoB,QAC/C,UAAc,WAAW,oBACb,WAAW,gBAAkB,EACrC,OACC,WAAW,gBAAkB,OAAY,MAAQ,EACR,WAAW,cACzD,GAAI,WAAW,OAAS,SACtB,MAAO,WACH,MAAK,WAAW,WAAW,iBAAkB,UAAW,QACxD,iBAEN,GAAI,WAAW,OAAS,WACtB,WAAe,MAAK,WAAW,MAAM,MAAO,KAE5C,MAAO,QAAO,IACV,MAAQ,UAAU,KAAM,UAAW,QAAS,kBAElD,cAAe,UACX,MAAK,WAAW,MAAM,OAAO,GAAI,UAAW,QAAS,sBAC5C,UAAO,WACpB,MAAO,YAAW,OAAS,SACvB,KAAK,GACL,aAAK,cAAc,UAAO,MAAO,MAEvC,cAAkB,MAAK,WAAW,WAClC,MAAO,YAAa,UAAU,MAU1B,4DAGJ,oBAA0B,cAAc,MAExC,GAAI,iBAAmB,MACrB,cAAe,gBAAgB,yBAAyB,UACxD,GAAI,WAAU,KACZ,MAAO,WAIX,cAAkB,QAAQ,kBAAkB,KAAK,YACxC,CAAC,CAAC,WAAW,yBAAyB,SAAU,cAGzD,MAAO,aAAc,OACjB,WAAW,yBAAyB,SAAU,YAAY,OAC1D,OAQA,+DAGJ,MAAO,YAAW,yBAAyB,KAAM,QAAQ,mBASrD,gDAEJ,oBAA0B,cAAc,WAExC,MAAO,CACL,yBAAyB,SAAU,SAAW,QAAQ,kBACtD,OAIJ,kDACE,MAAS,WAAY,GAAG,QAAQ,YAAc,KAG1C,6BACJ,UAAc,KAAK,MAAM,KACzB,GAAI,MAAM,SAAW,EACnB,MAAO,CAAC,KAAM,GAGhB,aAAiB,MAAM,GACvB,MAAO,CAAC,SAAU,OAAO,MAAM,MAAM,OAAS,KCU1C,6CAGJ,UAAU,cAAc,MAAO,MAAM,UAAW,SAChD,GAAI,QAAQ,YAEV,MAAM,cAAc,mBAAoB,MAAM,UAAW,SACzD,oBAEI,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IACjC,UAAa,EAAG,EAAI,EAAG,IACrB,gBAAgB,GAAG,GAAM,MAAiB,EAAI,GAC9C,gBAAgB,GAAG,GAAM,MAAiB,EAAI,EAAI,GAEpD,MAAO,iBAET,MAAO,OAYH,gCACJ,MAAO,WAAO,KAAO,UAAS,MAAM,WCjKtC,uBAAA,GAAA,UAAA,mBAAA,CAAA,KAAA,IAAA,OCmBO,SAAyB,CAC9B,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CAAC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,UAAW,KAAQ,aAE/D,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,oBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,0BCjMtB,GAAA,UAAA,mBAAA,CAAA,KAAA,IAAA,QCiBO,UAAyB,CAC9B,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,cACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,WAEvC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,aACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,aACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,aACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,WAExC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,aACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CACP,CACE,OAAU,YACV,KAAQ,WACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,QACV,KAAQ,QACR,KAAQ,SACR,aAAgB,IAElB,CACE,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,uBCncxB,GAAA,UAAA,gBAAA,CAAA,KAAA,IAAA,QCAO,UAAyB,CAC9B,CACE,SAAY,kBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,SAC7C,CAAC,MAAS,EAAG,KAAQ,iBAAkB,KAAQ,WAEjD,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,WACZ,SAAY,UACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAElD,CACE,SAAY,SACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CAAC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,UAAW,KAAQ,aAE/D,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAClE,CAAC,OAAU,aAAc,KAAQ,YAAa,KAAQ,UACtD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UAG5D,CACE,SAAY,OACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,gBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,gBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,WAEvC,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,SAC5D,CAAC,OAAU,eAAgB,KAAQ,cAAe,KAAQ,QAC1D,CAAC,OAAU,mBAAoB,KAAQ,iBAAkB,KAAQ,QACjE,CACE,OAAU,2BACV,KAAQ,yBACR,KAAQ,QAEV,CAAC,OAAU,oBAAqB,KAAQ,OAAQ,KAAQ,YAG5D,CACE,SAAY,qBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CAAC,CACR,OAAU,QACV,KAAQ,QACR,KAAQ,QACR,aAAgB,MAGpB,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAGhE,CACE,SAAY,uBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAAU,CACrD,OAAU,wBACV,KAAQ,sBACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,qBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,YAG3C,CACE,SAAY,qBACZ,SAAY,UACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,YAE3D,CACE,SAAY,cACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,OAAQ,KAAQ,YAEjD,MAAS,CACP,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,QACxD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UAG5D,CACE,SAAY,KACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,OAAQ,KAAQ,YAEjD,MAAS,CACP,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,QACxD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UAG5D,CACE,SAAY,iBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,OAAQ,KAAQ,YAEjD,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,QAC3C,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,UAG/C,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,OAAQ,KAAQ,YAEjD,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,QAC3C,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,UAG/C,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,SAC7C,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,WAE9C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,mBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,SAC7C,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,WAE9C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,uBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,kBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,SAC5D,CAAC,OAAU,eAAgB,KAAQ,cAAe,KAAQ,WAG9D,CACE,SAAY,kBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,SAC7C,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,aAE1C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,mBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,SAC5D,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAGhE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,qBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,gCC5WlE,GAAA,UAAA,oBAAA,CAAA,KAAA,IAAA,QCmBO,UAAyB,CAC9B,CACE,SAAY,UACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAAa,CAC7D,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,GAChB,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,oBACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAC7C,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAAa,CAC7D,OAAU,yBACV,KAAQ,sBACR,KAAQ,QAEV,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,SAAU,KAAQ,SAAU,KAAQ,UAC/C,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,OAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,WACV,KAAQ,WACR,KAAQ,SACR,aAAgB,KAItB,CACE,SAAY,SACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAClE,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAC7C,CAAC,OAAU,gBAAiB,KAAQ,gBAAiB,KAAQ,QAAS,CACpE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,cAGzD,CACE,SAAY,eACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,IAAK,EAAG,KAAQ,OAAQ,KAAQ,YAE/C,MAAS,CACP,CAAC,OAAU,WAAY,KAAQ,UAAW,KAAQ,UAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAClE,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,mBACV,KAAQ,gBACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,YACV,KAAQ,YACR,KAAQ,WACR,aAAgB,CAAC,EAAG,EAAG,EAAG,IAE5B,CACE,OAAU,YACV,KAAQ,WACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,kBACV,KAAQ,iBACR,KAAQ,YAId,CACE,SAAY,sBACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,aAE9C,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,YACV,KAAQ,YACR,KAAQ,WACR,aAAgB,MAItB,CACE,SAAY,kBACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,cAGzD,CACE,SAAY,wBACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,cAGzD,CACE,SAAY,6BACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,IAAK,EAAG,KAAQ,OAAQ,KAAQ,YAE/C,MAAS,CACP,CAAC,OAAU,WAAY,KAAQ,UAAW,KAAQ,UAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAClE,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,YACV,KAAQ,YACR,KAAQ,WACR,aAAgB,CAAC,EAAG,EAAG,EAAG,IAE5B,CACE,OAAU,YACV,KAAQ,WACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,MAItB,CACE,SAAY,SACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,cAGzD,CACE,SAAY,aACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,QAAS,KAAQ,YAAa,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,8BCzWnD,GAAA,UAAA,iBAAA,CAAA,KAAA,IAAA,QCiBO,UAAyB,CAC9B,CACE,SAAY,OACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,YACtC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,WAExC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,WACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,MAAO,KAAQ,WAEtC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,UACxC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,SAAU,aAAgB,GAClE,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,SAAU,aAAgB,IAErE,MAAS,CACP,CACE,OAAU,OACV,KAAQ,OACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,WACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,WAEzD,CACE,SAAY,gBACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,CACP,CACE,OAAU,SACV,KAAQ,SACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,SACV,KAAQ,SACR,KAAQ,SACR,aAAgB,GAElB,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,GAAI,CACvE,OAAU,QACV,KAAQ,QACR,KAAQ,SACR,aAAgB,EAChB,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,IAAK,KAAQ,SAAU,aAAgB,MAGnE,CACE,SAAY,QACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,IAEjE,MAAS,CAAC,CAAC,OAAU,OAAQ,KAAQ,QAAS,KAAQ,WAExD,CACE,SAAY,kBACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,CACP,CACE,OAAU,QACV,KAAQ,OACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,SACV,KAAQ,SACR,KAAQ,SACR,aAAgB,GAElB,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,UAAW,CACpD,OAAU,QACV,KAAQ,QACR,KAAQ,SACR,aAAgB,EAChB,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,IAAK,KAAQ,IAAK,KAAQ,SAAU,aAAgB,MAGnE,CACE,SAAY,QACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,YACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,cACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,aAAc,KAAQ,WAE7C,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,UAC3C,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,UAC7C,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,SACzC,CAAC,OAAU,eAAgB,KAAQ,eAAgB,KAAQ,4BC3KjE,GAAA,UAAA,gBAAA,CAAA,KAAA,IAAA,QCiBO,UAAyB,CAC9B,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,YAGjD,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,iBAAkB,KAAQ,YAGnD,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,iBAAkB,KAAQ,WAEjD,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,cACV,KAAQ,YACR,KAAQ,QACR,aAAgB,IAElB,CACE,OAAU,yBACV,KAAQ,qBACR,KAAQ,UAId,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,iBAAkB,KAAQ,UAC/C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,YAGjD,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,YAAa,KAAQ,WAE5C,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,0BChGtB,GAAA,UAAA,mBAAA,CAAA,KAAA,IAAA,QCiBO,UAAyB,CAC9B,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CAAC,OAAU,SAAU,KAAQ,SAAU,KAAQ,UAE3D,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAGtC,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,2BCvC3C,GAAA,UAAA,cAAA,CAAA,KAAA,IAAA,QCiBO,UAAyB,CAC9B,CACE,SAAY,yBACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,WAE1C,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,WAGjD,CACE,SAAY,cACZ,SAAY,QACZ,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,WAGjD,CAAC,SAAY,QAAS,SAAY,SAAU,CAC1C,SAAY,WACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,YACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,IAAK,KAAQ,aAEzD,CACE,SAAY,WACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,OACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,OACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,QACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,SACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,IAAK,KAAQ,aAEzD,CACE,SAAY,QACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAEvC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,UAAW,CAC1D,OAAU,UACV,KAAQ,SACR,KAAQ,SACR,aAAgB,IAElB,CACE,OAAU,YACV,KAAQ,YACR,KAAQ,SACR,aAAgB,KAItB,CAAC,SAAY,OAAQ,SAAY,QAAS,OAAU,IAAK,CACvD,SAAY,eACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,0BACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,UACzC,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,gCC3F/C,GAAA,UAAA,mBAAA,CAAA,KAAA,IAAA,QCAO,UAAyB,CAC9B,CACE,SAAY,YACZ,SAAY,aACZ,OAAU,GACV,MAAS,CACP,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UACxD,CACE,OAAU,wBACV,KAAQ,qBACR,KAAQ,QAEV,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,SACpD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,WAG5D,CACE,SAAY,cACZ,SAAY,aACZ,OAAU,GACV,MAAS,CACP,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UACxD,CACE,OAAU,wBACV,KAAQ,qBACR,KAAQ,QAEV,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,SACpD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,WAG5D,CACE,SAAY,oBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,UAC5C,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,OACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,sBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,UAC5C,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,OACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,kBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,UAC5C,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,OACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,oBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,UAC5C,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,OACR,KAAQ,QACR,aAAgB,qBC/GxB,GAAA,UAAA,cAAA,CAAA,KAAA,IAAA,SCiBO,WAAyB,CAC9B,CACE,SAAY,iBACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,QAAS,CACnE,OAAU,qBACV,KAAQ,mBACR,KAAQ,QAEV,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,wBACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,QAAS,CACnE,OAAU,qBACV,KAAQ,mBACR,KAAQ,QAEV,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,gBACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,aAE3C,MAAS,CACP,CAAC,OAAU,SAAU,KAAQ,SAAU,KAAQ,UAAW,CACxD,OAAU,sBACV,KAAQ,qBACR,KAAQ,6BC/DhB,GAAA,UAAA,gBAAA,CAAA,KAAA,IAAA,SCiBO,WAAyB,CAC9B,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,eACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,aACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,aACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,YAAa,KAAQ,UAC1C,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,YAAa,KAAQ,UAC1C,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,wBC9ItB,GAAA,UAAA,iBAAA,CAAA,KAAA,IAAA,SCmBO,WAAyB,CAC9B,CACE,SAAY,eACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,IAAK,EAAG,KAAQ,OAAQ,KAAQ,YAE/C,MAAS,CACP,CAAC,OAAU,WAAY,KAAQ,UAAW,KAAQ,UAAW,CAC3D,OAAU,YACV,KAAQ,WACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,cACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,QACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,QACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,gBACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,QACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,QACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CACR,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,6BCtItB,GAAA,UAAA,sBAAA,CAAA,KAAA,IAAA,SCiBO,WAAyB,CAC9B,CACE,SAAY,iBACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,WAE3C,MAAS,CACP,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,mBACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,WAE3C,MAAS,CACP,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,mBACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,WAE3C,MAAS,CACP,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,MACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,eACV,KAAQ,SACR,KAAQ,SACR,aAAgB,GAElB,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,GACrE,CACE,OAAU,QACV,KAAQ,QACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,OACV,KAAQ,OACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,UACZ,SAAY,gBACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,aACZ,SAAY,gBACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,gBACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,YAC5C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CAAC,CACR,OAAU,mBACV,KAAQ,kBACR,KAAQ,OACR,aAAgB,GAChB,aAAgB,yBCjJtB,GAAA,UAAA,kBAAA,CAAA,KAAA,IAAA,SCiBO,WAAyB,CAC9B,CACE,SAAY,WACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YAG5C,CACE,SAAY,gBACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,WAE1C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,UAEnE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,OACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,SACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,SACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,OACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,SACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,WAEvC,MAAS,CACP,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,QACrD,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,8BC9HvD,GAAA,UAAA,mBAAA,CAAA,KAAA,IAAA,SCiBO,WAAyB,CAC9B,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,GAAI,KAAQ,UAAW,KAAQ,WACnD,CAAC,MAAS,GAAI,KAAQ,OAAQ,KAAQ,WAExC,MACI,CAAC,CAAC,OAAU,IAAK,KAAQ,IAAK,KAAQ,SAAU,aAAgB,KAEtE,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,UAAW,KAAQ,WAClD,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,WAEvC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,IAAK,KAAQ,SAAU,aAAgB,KAG3E,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,UACxC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,IAEjE,MAAS,CAAC,CACR,OAAU,aACV,KAAQ,YACR,KAAQ,SACR,aAAgB,KAGpB,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,WAE1C,MAAS,CAAC,CACR,OAAU,mBACV,KAAQ,kBACR,KAAQ,OACR,aAAgB,MAGpB,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,YACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,cAGzC,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,YACtC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,cAGzC,CACE,SAAY,eACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,YACtC,CAAC,MAAS,EAAG,KAAQ,MAAO,KAAQ,YACpC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,aAE1C,MAAS,CACP,CACE,OAAU,aACV,KAAQ,YACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,WACV,KAAQ,UACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,gBACV,KAAQ,cACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,gBACV,KAAQ,eACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,mBACV,KAAQ,iBACR,KAAQ,SACR,aAAgB,KAItB,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,UAAW,KAAQ,YAEpD,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,KAGzE,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,GAAI,CACvE,OAAU,MACV,KAAQ,MACR,KAAQ,SACR,aAAgB,EAChB,aAAgB,MAItB,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,cAGzC,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,GAC/D,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,YACV,KAAQ,kBACR,KAAQ,SACR,aAAgB,KAGpB,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,kBAAmB,KAAQ,YAChD,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,KAGnE,CACE,SAAY,YACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,UACxC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,cAG1C,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YAG5C,CACE,SAAY,gBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,YAC5C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CAAC,CACR,OAAU,mBACV,KAAQ,kBACR,KAAQ,OACR,aAAgB,GAChB,aAAgB,wBC9NtB,GAAA,UAAA,iBAAA,CAAA,KAAA,IAAA,SCiBO,WAAyB,CAC9B,CACE,SAAY,MACZ,SAAY,WACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,OACZ,SAAY,WACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,OACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAAW,CAC3C,MAAS,EACT,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,QACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAAW,CAC3C,MAAS,EACT,KAAQ,aACR,KAAQ,SACR,aAAgB,8BChDxB,GAAA,UAAA,uBAAA,CAAA,KAAA,IAAA,SCiBO,WAAyB,CAC9B,CACE,SAAY,OACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,OACV,KAAQ,SACR,KAAQ,QACR,aAAgB,IAElB,CAAC,OAAU,OAAQ,KAAQ,QAAS,KAAQ,WAGhD,CACE,SAAY,aACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,YACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,aAE1C,MAAS,CAAC,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,YAEvD,CACE,SAAY,MACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,aAE1C,MAAS,CAAC,CACR,OAAU,iBACV,KAAQ,gBACR,KAAQ,SACR,aAAgB,KAGpB,CACE,SAAY,QACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YAAa,CACnD,MAAS,EACT,KAAQ,gBACR,KAAQ,SACR,aAAgB,KAItB,CACE,SAAY,UACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,cAG1C,CACE,SAAY,UACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,OACV,iBAAoB,eACpB,KAAQ,OACR,KAAQ,cAGZ,CACE,SAAY,iBACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,aAAc,KAAQ,YAC3C,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,cAG7C,CACE,SAAY,iBACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,aAAc,KAAQ,YAC3C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,cAG1C,CACE,SAAY,eACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,aAAc,KAAQ,YAAa,KAAQ,UACtD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,YAG5D,CACE,SAAY,cACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,qBCzIb,gBAgDoB,YAChB,MAAO,MAAK,WAAc,MAAK,UAAY,GAAI,OAIjD,cACE,UAAY,CACV,mBAAY,mBAAW,gBAAS,oBAAa,iBAAU,gBACvD,mBAAY,gBAAS,cAAO,cAAO,iBAAU,sBAAe,kBAC5D,mBAAW,iBAAU,uBAAgB,gCAEP,GAAG,OAAO,GAAG,MAAI,IAAI,KAAM,IAAG,OAE9D,KAAK,UAAY,YAAY,OACzB,cACE,KAAI,OAAO,UAAY,OAChB,KAET,IAKN,gCAE0C,IACxC,YAAgB,OAAM,kBACO,WACL,aACE,SACZ,QAAQ,OAA8B,aAClD,KAAI,MAAK,MAAQ,KAAK,QAAQ,OAC1B,MAAK,GAAG,WAAW,eACrB,aAAa,KAAK,IAAI,MAAK,OAClB,MAAK,KAAO,QACrB,QAAQ,KAAK,IAAI,MAAK,OACb,OAAK,OAAS,MAAQ,MAAK,MAAM,SAAW,IACrD,UAAU,KAAK,IAAI,MAAK,OAEnB,KACN,WAEkB,WACG,sBAC0B,uBACC,GAC/C,WAAa,MACf,oBAAqB,KAAK,oBAAoB,UAAU,QACxD,oBAAsB,KAAK,oBAAoB,UAAU,UAE3D,aAAiB,OAAO,KAAK,OAC7B,SAAS,QAAQ,MACf,UAAa,MAAM,KACnB,MAAK,WAAW,QAAQ,OACtB,cAAqB,oBAAoB,MACzC,MAAK,OAAO,KAAK,MAAM,WACvB,MAAM,UAAU,SAAS,KAAK,WAM9B,OAAO,KAAK,qBAAqB,SAAW,EAC9C,SAAS,QAAQ,MACf,UAAa,MAAM,KACf,MAAK,SAAS,SAAW,GAC3B,QAAQ,KAAK,SAIjB,OAAO,KAAK,qBAAqB,QAAQ,OACvC,cAAqB,oBAAoB,YAC5B,MAAM,UACf,OAAQ,MACV,OAAK,aAAe,oBAAoB,MACxC,QAAQ,KAAK,UAKf,OAAO,KAAK,oBAAoB,OAAS,EAC3C,OAAO,KAAK,oBAAoB,QAAQ,OACtC,cAAqB,oBAAoB,YAC5B,MAAM,UACf,OACF,OAAK,aAAe,mBAAmB,MACvC,OAAO,KAAK,UAIhB,OAAS,aAGX,cAAgB,GACZ,OAAM,SAAW,MAAQ,OAAM,QAAQ,UAAY,MACrD,WAAY,OAAM,QAAQ,SAAS,OAAO,oBACxC,YAAU,MAAK,UAAU,MAAQ,KAAK,YAAY,OAC3C,YACN,KAGL,WACI,CAAC,MAAO,OAAQ,QAAS,QAAS,aAAc,UAAW,WAE/D,MAAI,WAAU,OAAS,GACrB,QAAO,UAAY,WAGd,OAGD,6BACN,MAAO,QAAO,KAAK,SAAW,IACzB,OAAgC,aAC/B,MAAK,QAAQ,MAAM,MAAQ,KACpB,MACN,IAGD,eAGN,WACI,gBAAgB,MAAK,KAAO,KAAK,UAAU,MAAK,KAAO,GACvD,MAAK,MAAQ,MACf,OAAK,KAAO,IAGd,YAAsB,CACpB,KAAM,MAAK,KACX,GAAI,MAAK,GACT,SAAU,OAAO,SACjB,WACK,OAAK,OACL,IAAI,IAAI,QAAS,OAAM,WAAW,KAAO,OAAM,OAAO,GAAK,QAChE,OAAQ,GACR,SAAU,GACV,YAAa,GACb,WAAY,GACZ,SAAU,MAAK,MAGjB,MAAI,QAAO,QAAU,MACnB,SAAQ,YACJ,OAAO,OAAO,OACV,aACE,KAAI,MAAM,MAAQ,CAChB,KAAM,MAAM,KACZ,gBAAiB,MAAM,MACvB,cAAe,MAAM,KAEhB,KAET,KAEN,OAAO,OAAS,MAClB,SAAQ,WACJ,OAAO,MAAM,OAAoC,cAC/C,SAAa,MAAM,WAEnB,OAAQ,MAAM,UACP,SACH,MAAQ,eACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAE/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,eACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,WACH,MAAQ,oBACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAE/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,oBACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,SACH,MAAQ,eACJ,MAAK,KAAM,MAAM,OAChB,MAAM,cAAgB,GACvB,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,eACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,WACH,MAAQ,qBACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAC/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,qBACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,OACH,MAAQ,aACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAC/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,aACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,SACH,MAAQ,kBACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAC/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,kBACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,QACH,MAAQ,oBACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAC/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,oBACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,UACH,MAAQ,yBACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAC/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,yBACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,QACH,MAAQ,cACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAC/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,cACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,UACH,MAAQ,mBACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAC/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,mBACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,OACH,MAAQ,aACJ,MAAK,KAAM,MAAM,OAAQ,MAAM,cAC/B,QAAU,QAAa,CAAC,CAAC,MAAM,kBACjC,OAAQ,aACJ,MAAK,KAAM,MAAM,iBACjB,MAAM,eAEZ,UACG,aACA,UACH,cAEA,KAAM,IAAI,OACN,2BAA2B,MAAM,gBAAgB,MAAK,MAE9D,MAAA,KAAI,MAAM,MAAQ,CAAC,MAAO,MACnB,KACN,KAEF,QAID,yBACN,YAAgB,YAAY,qBACC,WACL,SACW,GAC/B,SAAW,MACb,OAAQ,QAAQ,OAA8B,aAC5C,KAAI,MAAK,MAAQ,KAAK,QAAQ,OAC1B,MAAK,KAAO,SACd,QAAQ,KAAK,IAAI,MAAK,OAEjB,KACN,KAEL,WAAuB,WACC,GAExB,YAAY,UAAU,SAAS,QAAQ,MACrC,cAAqB,oBAAoB,IAAI,YAC1B,CACjB,KAAM,SACN,GAAI,cACJ,OAAQ,GACR,WAAY,GACZ,SAAU,QACV,YAAa,GACb,WAAY,CAAC,MAAO,CAAC,MAAO,gBAAgB,IAAI,MAAO,KAAM,UAC7D,SAAU,IAEZ,MAAK,aAAe,IAAI,KACxB,OAAO,KAAK,OACZ,MAAM,UAAY,QAGpB,aAAiB,OAAO,KAAK,OAC7B,SAAS,QAAQ,MACf,UAAa,MAAM,KACnB,MAAK,WAAW,QAAQ,OACtB,cAAqB,oBAAoB,MACzC,MAAK,OAAO,KAAK,MAAM,WACvB,MAAM,UAAU,SAAS,KAAK,WAIlC,kBAAsB,YAAY,IAElC,YAAY,UAAU,UAAU,QAAQ,SACtC,oBAA0B,oBAAoB,cAAc,OAAO,aACtD,MAAM,UACf,OAAQ,MACV,OAAK,cAAgB,MACrB,QAAQ,KAAK,UAIjB,cAAkB,KAAK,mBAAmB,aAC1C,MAAO,CAAC,MAAO,OAAQ,QAAS,QAAS,aAAc,WAGjD,gCAEN,MAAO,CACL,WAAY,YAAY,UAAU,KAClC,OAAQ,YAAY,UAAU,SAAS,OACnC,WACE,KAAI,IAAI,MAAQ,KAAK,mBAAmB,KACjC,KAET,IACJ,QAAS,YAAY,UAAU,UAAU,OACrC,WACE,KAAI,IAAI,MAAQ,KAAK,mBAAmB,IAAK,YAAY,KAClD,KAET,KAIA,iCAGN,SAAW,IAAI,KACf,MAAI,WAAW,MACb,MAAO,SAAQ,OAEV,CAAC,KAAM,MAAO,IAAI,QAIvB,4BACJ,YAAe,MAAM,OACrB,GAAI,MAAO,SAAO,MAAS,YACzB,MAAO,SAAO,KAAK,MACd,GAAI,MAAO,SAAW,YAC3B,MAAO,IAAI,QAAO,KAAM,UAAU,WAElC,KAAM,IAAI,OACN,oFAKF,sCACJ,UACI,MAAM,QAAQ,GAAK,OAAO,aAAa,MAAM,KAAM,GAAK,aAAa,GACzE,MAAO,UAAW,MAAQ,MAAM,cAG5B,gDAES,IACb,UAAc,MAAM,MACpB,MAAI,QAAS,KACJ,iBAAiB,MAAM,EAAG,UAE5B,IAGH,sCAGJ,UAAc,MAAM,MACpB,MAAO,OAAQ,MAAM,EAAI,IAGrB,wCAGJ,UAAc,MAAM,OAAS,SAEzB,MAAM,GAAQ,KAAO,MAAM,EAAQ,MAAM,GAAQ,KAAO,MAAM,EAAO,IACzE,MAAQ,OAAO,QAAU,SAAY,MAAQ,SAAS,MAAO,IAGzD,gCACA,MAAQ,QAAW,UAErB,OAAmB,SAAS,QAE9B,OAAQ,WACU,UAAS,SACvB,MAAO,cACO,UAAS,aACT,UAAS,aACT,UAAS,YACT,UAAS,SACvB,MAAO,YACO,UAAS,QACvB,MAAO,WACO,UAAS,UACvB,MAAO,cACO,UAAS,UACvB,MAAO,iBAIP,MAAO,OAIP,sCAGJ,UAAc,MAAM,MACpB,MAAI,QAAS,MAAM,KACV,MAAM,KAAK,KAEb,IAGH,uCAGJ,UAAc,MAAM,MACpB,MAAI,QAAS,MAAM,KACV,gBAAgB,MAAM,MAExB,IAGH,4CAGJ,UAAc,MAAM,MACpB,MAAI,QAAS,MAAM,MAAQ,MAAM,KAAK,KAC7B,MAAM,KAAK,KAAK,IAAI,GAAK,gBAAgB,IAE3C,IAGH,sCAEJ,MAAI,OAAM,YACR,OAEE,MAAM,KAAO,KACR,MAAM,IAAI,IACb,KACK,MAAO,KAAI,MAAS,SAAY,IAAI,KAAO,SAAS,IAAI,KAAM,KAElE,GAGH,6CAGJ,UAAc,MAAM,MACpB,MAAI,QAAS,MAAM,MACV,sBAAsB,MAAM,OAE9B,IAGH,8CAGJ,UAAc,MAAM,MACpB,MAAI,OACO,QAAM,KAAK,GAAK,MAAM,KAAK,EAAE,OAAS,MAAM,KAAK,EACX,MAAM,KAAK,IAClD,IACH,IAAI,GAAM,MAAO,IAAM,SAAY,EAAI,SAAS,EAAG,KAEnD,IAGH,qDAES,IACb,UAAc,MAAM,MACpB,MAAI,QAAS,MAAM,MAAQ,MAAM,KAAK,EAC7B,MAAM,KAAK,EAAE,IAAI,GACf,iBAAiB,EAAG,WAGxB,IAGH,kDAGJ,UAAc,MAAM,MACpB,MAAI,QAAS,MAAM,MAAQ,MAAM,KAAK,MAC7B,MAAM,KAAK,MAAM,IAAI,GACnB,sBAAsB,IAG1B,IAGH,2CAGJ,UAAc,MAAM,MACpB,MAAI,QAAS,MAAM,MAAQ,MAAM,KAAK,EAC7B,MAAM,KAAK,EAEb,ICvkBT,kBAAA,MA+BE,qCACY,KAAA,KAAA,MAAoB,KAAA,UAAA,UACpB,KAAA,QAAA,QAJI,KAAA,OAAmB,GACnB,KAAA,MAAoC,GAIlD,KAAK,OAAS,MAAK,WAAW,IAAI,MAAQ,KAAK,SAAS,OACpD,MAAK,UAAY,MACnB,MAAK,MAAQ,OAAO,KAAK,MAAK,UACZ,OAAO,aACN,OAAM,KAAO,KAAK,QAAQ,KACnB,OACN,KAQhB,eACN,MAAO,WAAU,KAAM,KAAK,UAAW,KAAK,SAOtC,2BACN,UAAc,KAAK,KAAK,SAAS,MACjC,GAAI,MAAM,QAAU,KAClB,MAAO,WAAU,KAAM,KAAK,UAAW,KAAK,SAE9C,GAAI,MAAM,GAAK,MAAQ,MAAM,GAAK,KAChC,MAAO,gBAAe,KAAK,KAAK,SAAU,KAAM,cAElD,GAAI,MAAM,GAAK,KACb,MAAO,gBAAe,KAAK,KAAK,SAAU,KAAM,cAElD,GAAI,MAAM,GAAK,KACb,MAAO,cAAa,KAAK,KAAK,SAAU,KAAM,cAEhD,GAAI,MAAM,OAAS,KACjB,MAAO,qBACH,KAAK,KAAK,SAAU,KAAM,cAEhC,GAAI,MAAM,MAAQ,KAChB,MAAO,eAAc,KAAK,KAAK,SAAU,KAAM,cAEjD,GAAI,MAAM,MAAQ,MAChB,GAAI,MAAM,KAAK,GAAK,MAAQ,MAAM,KAAK,GAAK,KAC1C,MAAO,sBACH,KAAK,KAAK,SAAU,KAAM,cAEhC,GAAI,MAAM,KAAK,GAAK,KAClB,MAAO,qBACH,KAAK,KAAK,SAAU,KAAM,cAEhC,GAAI,MAAM,KAAK,OAAS,KACtB,MAAO,0BACH,KAAK,KAAK,SAAU,KAAM,cAEhC,GAAI,MAAM,KAAK,GAAK,KAClB,MAAO,mBACH,KAAK,KAAK,SAAU,KAAM,cAEhC,GAAI,MAAM,KAAK,MAAQ,KACrB,MAAO,oBACH,KAAK,KAAK,SAAU,KAAM,cAIlC,MAAO,0BCxEP,4BAEE,OAAQ,MAAK,QACN,cACA,YACA,MACH,MAAO,CAAO,KACT,cAAc,IAAK,MAAM,UAAW,SACrC,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,KACV,cAAc,UAAW,MAAM,UAAW,eAE3C,eACA,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eACrC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eACrC,cACA,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,WACH,MAAO,CAAO,SACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,WACH,MAAO,CAAO,SACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,UACH,MAAO,CAAO,QACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,UACH,MAAO,CAAO,QACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,oBACH,MAAO,CAAO,kBACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,mBAGxC,KAAM,WAAU,aAAa,MAAK,sCCjExC,4BAEE,OAAQ,MAAK,QACN,UACA,aACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eACrC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eACrC,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,eACrC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eACrC,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,eACrC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eACrC,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eACrC,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,eACrC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eACrC,UACH,MAAO,CAAO,QACV,cAAc,OAAQ,MAAM,UAAW,SACvC,cAAc,OAAQ,MAAM,UAAW,eACxC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eACrC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eACrC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eACrC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eACrC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eACrC,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,eAErC,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,eACrC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eACrC,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eAErC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eACrC,aACH,MAAO,CAAO,WACV,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eACrC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eACrC,QACH,MAAO,CAAO,OACV,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eACrC,UACH,MAAO,CAAO,QACV,cAAc,IAAK,MAAM,UAAW,eACrC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eACrC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eAErC,WACH,MAAO,CAAO,SACV,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eAErC,SACH,MAAO,CAAO,OACV,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,eAErC,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eACrC,cACH,MAAO,CAAO,YACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,eAAgB,MAAM,UAAW,SAC/C,cAAc,eAAgB,MAAM,UAAW,eAEhD,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,eACrC,QACH,MAAO,CAAO,MACV,UAAU,MAAK,WAAW,GAAI,UAAW,eAC1C,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,OAAQ,MAAM,UAAW,eACxC,YACH,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,QAAS,MAAM,UAAW,eACzC,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,QAAS,MAAM,UAAW,mBAE5C,KAAM,WAAU,aAAa,MAAK,2BCtJtC,8EACuD,IAC3D,aAAK,OACD,8BAA8B,OAAQ,QACtC,IAAM,mBAAqB,WAAW,cAAc,qBAGpD,8CACJ,GAAI,GAAG,SAAW,GAAG,OACnB,MAAO,GAET,UAAa,EAAG,EAAI,GAAG,OAAQ,IAC7B,GAAI,GAAG,KAAO,IAAM,GAAG,KAAO,IAAM,GAAG,KAAO,GAAG,GAC/C,MAAO,GAGX,MAAO,GCzCT,gBAAA,MAmCE,+FACa,KAAA,KAAA,KAAuB,KAAA,MAAA,MAAyB,KAAA,QAAA,QACjD,KAAA,aAAA,aAAiC,KAAA,uBAAA,uBAChC,KAAA,YAAA,YAA+B,KAAA,eAAA,eANpC,KAAA,QAA6B,GAC7B,KAAA,QAAU,GAMhB,KAAK,SAAW,OAAO,GACvB,KAAK,KAAK,aAGR,MACF,MAAO,MAAK,SAAS,MAGnB,UACF,MAAO,MAAK,QAMd,uBACE,KAAK,QAAQ,QAAQ,YACf,AAAA,UAAW,MAAQ,CAAC,QAAQ,IAAI,UAAO,OAAO,MAChD,UAAO,OAAO,YAGlB,KAAK,QAAU,GACf,KAAK,QAAU,GACf,KAAK,SAAS,UAGhB,OACE,MAAO,MAAK,QAAQ,OAOtB,YACE,GAAI,KAAK,QACP,KAAM,IAAI,OAAM,eAAe,KAAK,iCAGtC,GAAI,MAAQ,GAAK,OAAS,KAAK,OAC7B,KAAM,IAAI,OAAM,4BAA4B,6BACxC,KAAK,UAGX,oBAAwB,KAAK,QAAQ,OACrC,GAAI,gBAAgB,QAClB,KAAM,IAAI,OACN,eAAe,KAAK,8BAChB,6GAIV,MAAI,MAAK,gBACP,iBAAgB,QAAU,IAG5B,gBAAgB,KAAO,GAChB,gBAAgB,OAMzB,kBACE,MAAO,SAAQ,IAAI,OAAS,KAAK,KAAK,QAQxC,uBACE,GAAI,KAAK,QACP,KAAM,IAAI,OAAM,eAAe,KAAK,iCAGtC,GAAI,MAAQ,GAAK,CAAC,KAAK,aAAe,OAAS,KAAK,QAClD,KAAM,IAAI,OAAM,2BACZ,mDAAmD,KAAK,WAG9D,MAAU,KAAK,QAAQ,QAAU,GAEjC,GAAI,UAAO,QAAU,KAAK,MACxB,KAAM,IAAI,OAAM,eACZ,KAAK,8CAA8C;uCAEnD,UAAO,mCAAmC,KAAK,UAcrD,GAVI,KAAK,SAAW,GACf,MAAK,cAAgB,MAAQ,KAAK,aAAa,SAAW,IAC7D,MAAK,aAAe,UAAO,OAG7B,oCACI,KAAK,aAAc,UAAO,MAC1B,eAAe,KAAK,8CAChB,UAEJ,EAAE,KACJ,KAAM,IAAI,OACN,eAAe,KAAK,8CAChB,4CAGV,GAAI,EAAE,QACJ,KAAM,IAAI,OACN,eAAe,KAAK,8CAChB,+CAGV,EAAE,OAAS,UACX,KAAK,WACL,EAAE,QAAU,GAEZ,KAAK,QAAQ,OAAS,EAMxB,2BACE,GAAI,QAAQ,SAAW,QAAQ,OAC7B,KAAM,IAAI,OACN,eAAe,KAAK,kEAEhB,QAAQ,2CACR,QAAQ,WAGlB,QAAQ,QAAQ,WAAc,KAAK,MAAM,EAAG,QAAQ,SAWtD,sBACE,GAAI,CAAC,CAAC,OAAS,QAAU,KAAK,MAC5B,KAAM,IAAI,OAAM,wBACZ,KAAK,oCAAoC,SAG/C,GAAK,QAMH,QAAU,QAAQ,MAAM,EAAG,KAAK,aALhC,QAAU,GACV,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,QAAQ,KAAK,GAMjB,GAAI,QAAQ,SAAW,EACrB,MAAO,SAAO,GAAI,CAAC,GAAG,OAAO,KAAK,eAKpC,YAAgB,KAAK,SAAS,SAE9B,MAAA,qCACI,KAAK,aAAc,QAAQ,GAAG,MAAO,gCAElC,MAAM,QAAS,GAMxB,cACE,GAAI,CAAC,CAAC,OAAS,QAAU,KAAK,MAC5B,KAAM,IAAI,OAAM,wBACZ,KAAK,oCAAoC,SAG/C,GAAI,KAAK,SAAW,EAClB,MAAO,SAAO,GAAI,CAAC,GAAG,OAAO,KAAK,eAGpC,YAAgB,GAChB,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,QAAQ,KAAK,GAGf,YAAgB,KAAK,SAAS,SAE9B,MAAA,qCACI,KAAK,aAAc,QAAQ,GAAG,MAC9B,mDACI,KAAK,wCAAwC,QAAQ,GAAG,UAEzD,OAAO,QAAS,GASzB,2BACE,GAAI,UAAO,QAAU,KAAK,MACxB,KAAM,IAAI,OAAM,wBACZ,KAAK,8BAA8B,UAAO,SAGhD,GAAI,QAAQ,SAAW,UAAO,MAAM,GAClC,KAAM,IAAI,OAAM,sDACZ,QAAQ,cAAc,UAAO,MAAM,MAGzC,aAAiB,KAAK,IAAI,GAAG,SAE7B,GAAI,CAAC,KAAK,aAAe,UAAY,KAAK,QACxC,KAAM,IAAI,OACN,mCAAmC,iBAAiB,KAAK,YAG/D,KAAK,UAAU,QAAS,QAAQ,UAAQ,IAS1C,wBACE,GAAI,UAAO,QAAU,KAAK,MACxB,KAAM,IAAI,OAAM,wBACZ,KAAK,8BAA8B,UAAO,SAEhD,gBAAkB,oBACQ,OAAO,IAAI,KACnC,cAAe,IACR,cAGT,GAAI,cAAgB,UAAO,MAAM,GAC/B,KAAM,IAAI,OAAM;;UAEZ,uCAAuC,UAAO,SAGpD,GAAI,CAAC,KAAK,aAAe,OAAO,SAAW,KAAK,QAC9C,KAAM,IAAI,OACN,2DACI,KAAK,eAAe,OAAO,wEAIrC,kBAAsB,cAAgB,EAAI,EAAI,UAAO,KAAO,oBAClC,GAC1B,KAAK,KACH,UAAS,QAAQ,UAAQ,CAAC,EAAG,YAAa,gBAC1C,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,GACnC,mBAAwB,IAAM,EAAK,EAAI,kBAAkB,EAAI,YAC7C,CAAC,EAAG,eAAgB,SACtB,CAAC,EAAG,OAAO,GAAI,eAC7B,QAAQ,GAAK,QAAQ,MAAM,UAAQ,SAAS,OAAQ,KAAK,cAE3D,MAAO,WAET,YAAgB,GAChB,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,QAAQ,GAAK,EAEf,KAAK,UAAU,QAAS,sBCzT5B,MAmDE,6DAEsD,IADzC,KAAA,QAAA,QAA4B,KAAA,aAAA,aAC5B,KAAA,aAAA,aACP,SAAW,MACb,QAAQ,QAAQ,YACd,GAAI,eAAiB,UAAO,MAC1B,KAAM,IAAI,OAAM,mCACZ,mCAAmC,UAAO,SAEhD,oCACI,aAAc,UAAO,MAAO,+BAEhC,KAAK,aAGT,KAAK,SAAW,OAAO,GACvB,KAAK,eAAiB,eACtB,KAAK,KAAK,aA5BR,MACF,MAAO,MAAK,SAAS,GAiCvB,OACE,MAAO,IAAI,YACP,CAAC,GAAG,KAAK,SAAU,KAAK,aAAc,KAAK,cAMjD,uBACE,KAAK,QAAQ,QAAQ,YACf,AAAA,UAAW,MAAQ,CAAC,QAAQ,IAAI,UAAO,MACzC,UAAO,YAGX,KAAK,QAAQ,OAAS,EACtB,KAAK,SAAS,UAKhB,OACE,MAAO,MAAK,QAAQ,OAUtB,4CAAoE,IAElE,GAAI,eAAiB,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,mCAAmC,KAAK,gBAE9C,GAAI,cAAgB,IAAM,KAAK,QAAQ,SAAW,YAChD,KAAM,IAAI,OAAM,kCACZ,4CACA,KAAK,QAAQ,oBAEnB,MAAA,qCACI,aAAc,KAAK,aAAc,+BAC9B,KAAK,KACV,oBACI,KAAK,QAAQ,IAAI,WAAU,QAAQ,UAAQ,eAC/C,MAAO,OAAM,gBAAiB,KASlC,mCACE,GAAI,eAAiB,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,mCAAmC,KAAK,gBAG9C,GAAI,KAAK,SAAW,EAClB,KAAM,IAAI,OAAM,qCAGlB,cAAe,KAAK,QAAQ,MAC5B,MAAA,qCACI,UAAO,MAAO,aAAc,+BACzB,QAAQ,UAAQ,cAOzB,oBACE,GAAI,UAAO,QAAU,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,UAAO,4BAA4B,KAAK,gBAM9C,GAHA,oCACI,UAAO,MAAO,KAAK,aAAc,+BAEjC,KAAK,iBAAmB,KAAK,OAC/B,KAAM,IAAI,OAAM,4CAElB,KAAK,WACL,KAAK,QAAQ,KAAK,WAOpB,aACE,GAAI,KAAO,EACT,KAAM,IAAI,OACN,0DAA0D,QAGhE,GAAI,KAAK,iBAAmB,IAAM,KAAO,KAAK,eAC5C,KAAM,IAAI,OAAM,+BACZ,iCAAiC,KAAK,mBAE5C,KAAK,QAAQ,OAAS,KASxB,gDAEE,GAAI,eAAiB,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,mCAAmC,KAAK,gBAE9C,GAAI,aAAe,GAAK,aAAe,KAAK,QAAQ,OAClD,KAAM,IAAI,OAAM,4BACZ,+BAA+B,KAAK,QAAQ,oBAGlD,GAAI,KAAK,QAAQ,eAAiB,KAChC,KAAM,IAAI,OAAM,oBAAoB,yBAGtC,MAAA,qCACI,KAAK,QAAQ,cAAc,MAAO,aAClC,+BAEG,KAAK,QAAQ,cAQtB,gCACE,GAAI,UAAO,QAAU,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,UAAO,4BAA4B,KAAK,gBAG9C,GAAI,aAAe,GACf,KAAK,iBAAmB,IAAM,cAAgB,KAAK,eACrD,KAAM,IAAI,OAAM,yBACZ,mCAAmC,KAAK,4BAG9C,oCACI,KAAK,aAAc,UAAO,MAAO,+BACrC,KAAK,WACL,KAAK,QAAQ,cAAgB,UAU/B,0CAEE,GAAI,eAAiB,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,mCAAmC,KAAK,gBAU9C,MAPA,qCACI,KAAK,aAAc,aAAc,+BAIrC,QAAU,QAAQ,MAAM,EAAG,KAAK,QAE5B,QAAQ,SAAW,EACd,QAAO,GAAI,CAAC,GAAG,OAAO,KAAK,eAG7B,KAAK,KACV,YAAgB,QAAQ,IAAI,GAAK,QAAQ,KAAK,QAAQ,GAAI,eAC1D,MAAO,OAAM,QAAS,KAS1B,kCACE,GAAI,CAAC,CAAC,cAAgB,eAAiB,KAAK,aAC1C,KAAM,IAAI,OAAM,uBACZ,KAAK,2CAA2C,gBAMtD,MAHA,qCACI,KAAK,aAAc,aAAc,+BAEjC,KAAK,SAAW,EACX,QAAO,GAAI,CAAC,GAAG,OAAO,KAAK,eAG7B,KAAK,KACV,YAAgB,KAAK,QAAQ,IAAI,GAAK,QAAQ,EAAG,eACjD,MAAO,QAAO,QAAS,OAUvB,yDAEJ,UAAc,UAAO,MACrB,GAAI,UAAO,MAAM,OAAS,EACxB,KAAM,IAAI,OACN,oDAAoD,UAAO,SAEjE,GAAI,UAAO,QAAU,aACnB,KAAM,IAAI,OAAM,mCACZ,UAAO,4BAA4B,gBAEzC,gBAAoB,UAAO,MAAM,MAAM,GACvC,oCACI,YAAa,aAAc,+BAE/B,eAA6B,QAAQ,WACrC,MAAO,IAAI,YAAW,WAAY,aAAc,OAS5C,wDAEJ,MAAO,IAAI,YAAW,GAAI,aAAc,aAAc,aAUlD,6DAGJ,GAAI,QAAQ,SAAW,UAAO,MAAM,GAClC,KAAM,IAAI,OAAM,sDACZ,QAAQ,cAAc,UAAO,MAAM,MAGzC,aAAiB,KAAK,IAAI,GAAG,SAE7B,GAAI,aAAe,MAAQ,cAAgB,IAAM,UAAY,YAC3D,KAAM,IAAI,OACN,mCAAmC,iBAAiB,gBAG1D,SAAa,GAAI,YAAW,GAAI,aAAc,UAAO,MAAO,qBAC5C,QAAQ,UAAQ,GAChC,MAAA,SAAQ,QAAQ,gBACd,KAAK,QAAQ,MAAO,QAAQ,UAEvB,KAUH,+CAEJ,gBAAkB,oBACQ,OAAO,IAAI,KACnC,cAAe,IACR,cAGT,GAAI,cAAgB,UAAO,MAAM,GAC/B,KAAM,IAAI,OAAM;;UAEV,uCAAuC,UAAO,SAGtD,kBAAsB,cAAgB,EAAI,EAAI,UAAO,KAAO,oBAClC,KAAK,KAC7B,aAAgB,GAChB,UAAS,QAAQ,UAAQ,CAAC,EAAG,YAAa,gBAC1C,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,GACnC,mBAAwB,IAAM,EAAK,EAAI,kBAAkB,EAAI,WAC7C,CAAC,EAAG,eAAgB,SACtB,CAAC,EAAG,OAAO,GAAI,eAC7B,SAAQ,GAAK,QAAQ,MAAM,UAAQ,QAAS,OAAQ,cAEtD,MAAA,WAAO,UACA,gBAGI,GAAI,YAAW,GAAI,aAAc,UAAO,MAAO,OAAO,QAEnE,UAAa,EAAG,EAAI,QAAQ,OAAQ,IAClC,KAAK,QAAQ,EAAG,QAAQ,IAE1B,MAAO,MChXF,eAA2C,iCAGhD,OAAQ,MAAK,QACN,SACA,eACH,aACI,cAAc,aAAc,MAAM,UAAW,kBAE7C,cAAc,aAAc,MAAM,UAAW,cACpC,cAAc,OAAQ,MAAM,UAAW,cACvC,cAAc,OAAQ,MAAM,UAAW,mBAClC,KAAM,MAAK,OAC7B,MAAI,WAAU,GACL,QAAQ,YAAY,UAAU,qBACjC,KAAM,QAAQ,eAAgB,QAAQ,eAEnC,QAAQ,YAAY,UAAU,qBACjC,KAAM,QAAQ,eAAgB,QAAQ,mBAGzC,YACA,kBACH,aACI,cAAc,OAAQ,MAAM,UAAW,kBAEvC,cAAc,OAAQ,MAAM,UAAW,cAC9B,cAAc,OAAQ,MAAM,UAAW,oBAI/C,KAAM,SAAQ,YAAY,UAAU,qBACjC,KAAM,QAAQ,eAAgB,QAAQ,sBAC/B,KAAK,IAAI,WAAU,UAAO,cACzB,KAAM,YAAW,GAAG,OAEpC,WAAW,QAAQ,YACb,CAAC,UAAO,MAAQ,OAAO,QAAQ,UAAO,MAAQ,IAChD,UAAO,YAIX,WAAuB,KAEvB,KAAO,UAAU,KAEf,eAAmB,OAEnB,OAAS,KAAM,SAAQ,YAAY,UAAU,qBACzC,OAAQ,QAAQ,eAAgB,QAAQ,eAC5C,cAAkB,OAAO,IAAI,WAAU,UAAO,IAI9C,WAAW,QAAQ,YACb,CAAC,UAAO,MAAQ,OAAO,QAAQ,UAAO,MAAQ,IAC9C,UAAU,QAAQ,UAAO,MAAQ,IACnC,UAAO,YAKX,gBACK,KAAM,SAAQ,YAAY,UAAU,qBACjC,OAAQ,QAAQ,eAAgB,QAAQ,eAChD,UAAY,KAAM,aAAW,GAAG,OAEhC,YAAW,QAAQ,YACb,CAAC,UAAO,MAAQ,OAAO,QAAQ,UAAO,MAAQ,IAC9C,UAAU,QAAQ,UAAO,MAAQ,IACnC,UAAO,YAIb,MAAO,YAEJ,YACH,SAAa,cAAc,OAAQ,MAAM,UAAW,SACpD,MAAO,CAAC,YAAY,WAEjB,UACH,SAAa,cAAc,OAAQ,MAAM,UAAW,cACzC,cAAc,OAAQ,MAAM,UAAW,SAClD,MAAK,MAAK,MACR,MAAO,YAAY,OAGb,MAAM,MAAK,QAAQ,GAAK,CAAC,OAAW,MAAQ,CAAC,KAAM,YAExD,SACH,cAAkB,MAAK,WAAW,KAC9B,MAAQ,UAAU,KAAM,UAAW,WAAa,QACpD,GAAI,WACF,SAAa,UAAU,UAAW,UAAW,SAC7C,MAAO,CAAC,YAAY,OAEtB,WAEG,SACH,YACI,cAAc,YAAa,MAAM,UAAW,cACnC,cAAc,SAAU,MAAM,UAAW,SACtD,MAAA,SAAQ,WAAW,SACZ,CAAC,YAAY,WAEjB,QACH,SAAa,cAAc,SAAU,MAAM,UAAW,SACtD,MAAA,SAAQ,YACD,CAAC,YAAY,WAEjB,iBACH,SAAa,cAAc,SAAU,MAAM,UAAW,SACtD,MAAA,SAAQ,gBACD,CAAC,YAAY,WAEjB,iBACH,SAAa,cAAc,OAAQ,MAAM,UAAW,eAEhD,cAAc,QAAS,MAAM,UAAW,sBAExC,cAAc,eAAgB,MAAM,UAAW,qBAE/C,cAAc,cAAe,MAAM,UAAW,wBAE9C,cAAc,iBAAkB,MAAM,UAAW,gCAEjD,cAAc,yBAA0B,MAAM,UAAW,cAEhD,cAAc,OAAQ,MAAM,UAAW,qBAChC,GAAI,aACpB,KAAM,MAAO,KAAM,aAAc,uBAAwB,YACzD,gBACJ,MAAA,SAAQ,eAAe,aAChB,CAAC,YAAY,SAAU,OAAO,QAElC,sBACH,OACI,cAAc,gBAAiB,MAAM,UAAW,eACtC,cAAc,QAAS,MAAM,UAAW,qBAElD,cAAc,SAAU,MAAM,UAAW,0BACpB,QAAQ,eAAe,GAAG,IACnD,MAAA,kBAAiB,MAAM,MAAO,aACvB,CAAC,iBAAiB,cAEtB,qBACH,WACI,cAAc,gBAAiB,MAAM,UAAW,mBAEhD,cAAc,QAAS,MAAM,UAAW,yBACpB,QAAQ,eAAe,OAAO,IACtD,MAAO,CAAC,gBAAgB,KAAK,gBAE1B,uBACH,aACI,cAAc,gBAAiB,MAAM,UAAW,uBAEhD,cAAc,UAAW,MAAM,UAAW,qBAE1C,cAAc,QAAS,MAAM,UAAW,2BAClB,QAAQ,eAAe,SAAS,IAC1D,MAAO,CAAC,kBAAkB,OAAO,cAAe,kBAE7C,wBACH,cACI,cAAc,gBAAiB,MAAM,UAAW,wBAEhD,cAAc,UAAW,MAAM,UAAW,uBAE1C,cAAc,SAAU,MAAM,UAAW,4BAClB,QAAQ,eAAe,UAAU,IAC5D,MAAA,oBAAmB,QAAQ,eAAgB,eACpC,CAAC,mBAAmB,cAExB,uBACH,aACI,cAAc,gBAAiB,MAAM,UAAW,2BAC1B,QAAQ,eAAe,SAAS,gBAEtD,cAAc,QAAS,MAAM,UAAW,SAC5C,MAAO,CAAC,kBAAkB,OAAO,kBAE9B,sBACH,YACI,cAAc,gBAAiB,MAAM,UAAW,qBAEhD,cAAc,SAAU,MAAM,UAAW,iBAEzC,cAAc,UAAW,MAAM,UAAW,0BACrB,QAAQ,eAAe,QAAQ,IACxD,MAAA,kBAAiB,MAAM,QAAS,aACzB,CAAC,iBAAiB,cAEtB,qBACH,WACI,cAAc,gBAAiB,MAAM,UAAW,yBAC5B,QAAQ,eAAe,OAAO,IACtD,MAAO,CAAC,OAAO,gBAAgB,OAAQ,cAEpC,sBACH,YACI,cAAc,gBAAiB,MAAM,UAAW,0BAC3B,QAAQ,eAAe,QAAQ,IACxD,MAAA,kBAAiB,gBACV,CAAC,iBAAiB,cAEtB,qBACH,aACI,cAAc,eAAgB,MAAM,UAAW,eACrC,cAAc,QAAS,MAAM,UAAW,qBAElD,cAAc,SAAU,MAAM,UAAW,oBAC1B,QAAQ,cAAc,SAAS,IAClD,MAAA,YAAW,QAAQ,MAAO,aACnB,CAAC,WAAW,cAEhB,qBACH,aACI,cAAc,eAAgB,MAAM,UAAW,mBAE/C,cAAc,QAAS,MAAM,UAAW,sBAExC,cAAc,eAAgB,MAAM,UAAW,sBAG/C,cAAc,eAAgB,MAAM,UAAW,oBAChC,QAAQ,cAAc,SAAS,IAClD,MAAO,CAAC,WAAW,QAAQ,UAAW,aAAc,mBAEjD,0BACA,qBACH,mBACI,cAAc,UAAW,MAAM,UAAW,uBAE1C,cAAc,SAAU,MAAM,UAAW,sBAEzC,cAAc,eAAgB,MAAM,UAAW,qBAE/C,cAAc,cAAe,MAAM,UAAW,oBAE9C,QAAQ,cAAe,eAAgB,aAAc,aACzD,MAAA,SAAQ,cAAc,YACf,CAAC,WAAW,cAEhB,wBACA,mBACH,iBACI,cAAc,eAAgB,MAAM,UAAW,sBAE/C,cAAc,eAAgB,MAAM,UAAW,0BAG/C,MAAK,KAAO,oBACd,iBAAmB,cAEnB,iBAAmB,iBAGrB,gBACI,cAAc,iBAAkB,MAAM,UAAW,oBAElC,QAAQ,aAAc,aAAc,aACvD,MAAA,SAAQ,cAAc,YACf,CAAC,WAAW,cAEhB,oBACH,aACI,cAAc,eAAgB,MAAM,UAAW,uBAE/C,cAAc,UAAW,MAAM,UAAW,sBAE1C,cAAc,eAAgB,MAAM,UAAW,sBAE/C,cAAc,eAAgB,MAAM,UAAW,oBAChC,QAAQ,cAAc,SAAS,IAClD,MAAO,CAAC,WAAW,OAAO,cAAe,aAAc,mBAEpD,mBACH,aACI,cAAc,eAAgB,MAAM,UAAW,sBAE/C,cAAc,eAAgB,MAAM,UAAW,sBAE/C,cAAc,eAAgB,MAAM,UAAW,qBAE/C,cAAc,cAAe,MAAM,UAAW,oBAC/B,QAAQ,cAAc,SAAS,IAClD,MAAO,CAAC,WAAW,MAAM,aAAc,aAAc,kBAElD,wBACH,cACI,cAAc,SAAU,MAAM,UAAW,sBAEzC,cAAc,eAAgB,MAAM,UAAW,sBAE/C,cAAc,eAAgB,MAAM,UAAW,oBAChC,WAAW,UAAQ,aAAc,cACpD,MAAA,SAAQ,cAAc,YACf,CAAC,WAAW,cAEhB,oBACH,aACI,cAAc,eAAgB,MAAM,UAAW,oBAChC,QAAQ,cAAc,SAAS,gBAE9C,cAAc,QAAS,MAAM,UAAW,sBAExC,cAAc,eAAgB,MAAM,UAAW,SACnD,MAAO,CAAC,WAAW,OAAO,YAAa,mBAEpC,sBACH,aACI,cAAc,eAAgB,MAAM,UAAW,qBAE/C,cAAc,SAAU,MAAM,UAAW,oBAC1B,QAAQ,cAAc,SAAS,IAClD,MAAA,YAAW,SAAS,aACb,CAAC,WAAW,cAEhB,qBACH,aACI,cAAc,eAAgB,MAAM,UAAW,sBAE/C,cAAc,eAAgB,MAAM,UAAW,sBAE/C,cAAc,eAAgB,MAAM,UAAW,oBAChC,QAAQ,cAAc,SAAS,IAClD,MAAO,CAAC,WAAW,QAAQ,aAAc,mBAEtC,mBACH,gBACI,cAAc,SAAU,MAAM,UAAW,sBAEzC,cAAc,eAAgB,MAAM,UAAW,iBAE/C,cAAc,UAAW,MAAM,UAAW,oBAE3B,OAAM,YAAa,QAAS,cAC/C,MAAA,SAAQ,cAAc,YACf,CAAC,WAAW,kBAGnB,KAAM,WAAU,aAAa,MAAK,2BCtVxC,8DAEE,4BACK,cAAc,WAAY,MAAM,UAAW,mBAE9B,UAAY,kBACd,iBAAmB,oBACf,UAAY,yBAG3B,cAAc,UAAW,MAAM,UAAW,SAC/C,GAAI,WACF,GAAI,SAAW,UAAY,EACzB,KAAM,IAAI,OACN,yGAGN,GAAI,CAAC,SAAW,UAAY,EAC1B,KAAM,IAAI,OACN,oFAIR,GAAI,YACF,KAAM,IAAI,OACN,yEAEN,WAAe,cAAc,UAAW,MAAM,UAAW,eAC7C,WAAW,MAAM,UAAW,oBAEnC,cAAc,aAAc,MAAM,UAAW,SACzC,wBAEL,cAAc,YAAa,MAAM,UAAW,4BAE5C,cAAc,OAAQ,MAAM,UAAW,wBAEvC,cAAc,iBAAkB,MAAM,UAAW,SAErD,MAAO,CACL,OACA,IAAA,MACA,WACA,UACA,QACA,SACA,eACA,gBAIG,eACH,4BAEE,OAAQ,MAAK,QACN,UACH,WACI,cAAc,SAAU,MAAM,UAAW,eACjC,cAAc,MAAO,MAAM,UAAW,oBAE7C,cAAc,aAAc,MAAM,UAAW,SACzC,uBAEL,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,OACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,SAAU,MAAM,UAAW,SACzC,OAAQ,MAAyB,WACjC,eAED,UACH,WACI,cAAc,UAAW,MAAM,UAAW,eAClC,WAAW,MAAM,UAAW,oBAEnC,cAAc,aAAc,MAAM,UAAW,SACzC,wBAEL,cAAc,YAAa,MAAM,UAAW,SAChD,MAAO,CAAO,OACV,cAAc,IAAK,MAAM,UAAW,SAEpC,cAAc,SAAU,MAAM,UAAW,SACzC,CAAC,OAAO,GAAI,OAAO,IAAK,MACxB,WAA+B,CAAC,UAAU,GAAI,UAAU,UAEzD,gBACH,IACE,OACA,UACA,WACA,UACA,QACA,SACA,eACA,gBACE,4BAA4B,MAAM,UAAW,SAEjD,MAAO,CAAO,kBAAM,OAAO,CACzB,EAAG,cAAc,IAAK,MAAM,UAAW,SAEvC,OAAQ,cAAc,SAAU,MAAM,UAAW,SAEjD,QAAS,CAAC,OAAO,GAAI,OAAO,IAC5B,IAAK,MACL,WACA,UAAW,CAAC,UAAU,GAAI,UAAU,IACpC,KAAM,QACN,WAAY,eACZ,uBAAwB,SACxB,sBAIC,8BACH,IACE,OACA,UACA,WACA,UACA,QACA,SACA,eACA,gBACE,4BAA4B,MAAM,UAAW,SAEjD,MAAO,CAAO,kBAAM,gBAAgB,CAClC,EAAG,cAAc,IAAK,MAAM,UAAW,SAEvC,OAAQ,cAAc,SAAU,MAAM,UAAW,SAEjD,QAAS,CAAC,OAAO,GAAI,OAAO,IAC5B,IAAK,MACL,WACA,UAAW,CAAC,UAAU,GAAI,UAAU,IACpC,KAAM,QACN,WAAY,eACZ,uBAAwB,SACxB,sBAGC,0BACA,mBACH,UAAc,cACI,cAAe,MAAM,UACrB,gBAGd,cAAc,UAAW,MAAM,UAAW,eAClC,WAAW,MAAM,UAAW,SACxC,MAAO,CAAO,gBACV,cAAc,IAAK,MAAM,UAAW,SAEpC,cAAc,SAAU,MAAM,UAAW,SACzC,MAAO,CAAC,OAAO,GAAI,OAAO,IAAK,YAEhC,4BACA,mBACH,WACI,cAAc,UAAW,MAAM,UAAW,eAClC,WAAW,MAAM,UAAW,mBAEpC,cAAc,YAAa,MAAM,UAAW,oBAE3C,cAAc,aAAc,MAAM,UAAW,SACzC,cAET,MAAO,CAAO,gBACV,cAAc,QAAS,MAAM,UAAW,SAExC,cAAc,SAAU,MAAM,UAAW,SACzC,CAAC,OAAO,GAAI,OAAO,IAAK,MACxB,WAA+B,CAAC,UAAU,GAAI,UAAU,UAEzD,UACH,WACI,cAAc,UAAW,MAAM,UAAW,eAClC,cAAc,MAAO,MAAM,UAAW,oBAE7C,cAAc,aAAc,MAAM,UAAW,SACzC,wBAEL,cAAc,YAAa,MAAM,UAAW,SAChD,MAAO,CAAO,OACV,cAAc,IAAK,MAAM,UAAW,SAEpC,cAAc,SAAU,MAAM,UAAW,SAEzC,CAAC,OAAO,GAAI,OAAO,GAAI,OAAO,IAAK,MACnC,WACA,CAAC,UAAU,GAAI,UAAU,GAAI,UAAU,UAExC,WACH,WACI,cAAc,UAAW,MAAM,UAAW,eAClC,cAAc,MAAO,MAAM,UAAW,oBAE9C,cAAc,aAAc,MAAM,UAAW,SAEjD,MAAO,CAAO,QACV,cAAc,IAAK,MAAM,UAAW,SAEpC,CAAC,WAAW,GAAI,WAAW,IAAK,CAAC,OAAO,GAAI,OAAO,IACnD,YAED,WACH,WACI,cAAc,UAAW,MAAM,UAAW,eAClC,cAAc,MAAO,MAAM,UAAW,oBAE9C,cAAc,aAAc,MAAM,UAAW,SAEjD,MAAO,CAAO,QACV,cAAc,IAAK,MAAM,UAAW,SAEpC,CAAC,WAAW,GAAI,WAAW,IAAK,CAAC,OAAO,GAAI,OAAO,IACnD,YAED,qBACH,WACI,cAAc,UAAW,MAAM,UAAW,eAClC,cAAc,MAAO,MAAM,UAAW,oBAE9C,cAAc,aAAc,MAAM,UAAW,6BAE7C,cAAc,sBAAuB,MAAM,UAAW,UAEnD,OAAQ,SAAiB,kBAC5B,cAAc,IAAK,MAAM,UAAW,SACpC,CAAC,WAAW,GAAI,WAAW,IAAK,CAAC,OAAO,GAAI,OAAO,IACnD,MAAyB,qBAC7B,MAAO,CAAC,OAAQ,aAEb,aACH,WACI,cAAc,UAAW,MAAM,UAAW,eAClC,cAAc,MAAO,MAAM,UAAW,oBAE9C,cAAc,aAAc,MAAM,UAAW,SAEjD,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,SACpC,CAAC,WAAW,GAAI,WAAW,GAAI,WAAW,IAC1C,CAAC,OAAO,GAAI,OAAO,GAAI,OAAO,IAAK,YAGpC,aACH,WACI,cAAc,UAAW,MAAM,UAAW,eAClC,cAAc,MAAO,MAAM,UAAW,oBAE9C,cAAc,aAAc,MAAM,UAAW,SAEjD,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,SACpC,CAAC,WAAW,GAAI,WAAW,GAAI,WAAW,IAC1C,CAAC,OAAO,GAAI,OAAO,GAAI,OAAO,IAAK,YAGpC,cACH,YACI,cAAc,UAAW,MAAM,UAAW,eAClC,cAAc,MAAO,MAAM,UAAW,mBAE9C,cAAc,YAAa,MAAM,UAAW,sBAG3B,QAAQ,eACT,QAAQ,kBAGL,UAAU,iBACX,UAAU,GAEhC,MAAO,CAAO,WACV,cAAc,IAAK,MAAM,UAAW,SAEpC,cAAc,SAAU,MAAM,UAAW,SACzC,CAAC,aAAc,aAAc,MAC7B,CAAC,eAAgB,eAAgB,iBAIrC,KAAM,WAAU,aAAa,MAAK,sCC1RxC,4BAEE,OAAQ,MAAK,QACN,QACH,UACI,cAAc,QAAS,MAAM,UAAW,eAExC,cAAc,QAAS,MAAM,UAAW,eAExC,cAAc,QAAS,MAAM,UAAW,SAC5C,MAAO,CAAO,KAAK,MAAO,MAAO,YAE9B,YACH,UACI,cAAc,QAAS,MAAM,UAAW,cAExC,cAAc,OAAQ,MAAM,UAAW,aAC/B,cAAc,MAAO,MAAM,UAAW,SAClD,MAAO,CAAO,SAAS,MAAO,KAAM,UAEjC,eACH,WACI,cAAc,SAAU,MAAM,UAAW,oBAEzC,cAAc,aAAc,MAAM,UAAW,cAE7C,cAAc,OAAQ,MAAM,UAAW,SAC3C,MAAO,CAAO,YAAY,OAAQ,WAAY,WAE3C,UACH,YACI,cAAc,UAAW,MAAM,UAAW,eAE1C,cAAc,QAAS,MAAM,UAAW,iBAExC,cAAc,UAAW,MAAM,UAAW,kBAE1C,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,OAAO,QAAS,MAAO,QAAS,eAE3C,OACH,MAAO,CAAO,MACV,cAAc,QAAS,MAAM,UAAW,SACxC,cAAc,QAAS,MAAM,UAAW,eAEzC,WACH,MAAO,CAAO,SACV,cAAc,IAAK,MAAM,UAAW,eAErC,gBACH,MAAO,CAAO,cAEV,cAAc,QAAS,MAAM,UAAW,SACxC,cAAc,SAAU,MAAM,UAAW,SACzC,cAAc,SAAU,MAAM,UAAW,SACzC,cAAc,QAAS,MAAM,UAAW,eAEzC,SACH,UACI,cAAc,QAAS,MAAM,UAAW,cAExC,cAAc,OAAQ,MAAM,UAAW,eAEvC,cAAc,OAAQ,MAAM,UAAW,SAC3C,MAAO,CAAO,MACV,MAAO,KAAM,MACb,cAAc,QAAS,MAAM,UAAW,eAGzC,mBACH,UACI,cAAc,QAAS,MAAM,UAAW,eAExC,cAAc,OAAQ,MAAM,UAAW,gBAEvC,cAAc,SAAU,MAAM,UAAW,cAEzC,cAAc,OAAQ,MAAM,UAAW,SAC3C,MAAO,CAAO,gBACV,MAAO,MAAM,OACb,cAAc,QAAS,MAAM,UAAW,SAExC,WAED,QACH,MAAO,CAAO,MACV,cAAc,QAAS,MAAM,UAAW,SACxC,cAAc,QAAS,MAAM,UAAW,eAEzC,YACH,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,mBAGxC,KAAM,WAAU,aAAa,MAAK,2BC/F5C,4CAEE,UAAc,cAAc,QAAS,MAAM,UAAW,gBACvC,cAAc,SAAU,MAAM,UAAW,uBAEpD,cAAc,gBAAiB,MAAM,UAAW,sBAEhD,cAAc,eAAgB,MAAM,UAAW,wBAE/C,cAAc,iBAAkB,MAAM,UAAW,sBAEjD,cAAc,eAAgB,MAAM,UAAW,SAEnD,MAAO,CACL,MACA,OACA,cACA,aACA,eACA,cAIG,eAA2C,iCAGhD,OAAQ,MAAK,QACN,uBACH,IACE,MACA,OACA,cACA,aACA,eACA,cACE,UAAU,MAAM,UAAW,gBAEhB,KAAY,OAAM,gCAC7B,MAAmB,OAAoB,cAAe,aACtD,eAAgB,cAEpB,MAAO,CAAC,OAAO,gBAAiB,OAAO,oBAEpC,uBACH,IAAO,MAAO,OAAQ,cAAe,aAAc,gBAC/C,UAAU,MAAM,UAAW,4BAG3B,cAAc,qBAAsB,MAAM,UAAW,gBAG1C,KAAY,OAAM,6BAC7B,MAAmB,OAAoB,cAAe,aACtD,eAAgB,oBAEpB,MAAO,CAAC,OAAO,gBAAiB,OAAO,kBAEpC,0BACA,uBACH,IAAO,MAAO,OAAQ,cAAe,aAAc,gBAC/C,UAAU,MAAM,UAAW,SAE/B,MAAO,CAAC,KAAY,OAAM,uBACtB,MAAmB,OAAoB,cAAe,aACtD,qBAED,SACH,cAAwB,KACnB,cAAc,YAAa,MAAM,UAAW,SAC7C,eACW,CAAC,KAAY,YAAW,YACvC,MAAA,WAAU,UACH,WAEJ,WACH,MAAa,gBACT,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,kBAGxC,KAAM,WAAU,aAAa,MAAK,sCC/EpC,4BAEM,OAAQ,MAAK,QACN,UACH,MAAU,cAAc,IAAK,MAAM,UAAW,WACpC,cAAc,IAAK,MAAM,UAAW,gBAE1C,cAAc,SAAU,MAAM,UAAW,gBACxB,KAAK,EAAG,EAAG,QAChC,MAAO,CAAC,OAAO,OAAQ,OAAO,aAE3B,UACH,MAAU,cAAc,IAAK,MAAM,UAAW,gBACzB,OAAO,GAC5B,MAAO,CAAC,OAAO,OAAQ,OAAO,aAE3B,YACH,MAAU,cAAc,IAAK,MAAM,UAAW,cAE1C,cAAc,OAAQ,MAAM,UAAW,gBACtB,OAAO,EAAG,MAC/B,MAAO,CAAC,OAAO,OAAQ,OAAO,iBAG9B,KAAM,WAAU,aAAa,MAAK,sCCxB5C,4BAEE,OAAQ,MAAK,QACN,QACH,MAAO,WAAU,MAAK,UAEnB,yBACH,QACI,cAAc,UAAW,MAAM,UAAW,SAC9C,MAAO,CAAC,UAAU,MAAK,KAAM,UAAW,UAAY,SACjD,cACH,MAAO,CAAC,UAAU,MAAK,KAAM,UAAW,cACrC,eACA,mBACA,2BACH,UAAa,cAAc,IAAK,MAAM,UAAW,SACjD,MAAO,CAAC,YAAY,YAEjB,YACH,MAAQ,eAAc,IAAK,MAAM,UAAW,SACvC,IAAI,GAAe,YAAY,QACjC,WACH,aACK,cAAc,IAAK,MAAM,UAAW,SACzC,MAAO,CAAC,YAAY,eACjB,QACH,MAAO,CAAO,SACT,cAAc,IAAK,MAAM,UAAW,SAAoB,MACzD,cACD,SACH,MAAQ,eAAc,IAAK,MAAM,UAAW,SACvC,IAAI,GAAqB,SAAS,EAAE,YACtC,OACH,MAAO,CAAO,OACT,cAAc,IAAK,MAAM,UAAW,SAAoB,KACzD,cACD,OACH,MAAO,CAAO,OACT,cAAc,IAAK,MAAM,UAAW,SAAoB,KACzD,cACD,OACH,MAAO,CAAO,OAAO,QAClB,QACH,WAAc,cAAc,IAAK,MAAM,UAAW,cAE9C,cAAc,OAAQ,MAAM,UAAW,iBAEvC,cAAc,UAAW,MAAM,UAAW,mBAE1C,cAAc,YAAa,MAAM,UAAW,SAChD,QAAQ,KACJ,kGAEJ,QAAQ,IAAI,SACZ,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,QAAQ,IAAI,MAAM,UAAU,MAAM,KAAK,KAAK,GAAG,YAC9B,MAAM,EAAG,YAE5B,MAAO,CAAC,gBAGR,KAAM,WAAU,aAAa,MAAK,qCCzF5C,MAqCE,iCAAqB,KAAA,SAAA,SAA6B,KAAA,WAAA,WAChD,KAAK,OAAS,OAAO,GAErB,KAAK,UAAY,GAAI,KAErB,KAAK,KAAK,WAfR,MACF,MAAO,MAAK,OAAO,GAoBrB,gBACE,KAAK,UAAU,QAAQ,OAAS,MAAM,WACtC,KAAK,UAAU,QACf,KAAK,OAAO,UAMd,OACE,MAAO,MAAK,UAAU,UAQlB,qBACJ,KAAK,uBAAuB,KAAM,QAIlC,UAAc,KAAM,MAAK,OAGzB,MAAA,MAAK,UAAU,QAAQ,OAAS,MAAM,WACtC,KAAK,UAAU,QAER,KAAK,KACV,YAAgB,QAAQ,mBAEL,MAAM,oBACJ,QAAQ,OAE7B,aAAK,OACD,aAAe,aACf,IAAM,kDACC,uCAAuC,0BAGlD,UAAa,EAAG,EAAI,WAAY,KAC9B,QAAY,MAAM,SACJ,QAAQ,GAEtB,KAAK,OACL,KAAK,UAAU,IAAI,IAAK,OAG1B,MAAO,MAAK,cAmBV,yBACJ,KAAK,uBAAuB,KAAM,cAElC,UAAc,KAAM,MAAK,OAEzB,MAAO,MAAK,KACV,WAAyB,GAEzB,UAAa,EAAG,EAAI,MAAM,OAAQ,KAChC,QAAY,MAAM,SAEJ,KAAK,gBAAgB,IAAK,cACxC,OAAO,KAAK,OAGd,MAAO,OAAM,UAKT,kCACN,WAAe,KAAK,UAAU,IAAI,KAElC,MAAO,SAAU,KAAO,OAAS,aAG3B,kCACN,GAAI,IAAI,QAAU,KAAK,SACrB,KAAM,IAAI,OACN,oBAAoB,KAAK,qBACtB,IAAI,SAGb,GAAI,MAAM,QAAU,KAAK,WACvB,KAAM,IAAI,OACN,sBAAsB,KAAK,uBACxB,MAAM,sBC7H+B,iDAGhD,OAAQ,MAAK,QACN,gBACA,eACH,aACI,cAAc,WAAY,MAAM,UAAW,oBAE3C,cAAc,aAAc,MAAM,UAAW,oBAE/B,GAAI,WAAU,SAAU,YAC1C,MAAA,iBAAgB,aAAa,MAAK,KAAM,YACjC,CAAC,WAAU,YAEf,wBACA,uBACH,WAAe,cACI,cAAe,MAAM,UAAW,QAChC,sBACN,cAAc,OAAQ,MAAM,UAAW,gBAEhD,cAAc,SAAU,MAAM,UAAW,oBAE3B,gBAAgB,iBAAiB,OAAO,IAE1D,MAAO,CAAC,KAAM,YAAU,OAAO,KAAM,aAElC,sBACA,qBACH,WAAe,cACI,cAAe,MAAM,UAAW,QAChC,sBACN,cAAc,OAAQ,MAAM,UAAW,sBAEhD,cAAc,eAAgB,MAAM,UAAW,oBAEjC,gBAAgB,iBAAiB,OAAO,IAC1D,MAAO,CAAC,KAAM,YAAU,KAAK,KAAM,uBAGnC,KAAM,WAAU,aAAa,MAAK,uCCxCpC,4BAEE,OAAQ,MAAK,QACN,kBACH,WACI,cAAc,SAAU,MAAM,UAAW,cAEzC,cAAc,OAAQ,MAAM,UAAW,sBAEvC,cAAc,eAAgB,MAAM,UAAW,0BAG/C,cAAc,mBAAoB,MAAM,UAAW,SAEvD,MAAO,CAAO,MAAM,eAChB,OAA+B,CAAC,KAAK,GAAI,KAAK,IAAK,aACnD,uBAED,yBACH,WACI,cAAc,SAAU,MAAM,UAAW,cAEzC,cAAc,OAAQ,MAAM,UAAW,sBAEvC,cAAc,eAAgB,MAAM,UAAW,0BAG/C,cAAc,mBAAoB,MAAM,UAAW,SAEvD,MAAO,CAAO,MAAM,sBAChB,OAA+B,CAAC,KAAK,GAAI,KAAK,IAAK,aACnD,uBAED,iBACH,WACI,cAAc,QAAS,MAAM,UAAW,eAExC,cAAc,QAAS,MAAM,UAAW,gBAExC,cAAc,SAAU,MAAM,UAAW,kBAEzC,cAAc,WAAY,MAAM,UAAW,gBAE3C,cAAc,SAAU,MAAM,UAAW,4BAEzC,cAAc,qBAAsB,MAAM,UAAW,SAEzD,MAAO,CAAO,MAAM,cAChB,OAAmB,MAAmB,OACtC,SAA8B,OAC9B,6BAGJ,KAAM,WAAU,aAAa,MAAK,uCCrDxC,4BAEE,OAAQ,MAAK,QACN,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,WACH,MAAO,CAAO,SACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,UACH,MAAO,CAAO,QACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,eACH,MAAO,CAAO,aACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,YACH,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,aACH,MAAO,CAAO,WACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,aACH,MAAO,CAAO,WACV,cAAc,IAAK,MAAM,UAAW,eAErC,YACH,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,eAErC,aACA,WACH,MAAO,CAAO,MACV,cAAc,YAAa,MAAM,UAAW,SAC5C,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,mBAGxC,KAAM,WAAU,aAAa,MAAK,uCCvDxC,4BAEE,OAAQ,MAAK,QACN,kBACA,oBACA,SACH,MAAO,CAAO,OACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,aAAc,MAAM,UAAW,SAC7C,cAAc,aAAc,MAAM,UAAW,eAG9C,YACH,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,OAAQ,MAAM,UAAW,eAExC,eACH,4BACK,cAAc,WAAY,MAAM,UAAW,mBAE9B,UAAY,kBACd,iBAAmB,gBAG9B,cAAc,UAAW,MAAM,UAAW,wBAE3C,cAAc,iBAAkB,MAAM,UAAW,SAGrD,GAAI,WACF,GAAI,SAAW,UAAY,EACzB,KAAM,IAAI,OACN,sFAGN,GAAI,CAAC,SAAW,UAAY,EAC1B,KAAM,IAAI,OACN,iEAGR,sBACI,cAAc,OAAQ,MAAM,UAAW,SAC3C,MAAO,CAAO,kBAAM,OAAO,CACzB,EAAG,cAAc,IAAK,MAAM,UAAW,SACvC,EAAG,cAAc,IAAK,MAAM,UAAW,SACvC,WAAY,cAAc,aAAc,MAAM,UAAW,SAEzD,WAAY,cAAc,aAAc,MAAM,UAAW,SAEzD,KAAM,QACN,WAAY,eACZ,uBAAwB,SACxB,0BAIF,KAAM,WAAU,aAAa,MAAK,uCC1DxC,4BAEE,OAAQ,MAAK,QACN,qBACA,mBACH,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,OAAQ,MAAM,UAAW,SACvC,cAAc,WAAY,MAAM,UAAW,SAC3C,cAAc,SAAU,MAAM,UAAW,SACzC,cAAc,QAAS,MAAM,UAAW,SACxC,cAAc,UAAW,MAAM,UAAW,eAE3C,mBACH,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,OAAQ,MAAM,UAAW,SACvC,cAAc,WAAY,MAAM,UAAW,SAC3C,cAAc,SAAU,MAAM,UAAW,SACzC,cAAc,QAAS,MAAM,UAAW,SACxC,cAAc,UAAW,MAAM,UAAW,eAE3C,MACH,MAAO,CAAO,2BACV,cAAc,IAAK,MAAM,UAAW,SAEpC,cAAc,SAAU,MAAM,UAAW,SACzC,cAAc,OAAQ,MAAM,UAAW,SACvC,cAAc,QAAS,MAAM,UAAW,SACxC,cAAc,OAAQ,MAAM,UAAW,eAExC,UACH,MAAO,CAAO,QACV,cAAc,IAAK,MAAM,UAAW,eAErC,aACH,MAAO,CAAO,WACV,cAAc,IAAK,MAAM,UAAW,eAErC,gBACH,MAAO,CAAO,cACV,cAAc,gBAAiB,MAAM,UAAW,SAEhD,cAAc,cAAe,MAAM,UAAW,SAC9C,cAAc,eAAgB,MAAM,UAAW,SAE/C,cAAc,eAAgB,MAAM,UAAW,mBAInD,KAAM,WAAU,aAAa,MAAK,uCClDxC,4BAEE,OAAQ,MAAK,QACN,OACH,SACI,cAAc,OAAQ,MAAM,UAAW,kBAEvC,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SAAoB,KACxD,eAED,QACH,SACI,cAAc,OAAQ,MAAM,UAAW,kBAEvC,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,SAAoB,KACxD,eAED,OACH,SACI,cAAc,OAAQ,MAAM,UAAW,kBAEvC,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SAAoB,KACxD,eAED,OACH,SACI,cAAc,OAAQ,MAAM,UAAW,kBAEvC,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,SAAoB,KACxD,eAED,OACH,SACI,cAAc,OAAQ,MAAM,UAAW,kBAEvC,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SAAoB,KACxD,eAED,OACH,SACI,cAAc,OAAQ,MAAM,UAAW,kBAEvC,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SAAoB,KACxD,eAED,UACH,SACI,cAAc,OAAQ,MAAM,UAAW,SAC3C,MAAO,CAAO,OACV,cAAc,IAAK,MAAM,UAAW,SAAoB,WAEzD,UACH,SACI,cAAc,OAAQ,MAAM,UAAW,SAC3C,MAAO,CAAO,OACV,cAAc,IAAK,MAAM,UAAW,SAAoB,WAEzD,QACH,SACI,cAAc,OAAQ,MAAM,UAAW,kBAEvC,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,SAAoB,KACxD,eAED,UACH,SACI,cAAc,OAAQ,MAAM,UAAW,mBAEvC,cAAc,YAAa,MAAM,UAAW,mBAE5C,cAAc,UAAW,MAAM,UAAW,SAC9C,MAAO,CAAO,OACV,cAAc,IAAK,MAAM,UAAW,SAAoB,KACxD,UAAW,gBAEZ,WACH,MAAU,cAAc,IAAK,MAAM,UAAW,iBAE1C,cAAc,UAAW,MAAM,UAAW,cAE1C,cAAc,OAAQ,MAAM,UAAW,SAE3C,MAAO,CAAO,SAAS,EAAG,QAAS,WAChC,iBACH,OAAU,cAAc,IAAK,MAAM,UAAW,kBAG1C,cAAc,UAAW,MAAM,UAAW,eAG1C,cAAc,OAAQ,MAAM,UAAW,sBAGvC,cAAc,eAAgB,MAAM,UAAW,SAGnD,MAAO,CAAO,cAAc,GAAG,SAAS,MAAM,uBAG9C,KAAM,WAAU,aAAa,MAAK,uCCjHxC,4BAEE,OAAQ,MAAK,QACN,eACA,UACH,MAAU,cAAc,IAAK,MAAM,UAAW,cAE1C,cAAc,OAAQ,MAAM,UAAW,gBAEvC,cAAc,UAAW,MAAM,UAAW,SAC9C,MAAA,QAAS,OAAO,MAAM,EAAG,GAClB,CAAO,OAAO,OAAQ,WAE1B,UACH,WAAc,cAAc,IAAK,MAAM,UAAW,iBAE9C,cAAc,UAAW,MAAM,UAAW,SAC9C,MAAO,CAAO,OAAO,OAAa,KAAK,QAAS,SAAU,QAEvD,YACH,SACI,cAAc,OAAQ,MAAM,UAAW,mBAEvC,cAAc,YAAa,MAAM,UAAW,gBAClC,cAAc,IAAK,MAAM,UAAW,iBAE9C,cAAc,UAAW,MAAM,UAAW,SAC9C,MAAO,CAAO,OACV,OAAa,KAAK,QAAS,SAAU,KAAM,gBAE5C,WACH,SACI,cAAc,OAAQ,MAAM,UAAW,cAC9B,GACb,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC3B,KAAK,IACP,KAAK,KAAK,GAGd,WAAc,cAAc,IAAK,MAAM,UAAW,SAClD,MAAO,CAAO,QAAQ,OAAO,WAE1B,aACH,SACI,cAAc,OAAQ,MAAM,UAAW,gBAC7B,cAAc,IAAK,MAAM,UAAW,SAClD,MAAO,CAAO,QAAQ,OAAO,WAE1B,SAEH,UAAc,cAAc,QAAS,MAAM,UAAW,cAEzC,cAAc,OAAQ,MAAM,UAAW,SACpD,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,SAAoB,MACxD,WAED,gBACH,UACI,cAAc,QAAS,MAAM,UAAW,aAExC,cAAc,MAAO,MAAM,UAAW,iBAEtC,cAAc,UAAW,MAAM,UAAW,mBAE1C,cAAc,YAAa,MAAM,UAAW,iBAE5C,cAAc,UAAW,MAAM,UAAW,sBAE1C,cAAc,eAAgB,MAAM,UAAW,qBAE/C,cAAc,cAAe,MAAM,UAAW,wBAE9C,cAAc,iBAAkB,MAAM,UAAW,mBAEtC,cAAc,IAAK,MAAM,UAAW,SAEnD,MAAO,CAAO,aACV,UAAQ,MAAO,IAAK,QAAS,UAAW,QAAS,aACjD,YAAa,qBAEd,OACH,MAAO,MAAK,KACV,SACI,cAAc,OAAQ,MAAM,UAAW,iBAEvC,cAAc,UAAW,MAAM,UAAW,eAGhC,QAAQ,GAAG,oBACG,QAAQ,QAAQ,IAAI,aACjC,QAAQ,IAAI,YACzB,cAAkB,aAAK,YAAY,UAAO,MAAO,OACjD,GAAI,CAAC,WACD,CAAC,aAAK,YACI,QAAQ,WAAQ,MAAO,eACnC,KAAM,IAAI,OAAM,0CAElB,MAAO,WAAY,UAAe,QAAQ,UAAQ,SAEpD,MAAO,CAAO,MAAM,OAAQ,aAG3B,UACH,SACI,cAAc,OAAQ,MAAM,UAAW,mBAEvC,cAAc,SAAU,MAAM,UAAW,SAC7C,MAAa,SAAQ,UAAQ,UAE1B,QACH,SACI,cAAc,OAAQ,MAAM,UAAW,SAC3C,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,SAAoB,WAEzD,YACA,UACH,SACI,cAAc,OAAQ,MAAM,UAAW,yBAEvC,cAAc,kBAAmB,MAAM,UAAW,mBAGvC,cAAc,IAAK,MAAM,UAAW,SAEnD,MAAa,OAAM,UAAQ,gBAAiB,UAEzC,aACH,YACI,cAAc,UAAW,MAAM,UAAW,gBAE1C,cAAc,SAAU,MAAM,UAAW,eAEzC,cAAc,QAAS,MAAM,UAAW,SAC5C,MAAO,CAAO,UAAU,QAAS,OAAQ,YAEtC,YACH,MAAU,cAAc,IAAK,MAAM,UAAW,iBAE1C,cAAc,UAAW,MAAM,UAAW,SAC9C,MAAO,CAAO,SAAS,EAAG,cAEvB,iBACH,YACI,cAAc,gBAAiB,MAAM,UAAW,eAGhD,cAAc,cAAe,MAAM,UAAW,sBAG9C,cAAc,eAAgB,MAAM,UAAW,sBAE/C,cAAc,eAAgB,MAAM,UAAW,SACnD,MAAO,CAAO,cACV,QAAS,aAAc,MACvB,aAAa,QAAU,aAAa,MAChC,aACM,KAAK,aAAc,aAAa,iBAG9C,KAAM,WAAU,aAAa,MAAK,uCCjKxC,4BAEM,OAAQ,MAAK,QACN,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eAErC,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,eAErC,QACH,MAAO,CAAO,MACV,cAAc,IAAK,MAAM,UAAW,mBAGxC,KAAM,WAAU,aAAa,MAAK,uCCpB5C,4BAEE,OAAQ,MAAK,QACN,OACH,MAAO,CAAO,KACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,QAAS,MAAM,UAAW,eAGzC,cACH,SACI,cAAc,OAAQ,MAAM,UAAW,SAC3C,MAAO,CAAO,WACV,cAAc,IAAK,MAAM,UAAW,SAAoB,WAEzD,WACH,SACI,cAAc,OAAQ,MAAM,UAAW,SAC3C,MAAO,CAAO,QACV,cAAc,IAAK,MAAM,UAAW,SAAoB,WAGzD,UACH,MAAO,CAAO,QACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,QAAS,MAAM,UAAW,eAEzC,YACH,MAAO,CAAO,UACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,UAAW,MAAM,UAAW,SAE1C,cAAc,OAAQ,MAAM,UAAW,eAGxC,YACA,MACH,MAAO,CAAO,IACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,UAAW,MAAM,UAAW,SAE1C,cAAc,gBAAiB,MAAM,UAAW,eAGjD,kBACH,eACI,cAAc,aAAc,MAAM,UAAW,kBAE7C,cAAc,WAAY,MAAM,UAAW,SAC/C,MAAO,CAAO,eACV,cAAc,IAAK,MAAM,UAAW,SACpC,WAAY,eAEb,kBACH,eACI,cAAc,aAAc,MAAM,UAAW,eAE7C,cAAc,QAAS,MAAM,UAAW,SAC5C,MAAO,CAAO,eACV,cAAc,IAAK,MAAM,UAAW,SACpC,WAAY,YAEb,gBACH,cACI,cAAc,YAAa,MAAM,UAAW,oBAE3C,cAAc,aAAc,MAAM,UAAW,SACrC,cAEb,MAAO,CAAO,aACV,cAAc,IAAK,MAAM,UAAW,SACpC,UAAW,iBAEZ,cACH,MAAO,CAAO,YACV,cAAc,IAAK,MAAM,UAAW,SACpC,cAAc,QAAS,MAAM,UAAW,mBAG5C,KAAM,WAAU,aAAa,MAAK,2BCxDtC,8DAGJ,UACK,gCACC,OAAQ,OAAK,cACN,aACH,MAAW,MACP,IAAiB,UAAU,OAAM,WAAW,eAC7C,aACH,MAAW,MACP,IAAgB,WAAU,OAAM,WAAW,eAC5C,UACH,MAAe,YAAU,OAAM,WAAW,cACvC,cACH,MAAW,MACP,IAAkB,WAAU,OAAM,WAAW,eAC9C,WACH,MAAW,MAAK,IAAe,WAAU,OAAM,WAAW,eACvD,UACH,MAAe,YAAU,OAAM,WAAW,cACvC,aACH,MAAW,MACP,IAAiB,WAAU,OAAM,WAAW,eAC7C,QACH,MAAW,MAAK,IAAY,YAAU,OAAM,WAAW,eACpD,QACH,MAAW,MAAK,IAAY,WAAU,OAAM,WAAW,eACpD,UACH,MAAW,MAAK,IAAc,YAAU,OAAM,WAAW,eACtD,WACH,MAAW,MAAK,IAAe,YAAU,OAAM,WAAW,eACvD,gBACH,MAAW,MACP,IAAoB,YAAU,OAAM,WAAW,eAChD,YACH,MAAW,MACP,IAAgB,YAAU,OAAM,WAAW,eAC5C,aACH,MAAW,MACP,IAAgB,YAAU,OAAM,WAAW,eAC5C,WACH,MAAW,MAAK,IAAe,YAAU,OAAM,WAAW,eACvD,iBACH,MAAW,MACP,IAAqB,YAAU,OAAM,WAAW,eACjD,aACH,MAAiB,YACb,OAAM,WAAW,SAAS,qBAC3B,SACH,aAAiB,gBAAgB,OAAK,IACtC,GAAI,UAAY,SAAS,eACvB,MAAO,UAAS,eACZ,GAAI,eAAc,OAAM,WAAW,WAEvC,KAAM,WAAU,aAAa,OAAK,iCAGpC,KAAM,WACF,eAAe,OAAK,4IAI3B,MAAM,UAAW,SACxB,MAAQ,cAAK,UAAU,OACb,MAA8B,KAAK,MAAU,GAAG,OAAO,OAE1D,GAAG,OAAO,OCvFnB,qBAAA,MAeE,sBAC0C,kBACI,iBACF,eACkB,IAHjD,KAAA,UAAA,UACA,KAAA,eAAA,eACA,KAAA,cAAA,cACA,KAAA,YAAA,YATL,KAAA,YAAc,CAAC,GAAI,EAAG,UAAW,GAAI,YAAa,GAClD,KAAA,SAAmC,CAAC,KAAK,aACzC,KAAA,OAAS,EAQf,KAAK,4BAGC,uBACN,MAAO,CAAC,GAAI,UAAW,YAAa,MAQlC,2BACE,KAAK,WAAa,WACpB,MAAK,SAAW,UAChB,KAAK,gCAIL,kBACF,MAAO,MAAK,YAMV,oBACF,MAAO,MAAK,mBAAmB,MAO7B,qBACF,MAAO,MAAK,mBAGN,4BACN,UAAc,GACd,UAAa,EAAG,EAAI,KAAK,SAAS,OAAS,EAAG,KAC5C,cAAiB,KAAK,SAAS,MAAM,EAAG,KAAK,SAAS,OAAS,GAC/D,MAAM,KAAK,KAAK,qBAAqB,YAEvC,MAAM,KAAK,IACX,KAAK,mBAAqB,MAGpB,gCACN,MAAO,WACH,UACK,IACG,SAAY,QAAQ,KAAO,GAAK,QAAQ,cAAgB,EACpD,GACA,GAAG,QAAQ,aAAa,QAAQ,eACvC,KAAK,KACV,GAON,oBACM,KAAK,UACP,MAAK,SACL,KAAK,SAAW,KAAK,SAAS,QAC9B,KAAK,SAAS,KAAK,KAAK,SAAS,KAAK,OAAQ,UAC9C,KAAK,mBAAmB,QAAQ,KAAK,qBAAqB,KAAK,YAQnE,YACE,GAAI,KAAK,UAAY,KAAK,SAAS,OAAS,EAC1C,KAAK,SAAW,KAAK,SAAS,QAC9B,KAAK,SAAS,OAAO,IACrB,KAAK,kBAAkB,YAEvB,MAAM,IAAI,OAAM,2CAQpB,gBACE,GAAI,KAAK,UAAY,KAAK,SAAS,OAAS,GAC1C,KAAK,SAAW,KAAK,SAAS,QAC9B,KAAK,SACL,YACI,OAAO,OAAO,GAAI,KAAK,SAAS,KAAK,SAAS,OAAS,IAC3D,QAAQ,aAAe,EACvB,QAAQ,GAAK,KAAK,OAClB,KAAK,SAAS,OAAO,GAAI,EAAG,SAC5B,KAAK,mBAAmB,OACpB,EAAG,EAAG,KAAK,qBAAqB,KAAK,eAEzC,MAAM,IAAI,OAAM,yDAIpB,gBACE,MAAO,MAAK,UAAU,MAGxB,4BACE,KAAK,eAAe,YAAY,IAAM,YAGxC,mBACE,MAAO,MAAK,eAAe,IAG7B,0BACE,KAAK,cAAc,WAAW,IAAM,WAGtC,kBACE,MAAO,MAAK,cAAc,IAG5B,iBACE,cAAkB,MAAK,eACrB,KAAK,eAAe,KAAK,cAAc,SAGzC,cAAkB,MAAK,cACrB,KAAK,cAAc,KAAK,cAAc,WC/ItC,kEAGJ,cAAkB,GAAI,mBACU,eACR,gBACG,UAId,GAAI,oBAEb,OAAO,KAAK,QAAQ,IAAI,MAAQ,cAAc,MAAM,kBAE1B,GAC1B,WAAa,MACf,eAAgB,UAAU,IAAI,OAAQ,cAAc,MAAK,MAAM,KAGjE,aAAiB,CAAC,GAAG,SACrB,KAAO,SAAS,OAAS,IACvB,UAAa,SAAS,MAWtB,GAVI,eAAc,QAAS,eAAe,QAAS,YAAY,SACzD,aAAe,MACjB,aAAc,MACd,WAAa,YAAY,SAAS,IAAI,OAAS,MAAM,MACnC,OAAO,MAAQ,UAAU,IAAI,QAGnD,UAAU,IAAI,MAAK,MAGf,UAAU,MAAK,OAAS,KAC1B,SAGF,GAAI,eAAe,QAAQ,MAAK,QAAU,GACxC,SAGF,GAAI,cAAc,QAAQ,MAAK,QAAU,GACvC,SAEF,GAAI,MAAK,OAAO,SAAW,GACzB,cAAc,KAAK,MAAK,MACxB,SAEF,MAAK,OAAO,QAAQ,SAElB,GAAI,KAAK,IAAI,OAAM,MACjB,OAEF,KAAK,IAAI,OAAM,MACf,SAAS,KAAK,UAGlB,MAAO,CAAC,OAAQ,QAAS,UAAW,cAAe,YAAa,YAO5D,oEAGJ,IAAO,UAAW,QAAU,uBACH,cACN,OAAO,KAAK,QACP,IAAI,MAAQ,cAAc,MAAM,IAChC,IAAI,MAAQ,OAAM,MAAM,iBAC9B,OAAM,UAExB,WAAW,QAAQ,SACb,UAAU,IAAI,OAAM,OACtB,SAAS,KAAK,UAGlB,OAAM,QAAQ,QAAQ,SAChB,UAAU,IAAI,OAAO,OACvB,SAAS,KAAK,UAGd,WAAa,MACf,UAAU,QAAQ,QACZ,UAAU,IAAI,MAAK,OACrB,SAAS,KAAK,SAIpB,SAAa,GAAI,kBACY,GAC7B,KAAO,SAAS,OAAS,IACvB,UAAa,SAAS,MACtB,KAAK,IAAI,MAAK,MACT,UAAU,MAAK,OAClB,aAAa,KAAK,OAEpB,MAAK,SAAS,QAAQ,QAChB,CAAC,KAAK,IAAI,MAAM,OAAS,UAAU,IAAI,MAAM,OAC7C,MAAM,OAAO,MAAM,QAAS,KAAK,IAAI,OAAM,QAC7C,SAAS,KAAK,SAIpB,MAAO,cAGT,qBAAyB,CACvB,SAAU,QAAS,QAAS,OAAQ,gBAAiB,cACrD,iBAAkB,KAAM,2BAEA,CACxB,sBAAuB,sBAAuB,sBAAuB,wBAEhD,CACrB,YAAa,cAAe,oBAAqB,sBACjD,kBAAmB,qBAGf,8BACJ,MAAO,kBAAiB,QAAQ,MAAK,KAAO,EAGxC,+BACJ,MAAO,mBAAkB,QAAQ,MAAK,KAAO,EAGzC,4BACJ,MAAO,gBAAe,QAAQ,MAAK,KAAO,ECzK5C,kBAAA,MAkIE,2BAAoB,KAAA,MAAA,OAAsB,KAAA,OAAA,OA9FlC,KAAA,YAAmC,GAAI,KACvC,KAAA,WAA8B,GAM9B,KAAA,UAAY,IACZ,KAAA,WAAqC,GACrC,KAAA,qBAA0D,GAsFhE,KAAK,SAAW,OAAM,QACtB,KAAK,QAAU,OAAM,OACrB,KAAK,WAAa,OAAM,UACxB,KAAK,WAAa,OAAM,UACxB,KAAK,WAAa,OAAM,UAEpB,OAAM,WAAa,MACrB,OAAO,KAAK,OAAM,WAAW,QAAQ,OACnC,KAAK,qBAAqB,MACtB,GAAI,eAAc,OAAM,UAAU,MAAO,WA5F/C,aACF,MAAO,MAAK,OAAS,KAAK,OAAO,UAAY,KAAK,cAGhD,uBACF,MAAO,MAAK,OAAS,KAAK,OAAO,oBACZ,KAAK,wBAGxB,aACF,MAAO,MAAK,OAAS,KAAK,OAAO,UAAY,KAAK,cAGhD,sBACF,cAAkB,OAAO,KAAK,WAAW,IACrC,KAAO,UAAU,KAAK,IAAI,WAAU,UAAO,KAC/C,KAAK,WAAa,GAAG,OAAO,GAAG,WAC/B,KAAK,WAAa,aAOhB,kCACF,KAAK,iBAAmB,mBAGtB,UACF,MAAO,MAAK,QAAQ,IAAI,OACf,EACL,KAAM,MAAK,KACX,MAAO,MAAK,WAAW,MACnB,MAAK,WAAW,MAAS,MACzB,OACJ,MAAO,MAAK,WAAW,MACnB,MAAK,WAAW,MAAS,MACzB,aAKN,WACF,MAAO,MAAK,SAAS,IAAI,OAChB,EACL,KAAM,MAAK,KACX,MAAO,MAAK,WAAW,MACnB,MAAK,WAAW,MAAS,MACzB,OACJ,MAAO,MAAK,WAAW,MACnB,MAAK,WAAW,MAAS,MACzB,aAKN,cACF,MAAO,MAAK,QAAQ,IAAI,OAAQ,MAAK,cAAgB,MAAK,SAGxD,eACF,MAAO,MAAK,SAAS,IAAI,QACvB,SAAa,MAAK,cAAgB,MAAK,KACvC,MAAO,OAAK,cAAiB,GAAG,QAAQ,MAAK,gBAAmB,UAIhE,aACF,MAAO,QAAO,KAAK,KAAK,YAAY,OAAO,WACzC,KAAI,KAAO,KAAK,WAAW,KAAK,UACzB,KACN,IA0BG,kCACN,iBAAqB,OAAO,IAAI,OAAQ,MAAK,MAAM,qBAC7B,QAAQ,IAAI,OAAQ,MAAK,MAAM,OACrD,MAAO,cAAa,KAAK,KAAK,WAAa,KACvC,cAAc,KAAK,KAAK,WAOtB,wBACN,kBACI,qBAAqB,OAAQ,QAAS,KAAK,UAAW,KAAK,aACxD,cAAe,YAAa,YAAc,cACjD,GAAI,aAAe,KACjB,KAAM,IAAI,OACN,qCAAqC,YAAY,oCAC9B,YAAY,8GAEK,eAG1C,GAAI,cAAc,OAAS,GACzB,aAAiB,QAAQ,IAAI,GAAK,EAAE,cACpB,OAAO,KAAK,QAC5B,KAAM,IAAI,OACN,+BAA+B,uCAC3B,4CAA4C,kBAGtD,MAAO,4BACH,KAAK,MAAO,KAAK,UAAW,eAYlC,wBACE,OAAS,KAAK,UAAU,QACxB,UAAc,OAAO,KAAK,QAAQ,OAClC,KAAK,YAAY,QACjB,KAAK,uBAAuB,QAC5B,QAAU,KAAK,WAAW,SAC1B,KAAK,aAAa,SAClB,eACI,MAAM,IAAI,MAAQ,KAAK,MAAM,MAAM,cAAc,MAAM,qBACnC,QAAQ,IAAI,MAAQ,cAAc,MAAM,gBAC9C,gBAAgB,IAAI,MAAQ,KAAK,MAAM,MAAM,OAG3D,YAAY,SAAW,GACzB,aAAc,KAAK,UAGrB,mBAAuB,KAAK,kBAAkB,WAAY,0BAGvC,KAAK,YAAY,IAAI,gBACpC,cAAgB,MAClB,cAAe,KAAK,QAAQ,OAAQ,aACpC,KAAK,YAAY,IAAI,eAAgB,eAGvC,mBAAuC,iBACF,GAErC,MAAO,MAAK,KACV,YAAgB,GAAI,kBAChB,KAAK,UAAW,eAAgB,cAChC,KAAK,gCACO,OAAA,OAAA,GAAwB,KAAK,WAE7C,OAAO,KAAK,QAAQ,QAAQ,OAC1B,oBAA0B,cAAc,cACd,GAC1B,QAAQ,OAAS,OAAO,MACxB,WAAW,UAAY,UAGzB,kBAAsB,KAAK,mBAAmB,4CACmB,GACjE,UAAa,EAAG,EAAI,aAAa,OAAQ,KACvC,UAAa,aAAa,GAC1B,GAAI,CAAC,WAAW,MAAK,OACnB,YACI,YAAU,MAAM,WAAY,QAAS,KAAK,kBAE9C,GAAI,aAAK,UAAU,SACjB,KAAM,IAAI,OACN,4BAA4B,MAAK,oEAGvC,WAAW,MAAK,MAAQ,QACxB,KAAK,uBACD,MAAK,KAAM,MAAM,WAAY,QAAS,cACtC,gBAAiB,kCAIzB,MAAI,MAAK,QAAU,MACjB,QAAQ,QAAQ,eAEX,QAAQ,IAAI,MAAQ,UAAU,KAAM,WAAY,YAInD,8BACN,QAAY,GAAG,OAAO,MAClB,GACA,OAAO,KAAK,WACP,IAAI,KAAO,UAAU,MACrB,IAAI,SAAW,QAAQ,IAAI,WAAU,UAAO,MACrD,MAAO,IAAI,KAAI,KAET,mHAON,GAAI,MAAK,WAAa,WAAa,YAAY,QAAQ,YAAc,GACnE,OAGF,UAAU,UAAU,QAAQ,YACtB,WAAU,MACZ,iCAAgC,UAAO,IAClC,iCAAgC,UAAO,KAAO,GAC/C,MAAK,SAAS,UAGtB,MAAK,OAAO,QAAQ,SAGlB,GAAI,OAAM,WAAa,WACrB,YACI,6BAA6B,OAAM,KAAM,UAAW,SACpD,SAAW,MACb,QAAQ,QAAQ,YACd,GAAI,WAAU,CAAC,cAAc,IAAI,UAAO,KACtC,WAAc,gCAAgC,UAAO,IACjD,SAAU,EACZ,WAAO,UACP,MAAO,iCAAgC,UAAO,KACrC,QAAS,MAGlB,gCAAgC,UAAO,iBAkB/C,8BAEJ,MAAO,MAAK,cAAc,OAAQ,cAiBtB,kDACwD,kBACjC,iBACF,IAC5B,qBACH,QAAS,KAAK,UAAU,QACxB,KAAK,YAAY,QACjB,KAAK,uBAAuB,QAC5B,QAAU,KAAK,WAAW,SAC1B,KAAK,aAAa,UAGpB,YAAgB,GAAI,kBAChB,KAAK,UAAW,eAAgB,cAChC,KAAK,+BAKS,KAAM,MAAK,uBACzB,OAAQ,QAAS,QAAS,6BACd,QAAQ,IAAI,MAAQ,UAAU,KAAM,UAAW,oBAG7C,QAAQ,IAAI,GAAK,EAAE,aACpB,OAAO,KAAK,QAAQ,IAAI,MAAQ,OAAO,MAAM,YAE1D,GAAI,KAAY,CAAC,GAAG,UAAW,GAAG,SAAU,GAAG,KAAK,YACxD,MAAA,QAAO,KAAK,WAAW,QAAQ,MAC7B,gBAAoB,UAAU,KAC9B,YAAY,QAAQ,YACd,WAAU,CAAC,UAAO,YAAc,CAAC,QAAQ,IAAI,UAAO,KACtD,UAAO,cAKT,KAAK,QAAU,MACjB,QAAQ,QAAQ,SAGX,aAGH,2DAGJ,iBAAqB,OAAO,OAAO,uBACjC,KAAI,KAAK,OAAO,OAAO,MAAQ,UACxB,KACN,IAEH,MAAO,MAAK,cACR,aAAc,KAAK,YAAa,GAAM,eAAgB,oBAa9C,wEAGZ,UAAc,OAAO,KAAK,mBAEtB,MAAM,IAAI,MAAQ,KAAK,MAAM,MAAM,cAAc,MAAM,qBACnC,YAAY,IAAI,MAAQ,cAAc,MAAM,gBAClD,gBAAgB,IAAI,MAAQ,KAAK,MAAM,MAAM,OAG3D,YAAY,SAAW,GACzB,aAAc,KAAK,UAGrB,IAAO,UAAW,cAAe,YAAa,YAC1C,qBACI,OAAQ,YAAa,KAAK,UAAW,KAAK,mBAGhB,CAChC,GAAG,WAAY,GAAG,KAAK,MAAM,QAAS,GAAI,KAAK,YAAc,IAC7D,IAAI,OACG,EAAC,WAAM,SAAU,QAAQ,6BAElB,OAAA,OAAA,GAAwB,KAAK,WAC7C,OAAO,KAAK,QAAQ,QAAQ,OAC1B,oBAA0B,cAAc,cACd,GAC1B,QAAQ,OAAS,OAAO,MACxB,WAAW,UAAY,UAEzB,oCAAiE,iBAC3C,KAAK,mBAAmB,kBACN,GACxC,KAAO,OAAM,OAAS,IACpB,aAAiB,KAAK,aAClB,WAAY,OAAO,QAAS,WAAY,MAAO,cAC/C,gBAAiB,gCAAiC,WACtD,KAAM,SAAQ,IAAI,UAEhB,aAAe,MAAQ,CAAC,qBAC1B,QAAQ,KACJ,mIAGN,mBACI,YACK,OACG,OAAQ,CAAC,cAAc,QACnB,CAAC,UAAU,MAAK,KAAM,WAAY,UACzC,IAAI,OAAQ,MAAK,MAC1B,GAAI,eAAe,OAAS,GAC1B,mBAAqB,GACrB,KAAI,cAAe,MACjB,gBACI,wFAC2B,eAE3B,GAAI,OACN,+BAA+B,6CACpB,qDACP,mBAAmB,kBAE7B,MAAO,YAGD,4HAMN,aAA2C,GAC3C,KAAO,OAAM,OAAS,IACpB,SAAa,OAAM,MACnB,QAAQ,eAAiB,KAAK,SAC9B,aAAe,GAWf,GAPI,KAAK,KAAK,KAAO,SACjB,cAAc,aAAc,KAAK,KAAM,UAAW,UACpD,EAAC,UAAY,oBAAoB,KAAK,KAAK,KAAM,UAK/C,UAAU,KAAK,KAAK,OAAS,MAC/B,YACI,YAAU,KAAK,KAAM,UAAW,QAAS,KAAK,kBAC7C,UACH,EAAC,UAAY,oBAAoB,KAAK,KAAK,KAAM,UAEnD,mBAAuB,QAAQ,eAC3B,aAAK,UAAU,SACjB,SAAS,KAAM,QAA8B,KAAK,GAChD,WAAU,UAAY,EACtB,QAAQ,eAAiB,eACzB,KAAK,uBACD,SAAU,KAAK,KAAM,UAAW,QAAS,cACzC,YAAa,iCACjB,KAAK,kBACD,KAAK,KAAM,OAAO,QAAS,UAAW,MAAO,WAC1C,KAGT,WAAU,UAAY,QACtB,KAAK,uBACD,SAAU,KAAK,KAAM,UAAW,QAAS,cACzC,YAAa,iCACjB,KAAK,kBACD,KAAK,KAAM,OAAO,QAAS,UAAW,MAAO,gBAGnD,MAAK,kBACD,KAAK,KAAM,OAAO,QAAS,UAAW,MAAO,WAGrD,MAAO,UAGD,kEAIN,MAAK,SAAS,QAAQ,YACpB,cAAqB,oBAAoB,UAAU,KAAM,SACzD,GAAI,MAAM,WAAa,CAAC,UAAU,IAAI,UAAU,MAC9C,OAGE,UAAU,KAAO,QACf,UAAU,WAAW,KAAK,MACjB,CAAC,CAAC,UAAU,KAAM,UAAW,WAExC,OAAM,UAAY,GAClB,OAAM,KAAK,CAAC,SAAU,QAAQ,eAAgB,KAAM,aAGhD,UAAU,WAAW,MAAM,MAClB,CAAC,CAAC,UAAU,KAAM,UAAW,WAE5C,OAAM,UAAY,GAClB,OAAM,KAAK,CAAC,SAAU,QAAQ,eAAgB,KAAM,eAQ1D,UACE,OAAO,KAAK,KAAK,WACZ,QACG,KAAO,KAAK,UAAU,KAAK,QAAQ,WAAU,UAAO,YAGtD,+BACN,OAAO,KAAK,QAAQ,QAAQ,OAC1B,WAAc,OAAO,iBACA,cAAc,YACtB,KAAK,MAAM,MAAM,UAC9B,GAAI,MAAK,WAAW,OAAY,MAAK,WAAW,MAAS,OACvD,UAAc,MAAK,WAAW,MAAS,YACzB,MAAM,SAAW,OAAM,MAAM,QACvC,OAAM,MAAM,MACR,aAAgB,MAAM,SAAW,IAAM,MAAM,SAAW,KAChE,aAAK,OACD,MACA,IAAM,sBAAsB,MAAK,mDACG,oBAC5B,OAAM,UAEhB,MAAK,WAAW,OAAY,MAAK,WAAW,MAAS,OACvD,aAAK,OACD,OAAM,QAAU,MAAK,WAAW,MAAS,MACzC,IAAM,sBAAsB,MAAK,kDAE1B,MAAK,WAAW,MAAS,kBAAkB,OAAM,WAK1D,kBACN,WAA+B,GAC/B,oBAAwB,QACtB,GAAI,KAAK,YAAc,MAAQ,KAAK,WAAW,QAAU,MACrD,KAAK,WAAW,OAAO,YAAc,MACvC,cAAe,KAAK,WAAW,OAAO,WACtC,OAAO,UAAO,MAAQ,OAAO,eAE7B,QAAO,WAAa,OAAO,WAG/B,MAAO,QAGD,oBACN,eAAmB,OAAO,KAAK,QAAQ,OAAO,OAC5C,cAAmB,cAAc,MACjC,MAAO,MAAK,MAAM,MAAM,WAAa,OAEvC,GAAI,WAAW,OAAS,EACtB,KAAM,IAAI,OACN,uDACU,0CAIV,oBACN,MAAO,SAAQ,IAAI,OACjB,GAAI,KAAK,YAAc,MAAQ,KAAK,WAAW,SAAW,MACtD,KAAK,WAAW,QAAQ,OAAS,MACnC,cAAe,KAAK,WAAW,QAAQ,MACvC,MAAO,WAAO,KAEhB,MAAO,OACN,IAGG,sBACN,QAAQ,QAAQ,OACd,oBAAyB,cAAc,MACvC,GAAI,CAAC,KAAK,MAAM,MAAM,gBACpB,KAAM,IAAI,OAAM,eAAe,uDChmBvC,MAIE,kCACqD,gBACX,IAD7B,KAAA,sBAAA,sBACA,KAAA,aAAA,aAWb,8BACE,KAAK,sBAAsB,MAAQ,WAAU,OAC7C,KAAK,aAAa,WAAU,IAAM,WAQpC,+BACE,MAAO,MAAK,sBAAsB,MAOpC,qBACE,MAAO,MAAK,aAAa,IAM3B,UACE,cAAkB,MAAK,aACrB,KAAK,aAAa,KAAK,gBACvB,MAAO,MAAK,aAAa,KAG3B,eAAmB,MAAK,sBACtB,KAAK,sBAAsB,MAAM,UACjC,MAAO,MAAK,sBAAsB,2BC3CN,uCACA,wBA3BlC,MAoFE,iCAE0C,IAD9B,KAAA,SAAA,SACA,KAAA,YAAA,YA9CJ,KAAA,QAAU,MA+CZ,aAAe,MACjB,MAAK,YAAc,IAErB,KAAK,gBAAkB,GAAI,oBA3CzB,gBACF,MAAO,MAAK,WAGV,cACF,MAAO,MAAK,SAAS,cAGnB,eACF,MAAO,MAAK,SAAS,eAGnB,UACF,MAAO,MAAK,SAAS,UAGnB,WACF,MAAO,MAAK,SAAS,WAGnB,WACF,MAAO,MAAK,SAAS,aAGnB,YACF,MAAO,MAAK,UAAU,oBAqBhB,gBACN,SAAa,KAAK,SAClB,GAAK,KAAsB,MAAQ,KAEjC,KAAK,QAAU,aACN,KAAK,YAAY,aAAe,KACzC,KAAK,QAAU,WAAG,mBAAmB,KAAgB,KAAK,kBAE1D,aAAiB,WAAG,gBAAgB,KAAgB,KAAK,aACzD,GAAI,SAAS,SAAW,EAGtB,SAAS,KAAK,WAAG,mBAAmB,KAAgB,KAAK,sBAChD,SAAS,OAAS,EAC3B,KAAM,IAAI,OACN,wBAAwB,SAAS,kCACzB,CAAC,UAEf,KAAK,QAAU,SAAS,SAQtB,QAEJ,GADA,KAAK,gBACD,KAAK,QAAQ,MAAQ,KACvB,KAAM,IAAI,OACN,iHAGN,cAAkB,KAAM,MAAK,QAAQ,OAErC,MAAO,MAAK,SAAS,WASvB,oBACE,KAAK,UAAY,UACjB,WAAc,KAAK,UAAU,yBAEV,KAAK,aAAa,UAAU,uBAE3C,WACE,KAAK,UAAU,qBAAuB,MACxC,WACK,KAAK,UAAU,oBAA4B,WAIlD,UAAY,KAAK,UAAU,UAG7B,KAAK,QAAU,GAAG,OAAM,SAAS,YAAY,OAAM,SAAS,cAC5D,cACI,WAAG,cAAc,KAAK,UAAU,WAAY,KAAK,UAAU,aAQ/D,GAPA,KAAK,SAAW,GAAI,eAChB,gBAAgB,SAAS,eAAe,OAAO,YACnD,KAAK,SAAS,UAAY,KAAK,6BAA6B,WAG5D,KAAK,SAAS,gBAAkB,KAAK,gBAEjC,UAAU,kBAAoB,MAC7B,UAAU,iBAA0C,MAAQ,MAC/D,gBACI,gBAAgB,SAAS,eAAe,UAAU,kBACtD,KAAK,YAAc,GAAI,eAAc,aACrC,KAAK,YAAY,UAAY,KAAK,SAAS,UAI3C,KAAK,YAAY,gBAAkB,KAAK,gBACxC,KAAK,YAAY,aAAa,GAAI,IAGpC,MAAO,GAGD,wBACN,GAAI,WACF,WAAa,UAAQ,MAAM,6BAC3B,OAAS,OAAO,GAAG,MAAM,KACzB,aAAiB,SAAS,OAAO,GAAI,aACpB,SAAS,OAAO,GAAI,IAGrC,MAAI,WAAY,EACP,GAGL,WAAa,GAAK,UAAY,EAOpC,MAAO,QA+CH,4BAEJ,GAAI,MAAO,eAAiB,UAC1B,aAAiB,WAAG,gBAAgB,cACpC,GAAI,SAAS,SAAW,EACtB,KAAM,IAAI,OACN,0CAA0C,iBACzC,GAAI,SAAS,OAAS,EAC3B,KAAM,IAAI,OACN,wBAAwB,SAAS,kCACzB,iBAEd,aAAe,SAAS,GAE1B,GAAI,aAAa,MAAQ,KACvB,KAAM,IAAI,OACN,+GAIN,MAAO,cAAa,KAAK,KAAK,WAyChC,wBAEE,MAAO,MAAK,QAAQ,OAAQ,KAAK,aAG3B,wBAEN,GAAI,CAAE,kBAAkB,UAAW,CAAC,MAAM,QAAQ,QAEhD,MAAO,QAGT,GADA,OAAS,MAAM,QAAQ,QAAU,OAAS,CAAC,QACvC,OAAO,SAAW,KAAK,WAAW,OACpC,KAAM,IAAI,OACN,mDACuB,KAAK,WAAW,wCACpB,OAAO,yBAEhC,MAAO,MAAK,WAAW,OAAO,mBAC5B,KAAI,WAAc,OAAoB,GAC/B,KACN,IAGG,0BACN,MAAA,SAAU,SAAW,KAAK,YAClB,MAAM,QAAQ,SAAuB,QAAZ,CAAC,SAmBpC,wBAEE,OAAS,KAAK,gBAAgB,QAC9B,QAAU,KAAK,iBAAiB,SAChC,WAAe,KAAK,SAAS,QAAQ,OAAQ,SAC7C,MAAO,QAAO,OAAS,EAAI,OAAS,OAAO,QAkBvC,8BAGJ,OAAS,KAAK,gBAAgB,QAC9B,QAAU,KAAK,iBAAiB,SAChC,WAAe,KAAM,MAAK,SAAS,aAAa,OAAQ,SACxD,MAAO,QAAO,OAAS,EAAI,OAAS,OAAO,GAGrC,kCACN,MAAO,QAAO,KAAK,KAAK,OAAO,cAC7B,QAAO,KAAO,CAAC,IAAI,MACZ,QACN,IAQL,UACE,KAAK,SAAS,UAEV,KAAK,aACP,KAAK,YAAY,UAGnB,KAAK,gBAAgB,YAkCzB,+CAE8B,IAC5B,GAAI,UAAY,KACd,KAAM,IAAI,OACN,0GAGF,SAAW,MACb,SAAU,IAGR,QAAQ,WACL,SAA0B,MAAQ,MAC/B,UAAoB,SAAS,MACjC,UAAY,SAAsB,KAEpC,SAAW,GAAG,WAAW,qBAAqB,sBAGlD,WAAc,GAAI,YAAW,SAAU,SACvC,MAAA,MAAM,QAAM,OACL,OCvcT,aAAgB,qBEHhB,GAAA,UAAA,aAAA,CAAA,WAAA,IAAA,WAAA,QAAA,IAAA,QAAA,eAAA,IAAA,eAAA,gBAAA,IAAA,gBAAA,cAAA,IAAA,cAAA,MAAA,IAAA,MAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,UAAA,IAAA,UAAA,WAAA,IAAA,WAAA,aAAA,IAAA,SAAA,OAAA,IAAA,OAAA,IAAA,IAAA,MCoBA,gBAA4B,YAAA,mCCDA,YAAA,uBC+BtB,+BAEJ,MAAO,iBAAgB,OAAO,OAShC,2CAE0B,GAAI,iBAA8B,GAAI,MAE9D,GAAI,QAAS,KACX,MAAO,MAET,GAAI,YAAY,IAAI,QAClB,KAAM,IAAI,OAAM,0CAElB,GAAI,KAAK,IAAI,QACX,MAAO,MAAK,IAAI,QAElB,WAAe,MAAM,QAErB,GAAI,OAAO,SAAW,OAAO,QAAU,KACrC,KAAM,IAAI,OACN,qEAGN,GAAK,OAAO,QAGL,GAAI,YAAW,SAEpB,mBAAkC,MAAM,QAAQ,QAAS,GAAK,GAC9D,YAAY,IAAI,QAChB,YAAgB,SACd,UAAc,OAAM,eACA,gBAAgB,MAAO,MAAO,KAAM,aACxD,eAAe,GAAK,YAEtB,MAAA,aAAY,OAAO,QACZ,mBAEP,MAAM,IAAI,OAAM,yCAAyC,cAdzD,OAAA,MAAK,IAAI,OAAO,OAAO,OAChB,OAAO,MA0CZ,8BACmD,WACvD,MAAO,iBAAgB,OAAQ,OAOjC,kDAE2B,GAAI,MAG7B,WAAc,OAAO,GACrB,GAAI,YAAY,IAAI,QAClB,KAAM,IAAI,OAAM,0CAElB,WAAe,MAAM,QAErB,GAAI,OAAO,SAAW,OAAO,QAAU,KACrC,KAAM,IAAI,OACN,qEAGN,GAAK,OAAO,QAEL,GAAI,YAAW,SAEpB,mBAAkC,MAAM,QAAQ,QAAS,GAAK,GAC9D,YAAY,IAAI,QAChB,YAAgB,SACd,aAAiB,OAAO,IAAI,GAAK,EAAE,gBACf,gBAAgB,SAAU,MAAO,aACrD,eAAe,GAAK,YAEtB,MAAA,aAAY,OAAO,QACZ,mBAEP,MAAM,IAAI,OAAM,yCAAyC,cAbzD,OAAO,QAAO,MAkBZ,sBACJ,MAAI,KAAM,KACD,KAIL,YAAW,EAAE,IACR,CAAC,MAAO,KAAM,QAAS,IAEvB,CAAC,MAAO,EAAG,QAAS,IAqC/B,gDAEE,SAAqC,GAAI,KAGzC,gBAAgB,OAAO,MAAO,MAM9B,cAAkB,OAAM,KAAK,KAAK,SAChC,UAAc,KAAK,IAAI,KACvB,GAAO,aAAK,UAAU,QACpB,gBAAoB,KAAM,OAC1B,KAAK,IAAI,IAAK,cAOlB,WAAe,gBAAgB,OAAO,MAAO,MAC7C,MAAO,QASH,0BACJ,MAAO,MAAO,MAAS,CAAC,YAAY,OAAO,MACtC,OAAM,QAAQ,MACb,MAAO,MAAQ,UAAY,CAAE,eAAkB,UAYjD,2BACJ,MAAO,MAAO,MAAQ,YAAY,MAAQ,MAAM,QAAQ,MACnD,MAAO,MAAQ,UAAa,cAAkB,SAC5C,aAAK,aAAa,KAO3B,4BACE,MACI,SAAU,MACT,MAAO,QAAU,UAAY,MAAO,QAAU,WC9P/C,+BACJ,MAAO,SAAQ,WAAW,eAI5B,6BACE,MAAI,gBAAmB,QACb,CAAC,MAAO,KAAK,QAAS,QAAS,IAC9B,YAAW,MACb,CAAC,MAAO,KAAM,QAAS,IAEvB,CAAC,MAAO,KAAM,QAAS,IChClC,eAAA,MAmCE,sBACE,GADiB,KAAA,SAAA,SAVT,KAAA,MAAQ,EACR,KAAA,IAAM,EAUV,UAAY,KACd,KAAM,IAAI,YAAW,mDAEvB,GAAI,SAAW,EACb,KAAM,IAAI,YAAW,6CAEvB,KAAK,KAAO,GAAI,OAAS,UACzB,KAAK,gBAAkB,EAAI,SAMnB,YAER,KAAO,MAAQ,GACb,OAAS,KAAK,gBAEhB,MAAO,OAAQ,KAAK,gBAGZ,WACR,GAAI,MAAQ,EACV,KAAM,IAAI,YAAW,uCAEvB,MAAO,MAAK,KAAK,MAAQ,KAAK,UAGtB,iBACR,GAAI,MAAQ,EACV,KAAM,IAAI,YAAW,uCAEvB,KAAK,KAAK,MAAQ,KAAK,UAAY,MAMrC,SACE,WAAa,KAAK,IAAM,KAAK,MAC7B,MAAI,QAAS,GACX,QAAS,KAAK,gBAAkB,QAE3B,OAQT,SACE,MAAO,MAAK,WAAa,KAAK,SAQhC,UACE,MAAO,MAAK,WAAa,EAM3B,YACE,GAAI,KAAK,SACP,KAAM,IAAI,YAAW,wBAEvB,KAAK,IAAI,KAAK,IAAK,OACnB,KAAK,IAAM,KAAK,KAAK,KAAK,IAAM,GAMlC,gBACE,gBAAoB,QAClB,KAAK,KAAK,OAOd,MACE,GAAI,KAAK,UACP,KAAM,IAAI,YAAW,yBAEvB,KAAK,IAAM,KAAK,KAAK,KAAK,IAAM,GAChC,WAAe,KAAK,IAAI,KAAK,KAC7B,MAAA,MAAK,IAAI,KAAK,IAAK,QACZ,OAMT,eACE,GAAI,KAAK,SACP,KAAM,IAAI,YAAW,wBAEvB,KAAK,MAAQ,KAAK,KAAK,KAAK,MAAQ,GACpC,KAAK,IAAI,KAAK,MAAO,OAMvB,QACE,GAAI,KAAK,UACP,KAAM,IAAI,YAAW,yBAEvB,WAAe,KAAK,IAAI,KAAK,OAC7B,MAAA,MAAK,IAAI,KAAK,MAAO,QACrB,KAAK,MAAQ,KAAK,KAAK,KAAK,MAAQ,GAC7B,OAYT,6BACE,GAAI,KAAK,UACP,KAAM,IAAI,YAAW,yBAEvB,UAAc,KAAK,KAAK,KAAK,MAAQ,sBACtB,KAAK,IAAI,OACxB,MAAA,MAAK,IAAI,MAAO,KAAK,OACd,2BC7KX,aAoB0C,YAMxC,cACE,MAAM,kBAAkB,kBAG1B,SACE,MAAO,GAGT,YACM,MAAM,UACR,KAAK,SAEP,MAAM,KAAK,OAGb,eACM,MAAM,UACR,KAAK,SAEP,MAAM,QAAQ,OAMR,SACN,gBAAoB,KAAK,SAAW,UACpB,GAAI,OAAS,iBACjB,KAAK,SAIjB,UAAa,EAAG,EAAI,IAAK,IACvB,QAAQ,GAAK,KAAK,IAAI,KAAK,KAAK,KAAK,MAAQ,IAG/C,KAAK,KAAO,QACZ,KAAK,SAAW,YAChB,KAAK,gBAAkB,EAAI,KAAK,SAChC,KAAK,MAAQ,EACb,KAAK,IAAM,MA7CE,kBAAA,iBAAmB,GCkB9B,kCACJ,MAAO,IAAI,eAAc,OCwBrB,qCAGJ,MAAO,IAAI,sBAAqB,OAe5B,kEAGJ,MAAO,IAAI,iBAAgB,cAAe,kBCkDtC,mDAE8B,gBAAgB,MAClD,MAAO,IAAI,aAAe,UAAW,cA1IvC,iBAAA,WA4KQ,WACJ,WAAoB,KACZ,KAAM,MAAK,OACnB,KAAO,CAAC,EAAE,MACR,OAAO,KAAK,EAAE,OACd,EAAI,KAAM,MAAK,OAEjB,MAAO,aAcH,kBACJ,WAAe,KAAK,SAAS,YACT,KACZ,KAAM,QAAO,OACrB,KAAO,CAAC,EAAE,MACR,OAAO,KAAK,EAAE,OACd,EAAI,KAAM,QAAO,OAEnB,MAAO,aAUH,gBACJ,MAAQ,KAAM,MAAK,OACnB,KAAO,CAAC,EAAE,MACR,EAAI,KAAM,MAAK,YAWb,yBACJ,MAAQ,KAAM,MAAK,sBACE,UAAU,EAAE,OACjC,KAAQ,CAAC,EAAE,MAAS,gBAClB,EAAI,KAAM,MAAK,OACf,eAAiB,UAAU,EAAE,OAgBjC,sBACE,MAAO,IAAI,2BAA0B,KAAM,SAa7C,kBACE,MAAO,IAAI,gBAAe,KAAM,WAWlC,eACE,MAAO,IAAI,aAAY,KAAM,WAW/B,oBACE,MAAO,IAAI,kBAAiB,KAAM,WAWpC,0BACE,MAAO,IAAI,kBAAiB,KAAM,WAAW,SAW/C,mBACE,MAAO,IAAI,iBAAgB,KAAM,gBAQ7B,iBACJ,MAAO,MAAK,IAAI,GAAG,oBAUf,kBACJ,MAAO,MAAK,eAAe,GAAG,aAAa,GAAM,IAAM,IAqBzD,uCAAkD,IAChD,MAAO,IAAI,uBAAsB,KAAM,UAAW,gBAmCpD,0CACwC,SAEE,WAGxC,eAAmB,KAAK,cAAc,UAAW,gBAGjD,MAAO,YAAW,IAAI,GAAK,QAAQ,EAAG,QAaxC,uCAGE,MAAO,IAAI,iBACP,kBAAkB,CAAC,KAAM,WAAY,kBAU3C,aACE,MAAI,QAAQ,GAAK,QAAS,KACjB,KAEF,GAAI,cAAa,KAAM,QAShC,aACE,MAAI,QAAQ,GAAK,QAAS,KACjB,KAEF,GAAI,cAAa,KAAM,QAYhC,qBACE,MAAO,IAAI,kBAAiB,KAAM,YAapC,yBACE,MAAO,IAAI,iBAAgB,KAAM,WAAY,MAO/C,SACE,MAAO,IAAI,gBAAe,sBA1d9B,aAue+B,cAE7B,mBACE,QADoB,KAAA,MAAA,MADd,KAAA,KAAO,EAKf,UACE,MAAO,YAAY,KAAK,MAAM,oBAG1B,QACJ,GAAI,KAAK,MAAQ,KAAK,MAAM,OAC1B,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,SAAa,KAAK,MAAM,KAAK,MAC7B,MAAA,MAAK,OACE,CAAC,MAAO,UAAU,MAAO,KAAM,2BAvf1C,aA2fsC,cACpC,oBAEE,QADY,KAAA,OAAA,OAId,UACE,MAAO,qBAGH,QACJ,IACE,MAAO,MAAK,kBAGZ,KAAA,GAAE,QACE,mDAAmD,EAAE,UACnD,oBA5gBZ,aAihBgC,cAK9B,sBACE,QADoB,KAAA,SAAA,SAEpB,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,UACE,MAAO,GAAG,KAAK,SAAS,2BAGpB,QAKJ,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGA,cACZ,MAAO,MAAK,SAAS,sBAziBzB,aA6iB8B,cAQ5B,+BACE,QADoB,KAAA,SAAA,SAAqC,KAAA,SAAA,SAF3D,KAAA,MAAQ,EAIN,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,UACE,MAAO,GAAG,KAAK,SAAS,yBAGpB,QAKJ,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGA,cAKZ,KAAO,KAAK,QAAU,KAAK,WACzB,YAAgB,KAAM,MAAK,SAAS,OAEpC,GAAI,QAAQ,KACV,MAAO,SAEN,QAAQ,QAAQ,OAErB,MAAO,MAAK,SAAS,sBAplBzB,aAwlB8B,cAE5B,+BACE,QADoB,KAAA,SAAA,SAAqC,KAAA,SAAA,SAD3D,KAAA,MAAQ,EAKR,UACE,MAAO,GAAG,KAAK,SAAS,yBAGpB,QACJ,MAAI,MAAK,SAAW,KAAK,SAChB,CAAC,MAAO,KAAM,KAAM,IAEtB,KAAK,SAAS,+BAtmBzB,aA6mBuC,cAKrC,oDAEqC,IACnC,QAFY,KAAA,SAAA,SAAqC,KAAA,UAAA,UACrC,KAAA,qBAAA,qBAEZ,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,UACE,MAAO,GAAG,KAAK,SAAS,kCAGpB,QAKJ,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGA,cACZ,UAAmB,GACnB,KAAO,MAAM,OAAS,KAAK,YACzB,SAAa,KAAM,MAAK,SAAS,OACjC,GAAI,KAAK,KACP,MAAI,MAAK,sBAAwB,MAAM,OAAS,EACvC,CAAC,MAAO,MAAO,KAAM,IAEvB,CAAC,MAAO,KAAM,KAAM,IAE7B,MAAM,KAAK,KAAK,OAElB,MAAO,CAAC,MAAO,MAAO,KAAM,qBAlpBhC,aAspBgC,cAK9B,gCAGE,QAFY,KAAA,SAAA,SACA,KAAA,UAAA,UAEZ,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,UACE,MAAO,GAAG,KAAK,SAAS,2BAGpB,QAKJ,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGA,cACZ,QACE,SAAa,KAAM,MAAK,SAAS,OACjC,GAAI,KAAK,MAAQ,KAAK,UAAU,KAAK,OACnC,MAAO,MAEN,QAAQ,KAAK,sBArrBtB,aA0rBgC,cAC9B,gCAGE,QAFY,KAAA,SAAA,SACA,KAAA,UAAA,UAId,UACE,MAAO,GAAG,KAAK,SAAS,wBAGpB,QACJ,SAAa,KAAM,MAAK,SAAS,OACjC,GAAI,KAAK,KACP,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,iBAAwB,oBAAY,sBAAsB,KAAK,cAOhD,KAAK,UAAU,KAAK,qBACV,oBAAY,sBAAsB,QAI3D,YAAgB,cACN,oBAAY,eAAe,EAAG,gBACpC,EAAE,UAGN,MAAO,CAAC,MAAO,OAAQ,KAAM,gCA3tBjC,aA+tB2C,cAEzC,8BAGE,QAFY,KAAA,SAAA,SACA,KAAA,QAAA,QAHd,KAAA,MAAQ,EAKN,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,UACE,MAAO,GAAG,KAAK,SAAS,iCAOpB,QAKJ,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGR,cACJ,OACE,IACE,MAAO,MAAM,MAAK,SAAS,gBAE3B,GAAI,CAAC,KAAK,QAAQ,GAChB,MAAO,CAAC,MAAO,KAAM,KAAM,wBA/vBrC,aA2wBqC,cACnC,gCAGE,QAFY,KAAA,SAAA,SACA,KAAA,UAAA,UAId,UACE,MAAO,GAAG,KAAK,SAAS,6BAGpB,QACJ,SAAa,KAAM,MAAK,SAAS,OACjC,GAAI,KAAK,KACP,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,iBAAwB,oBAAY,sBAAsB,KAAK,cAOhD,KAAM,MAAK,UAAU,KAAK,qBAChB,oBAAY,sBAAsB,QAI3D,YAAgB,cACN,oBAAY,eAAe,EAAG,gBACpC,EAAE,UAGN,MAAO,CAAC,MAAO,OAAQ,KAAM,wBA5yBjC,aA2zBmD,cAQjD,cACE,QACA,KAAK,YAAc,GAAI,mBACvB,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,UAGhD,QAKJ,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAiBR,cAIJ,KAAO,KAAK,YAAY,WAAa,GAEnC,GAAI,CAAC,KAAM,MAAK,OACd,MAAO,CAAC,MAAO,KAAM,KAAM,IAG/B,MAAO,CAAC,MAAO,KAAK,YAAY,QAAS,KAAM,sBA12BnD,aA62BoC,mBAClC,gCAGE,QAFY,KAAA,SAAA,SACA,KAAA,UAAA,UAId,UACE,MAAO,GAAG,KAAK,SAAS,4BAGpB,QACJ,SAAa,KAAM,MAAK,SAAS,OACjC,GAAI,KAAK,KACP,MAAO,GAET,iBAAwB,oBAAY,sBAAsB,KAAK,mBAM3C,KAAK,UAAU,KAAK,qBAEjC,oBAAY,sBAAsB,aACzC,KAAK,YAAY,QAAQ,aAIzB,YAAgB,cACN,oBAAY,eAAe,EAAG,gBACpC,EAAE,UAIN,MAAO,qBAh5BX,aA65BwC,cAStC,wCAGE,QADmB,KAAA,iBAAA,iBARb,KAAA,SAAuC,KAGvC,KAAA,SAA4B,KAOlC,KAAK,cAAgB,UAGvB,UACE,sBAA0B,8CAC1B,MAAO,GAAG,oCAGN,QACJ,MAAA,MAAK,SAAW,KAAK,cAAc,KAAK,UACjC,KAAK,cAGA,yBAQZ,GADA,KAAM,UACF,KAAK,UAAY,MACnB,mBAAuB,KAAM,MAAK,cAAc,OAChD,GAAI,eAAe,KAEjB,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,KAAK,SAAW,eAAe,MAC3B,KAAK,kBAAoB,MAC3B,MAAK,SAAW,KAAK,SAAS,aAAa,KAAK,mBAGpD,eAAmB,KAAM,MAAK,SAAS,OACvC,MAAI,YAAW,KACb,MAAK,SAAW,KACT,KAAK,cAAc,WAErB,6BAIX,AAAA,4BACE,iBAAA,iBAAA,KAAA,GAAA,OACA,iBAAA,iBAAA,SAAA,GAAA,WACA,iBAAA,iBAAA,QAAA,GAAA,YAHU,iBAAA,iBAAe,KAn9B3B,gBAAA,aAs/BwD,cAItD,mCAEuD,gBAAgB,MACrE,QAFqB,KAAA,UAAA,UACA,KAAA,aAAA,aALf,KAAA,MAAQ,EACR,KAAA,eAA6C,KAQrD,UACE,sBAA0B,0CAC1B,MAAO,IAAI,iCAGC,uBAIZ,KAAM,YAIN,iBAAmB,gBACC,EAEpB,6BACE,GAAI,qBAAqB,eACvB,WAAe,WAAU,OACzB,MAAO,CACL,MAAO,OAAO,KAAK,GACjB,gBACI,EAAE,MACJ,gBAEK,EAAE,QAEX,QAAS,QAGX,OAAO,CAAC,MAAO,KAAM,QAAS,IAIlC,WAAkB,KAAM,oBAAmB,KAAK,UAAW,SAE3D,GAAI,eAAiB,cAEnB,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,GAAI,cAAgB,EAClB,OAAQ,KAAK,kBACN,iBAAgB,KACnB,KAAM,IAAI,OACN,qEACyB,KAAK,cAC/B,iBAAgB,SACnB,MAAO,CAAC,MAAO,KAAM,KAAM,QACxB,iBAAgB,iBAMzB,MAAA,MAAK,QACE,CAAC,MAAO,OAAQ,KAAM,SAGzB,QACJ,MAAA,MAAK,eAAiB,KAAK,UAAU,KAAK,gBACnC,KAAK,kCA5jChB,aA0kCyC,cAGvC,iCAEE,QADY,KAAA,SAAA,SAAqC,KAAA,WAAA,WAEjD,KAAK,OAAS,GAAI,YAAuC,YAG3D,UACE,MAAO,GAAG,KAAK,SAAS,wBAOhB,SACR,KAAO,CAAC,KAAK,OAAO,WAClB,MAAU,KAAK,SAAS,OACxB,KAAK,OAAO,KAAK,IAIrB,OACE,MAAA,MAAK,SAIE,KAAK,OAAO,0BAvmCvB,aAinCwC,kBAUtC,sCAGE,MAAM,SAAU,YAFJ,KAAA,SAAA,SAAqC,KAAA,WAAA,WAH3C,KAAA,kBAAoB,GAM1B,KAAK,OAAoB,YAAA,KAAK,MAAW,aAAK,MAAM,YACpD,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,UAGhD,QAKJ,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,SAGN,iBACN,MAAO,MAAK,MAAM,KAAK,SAAW,OAG1B,cACR,MAAO,MAAK,UAAU,KAAK,OAAO,eAG9B,cAKJ,IAHK,KAAK,mBACR,KAAK,SAEA,CAAC,KAAK,OAAO,YAClB,gBAAoB,KAAK,qBACV,KAAM,MAAK,OAAO,cAAc,aAC/C,GAAI,OAAO,KACT,KAAK,kBAAoB,OAEzB,OAAA,MAAK,SACE,OAGX,MAAO,CAAC,MAAO,KAAM,KAAM,cCnqC/B,MA6DA,cAWW,KAAA,KAAe,KA+DxB,+BAA0C,IACxC,UAAa,KACV,aAAK,OACJ,UAAY,EAAG,IAAM;QACrB,aACJ,SACA,MAAI,MAAK,OAAS,UAAY,KAAK,MAAQ,KAGzC,KAAO,KAAK,KACH,eAGT,KAAO,KAAK,KAAK,KAAK,KAAO,WAI7B,KAAO,KAAK,MAAM,KAAK,KAAO,WAEzB,sBAAsB,SACnB,MAAM,OAAK,YACd,iBAAiB,UAAW,eAAgB,iBAChD,MAkBL,sBACE,UAAa,UAEb,MAAI,MAAK,OAAS,UAAY,SAAQ,OAAS,SAG7C,KAAO,SACE,KAAK,MAAQ,MAAQ,SAAQ,MAAQ,KAG9C,KAAO,KAAK,KAAO,SAAQ,KAI3B,KAAO,KAEF,sBACH,SACK,MAAM,OAAK,YAAY,YAAY,KAAM,UAAQ,YACtD,MAmBN,kBACE,UAAa,UAEb,MAAI,MAAK,OAAS,SAEhB,KAAO,SAIP,KAAO,KAEF,sBAAsB,SACnB,MAAM,OAAK,YAAY,OAAO,GAAQ,KAAK,IAAM,UAAU,KAClE,WAmBC,iBACJ,MAAQ,MAAM,MAAK,YAAY,aAAa,GAkB9C,eACE,UAAa,KACb,MAAO,uBAAsB,SACnB,MAAM,OAAK,YAAY,IAAI,GAAQ,KAAK,IAAM,UAAU,KAC/D,KAAK,MA0BV,oBAEE,UAAa,KACb,MAAO,uBAAsB,SACnB,MAAM,OAAK,YAAY,SAAS,WACvC,KAAK,MAYV,qBACE,GAAI,YAAc,KAChB,KAAM,IAAI,YACN,6DAGN,UAAa,KACb,MAAO,uBACH,SAAa,MAAM,OAAK,YAAY,SAAS,YAAa,KAAK,MAqBrE,eACE,UAAa,UAEb,MAAI,MAAK,MAAQ,MAAQ,OAAQ,EAI/B,KAAO,KAAK,KAAO,OACV,SAAU,EAEnB,KAAO,EACE,KAAK,MAAQ,MAAS,UAAU,QAAa,OAAQ,GAG9D,KAAO,SAGP,KAAO,KAEF,sBAAsB,UAC3B,qBAAyB,qBACrB,SAAa,EAAC,MAAO,KAAM,OAAK,WAAY,KAAM,MACtD,MAAO,0BAAyB,iBAAiB,KAAK,UACrD,MAoBL,aACE,UAAa,UAEb,MAAI,MAAK,MAAQ,MAAQ,QAAS,GAAK,KAAK,MAAQ,OAIlD,KAAO,KAAK,KAAO,OAEjB,KAAK,MAAQ,MACZ,MAAK,KAAO,QAAS,SAAU,QAAa,OAAQ,GAGvD,KAAO,EAGP,KAAO,KAEF,sBACH,SAAa,MAAM,OAAK,YAAY,KAAK,QAAQ,MA4BvD,+CAAoE,IAElE,GAAI,YAAc,MAAQ,WAAa,EACrC,KAAI,MAAK,MAAQ,KACT,GAAI,YACN,4DAEE,GAAI,YACN,mNAGmC,KAAK,kBAGhD,UAAa,YACa,YAAA,KAAK,MAAW,aAAK,MAAM,YACrD,MAAO,uBAAsB,UAC3B,UAAY,OAAO,QACnB,MAAI,yBACF,QAAS,OAAO,SAEV,MAAM,OAAK,YAAY,QAAQ,WAAY,MAAM,aACxD,KAAK,MAoBV,aACE,UAAa,UAEb,MAAI,MAAK,MAAQ,MAAQ,KAAK,KAAO,OAGnC,KAAO,OACE,KAAK,MAAQ,MAAQ,KAAK,MAAQ,OAG3C,KAAO,KAAK,KAGZ,KAAO,KAEF,sBACH,SAAa,MAAM,OAAK,YAAY,KAAK,QAAQ,WAmBjD,WACJ,GAAI,KAAK,OAAS,SAChB,KAAM,IAAI,OAAM,kDAElB,MAAQ,MAAM,MAAK,YAAY,eAc3B,kBACJ,GAAI,KAAK,OAAS,SAChB,KAAM,IAAI,OAAM,kDAElB,MAAQ,MAAM,MAAK,YAAY,mBA1HjB,QAAA,gBAAkB,IA0I9B,+CAEa,MACjB,MAAO,IAAI,cAAc,SAAd,cAAA,MAAA,GAAA,WACT,KAAA,KAAO,UAMD,YACJ,MAAO,gBAwBP,sBACJ,MAAO,uBACH,SAAY,kBAAkB,OAAQ,MAAM,QA4C5C,uBAGJ,GAAI,CAAC,YAAW,UACd,KAAM,IAAI,OAAM,qDAElB,SACA,GAAI,MAAM,QAAQ,UAChB,UAAa,EAAG,EAAI,SAAS,OAAQ,IACnC,KAAO,MAAQ,KAAQ,SAAS,GAAkB,KAC5B,KAAK,IAAI,KAAO,SAAS,GAAkB,cAE1D,mBAAoB,QAC7B,aAAiB,UACf,KAAO,MAAQ,KAAQ,SAAS,IAAmB,KAC7B,KAAK,IAAI,KAAO,SAAS,IAAmB,MAGtE,MAAO,uBAAyB,UAC9B,YAAgB,KAAM,oBAAmB,SAAU,IACjD,GAAI,YAAa,SACf,MAAO,CAAC,MAAO,EAAE,WAAY,QAAS,IACjC,GAAI,YAAW,GACpB,MAAO,CAAC,MAAO,KAAM,QAAS,IAE9B,KAAM,IAAI,OACN,+EAIR,MAAO,oBAAsB,QAAS,gBAAgB,WACrD,MAWL,+BACE,GAAI,OAAS,KACX,MAAO,MAIT,eAAmB,KAAK,GAExB,GAAI,aAAa,aAEf,UAAc,YAAY,MAC1B,MAAO,CAAC,MAAO,QAAS,IAI1B,MAAO,CAAC,MAAO,KAAM,QAAS,IAOhC,6BAEE,GAAI,OAAO,SAAW,EAEpB,KAAM,IAAI,OAAM,wCAGlB,MAAI,QAAO,YAAiB,QAEhB,MAAM,QAGN,QAAO,QC9rBrB,oBAAA,aA2BqC,SAMnC,oBACE,QAD6B,KAAA,MAAA,YAIzB,YACJ,kBAAsB,KAAM,MAAK,MAAM,wBAClB,cAAc,0BACd,aAAa,MAAM;GAAM,IAAI,MAE5C,MAAK,SAAS,OAChB,MAAO,KAAK,MAAM,EAAG,KAEhB,OAET,MAAO,2BCtBQ,cACD,OAAO,mBACL,OAAO,qBACP,OAAO,iCACK,OAAO,+CACH,OAAO,2BA9B3C,aA6CgC,SAgI9B,8BACE,QAD6B,KAAA,MAAA,OA9HvB,KAAA,UAAY,GACZ,KAAA,gBAA4B,KAC5B,KAAA,qBAAuB,GACvB,KAAA,cAA+C,KAC/C,KAAA,sBAAwB,GACxB,KAAA,UAAY,IACZ,KAAA,gBAAkB,GA0HxB,KAAK,KAAO,GAAI,iBAAgB,QAC3B,WACH,WAAY,IAEd,KAAK,UAAY,CAAA,WAAU,YAAc,IACzC,KAAK,gBAAkB,UAAU,YACjC,KAAK,cAAgB,UAAU,cAC/B,KAAK,sBAAwB,UAAU,sBACnC,UAAU,gBACZ,cAAK,OACD,UAAU,WAAa,KACvB,IACI,kEACR,KAAK,gBAAkB,GACvB,KAAK,UAAY,KAEjB,KAAK,UAAY,UAAU,UAAY,UAAU,UAAY,SA9H3D,eACJ,MAAK,MAAK,sBACR,KAAM,MAAK,iBAEN,KAAK,sBAAwB,OAAO,KAAK,KAAK,eACjB,KAAK,qBAW7B,kBACZ,wBAA4B,KAAM,MAAK,sBACvC,GAAI,CAAC,KAAK,iBAAmB,CAAC,oBAE5B,KAAM,IAAI,OACN,6DACK,KAAK,iBAAmB,qBAEjC,aAAK,OACD,oBAAoB,SAAW,KAAK,gBAAgB,OACpD,IAAM,uCACF,KAAK,gBAAgB,OAAO,WAC5B,kEACW,oBAAoB,OAAO,WAAa,MAExD,KAAK,iBACR,MAAK,gBAAkB,qBAGzB,WAAwC,KAAK,gBAAgB,OACzD,iBACE,UAAS,MAAS,SAAS,MAAQ,GAAM,EAClC,UAET,mBAEA,OAAO,KAAK,QAAQ,OAAO,MAAW,OAAO,MAAQ,GAKzD,GAJA,aAAK,OACD,eAAe,SAAW,EAC1B,IAAM,iCAAmC,eAAe,YAExD,KAAK,cACP,cAAkB,QAAO,KAAK,KAAK,gBACjC,UAAc,KAAK,gBAAgB,QAAQ,KAC3C,GAAI,QAAU,GACZ,KAAM,IAAI,OACN,YAAc,IACd,uEACY,KAAK,gBAAgB,WAAa,MAIxD,KAAK,qBAAuB,QAGhB,uBACZ,GAAI,KAAK,WACP,SAAa,KAAM,MAAK,KAAK,wBACR,KAAM,MAAK,OAChC,GAAI,aAAa,KACf,KAAM,IAAI,OAAM,sCAElB,cAA0B,aAAa,cACvB,KAAK,SAAS,UAAW,IACzC,MAAO,aAEP,OAAO,WA0DL,YACC,KAAK,sBACR,KAAM,MAAK,iBAEb,UAAY,KAAM,MAAK,KAAK,WAC5B,MAAI,MAAK,WAGP,OAAQ,MAAM,KAAK,IAEd,MAAM,IAAI,GAAK,KAAK,gBAAgB,IAG7C,sBACE,WAAe,KAAK,SAAS,eACsB,UACF,GAEjD,UAAa,EAAG,EAAI,KAAK,gBAAgB,OAAQ,KAC/C,QAAY,KAAK,gBAAgB,WAClB,KAAK,cAAgB,KAAK,cAAc,KAAO,KAC9D,GAAI,KAAK,uBAAyB,CAAC,QAEjC,SACK,CACL,UAAc,OAAO,eACH,KAClB,GAAI,QAAU,GAGZ,GAAI,SAAU,QAAO,UAAY,OAC/B,YAAc,QAAO,aAChB,GAAI,SAAW,SAAO,UAAY,QAAO,SAC9C,KAAM,IAAI,OACN,mBAAmB,8BAA8B,QAErD,YAAc,YAIhB,eAAmB,OAAO,OAC1B,GAAI,MAAM,YAGJ,SAAU,QAAO,QAAU,OAC7B,YAAc,KAAK,WAAW,OAG9B,YAAc,cAEP,CAAC,SAAU,CAAC,QAAO,MAG5B,YAAc,eAId,QAAQ,QAAO,WACR,UACH,YAAc,WACd,UACG,QACH,YAAc,KAAK,MAAM,YACzB,UACG,OACH,YAAc,KAAK,WAAW,OAC9B,cAEA,YAAc,YAKrB,SAAU,QAAO,QAAW,OAAO,KAAO,YACd,SAAS,KAAO,aAKjD,MAAI,QAAO,KAAK,QAAQ,SAAW,EAC1B,SAGA,CAAC,GAAI,SAAU,GAAI,QAItB,kBACN,MAAI,SAAU,KAAO,MAAM,gBAAkB,OACpC,EAEA,EAKH,mCAA8C,IACpD,WAAyB,cACR,aACE,KAAK,oBACL,UAEnB,UAAa,EAAG,EAAI,WAAY,IAC9B,OAAQ,kBAED,WACH,OAAQ,KAAK,OAAO,QAEb,YACH,WAAa,EAAI,EACjB,aAAe,YACf,UAEG,MAAK,UAIR,GAHA,WAAa,EAAI,EAGb,KAAK,YAAc,KAAO,KAAK,gBACjC,MAEF,OAAO,KAAK,IACZ,aAAe,UACf,cAGA,aAAe,YACf,WAAa,EACb,MAEJ,UAEG,aACH,OAAQ,KAAK,OAAO,QAEb,MAAK,UACR,OAAO,KAAK,KAAK,UAAU,WAAY,IACvC,aAAe,UACf,WAAa,EAAI,EACjB,eAGJ,UAEG,aACH,OAAQ,KAAK,OAAO,QAEb,YACH,aAAe,wBACf,eAGJ,UAEG,yBACH,OAAQ,KAAK,OAAO,QAEb,MAAK,UACR,OAAO,KAAK,KAAK,UAAU,WAAY,EAAI,IAC3C,aAAe,UACf,WAAa,EAAI,EACjB,UAEG,YACH,aAAe,YACf,cAGA,aAAe,4BACf,MAEJ,UACG,6BACH,OAAQ,KAAK,OAAO,QAEb,YACH,aAAe,YACf,eAGJ,eAWN,GANI,eAAiB,wBACnB,OAAO,KAAK,KAAK,UAAU,WAAY,WAAa,IAEpD,OAAO,KAAK,KAAK,UAAU,aAGzB,sBAAwB,OAAO,SAAW,KAAK,gBAAgB,OACjE,KAAM,IAAI,OAAM,wCACZ,KAAK,gBAAgB,qCAAqC,UAEhE,MAAO,6BCrYX,aA4BwC,cAgBtC,8BACE,QADqC,KAAA,iBAAA,iBAf/B,KAAA,SAAW,GAiBjB,KAAK,QAAU,iBAAiB,SAAW,KAC3C,gBAAoB,KAAK,KAAK,KAAK,SACnC,GAAI,KAAK,QAAU,GAAK,YAAc,GAAK,YAAc,IACrD,CAAC,OAAO,UAAU,aACpB,KAAM,IAAI,OACN,gFAC+B,KAAK,WAc1C,GAXA,KAAK,UAAY,iBAAiB,yBAA2B,GAC7D,KAAK,aAAe,iBAAiB,aACrC,KAAK,qBACD,iBAAiB,sBAAwB,KAAK,QAClD,KAAK,sBAAwB,iBAAiB,sBAC9C,KAAK,sBAAwB,iBAAiB,uBAAyB,EAEvE,KAAK,mBACD,CAAA,kBAAiB,qBAAuB,IAC5C,KAAK,gBACD,iBAAiB,kBAAoB,GACrC,CAAC,KAAK,oBAAsB,CAAC,KAAK,gBACpC,KAAM,IAAI,OACN,wGAKR,UACE,MAAO,yBAII,yBAA4C,IACvD,GAAI,MAAM,IAAI,WACZ,KAAM,IAAI,OACN,4DAGN,uBAA2B,GAAI,oBAAmB,kBAGlD,MAAA,MAAM,oBAAmB,QAElB,wBAIH,SACJ,IACE,KAAK,OAAS,KAAM,WAAU,aAAa,aAAa,CACtD,MAAO,KAAK,uBAAyB,KAAO,GACA,KAAK,sBACjD,MAAO,cAGT,KAAM,IAAI,OACN,iDAAiD,EAAE,WAGzD,GAAI,CAAC,KAAK,OACR,KAAM,IAAI,OAAM,2CAGlB,mBAEK,OAAe,cAAiB,OAAe,mBAGpD,GAFA,KAAK,aAAe,GAAI,gBAEpB,CAAC,KAAK,aAGR,KAAK,aAAe,KAAK,aAAa,mBAC7B,KAAK,aAAa,aAAe,KAAK,aAC/C,KAAM,IAAI,OACN,wCACa,KAAK,yBACP,KAAK,aAAa,cAGnC,iBAAqB,KAAK,aAAa,wBAAwB,KAAK,QACpE,KAAK,SAAW,KAAK,aAAa,iBAClC,KAAK,SAAS,QAAU,KAAK,QAAU,EACvC,KAAK,SAAS,sBAAwB,KAAK,sBAC3C,aAAa,QAAQ,KAAK,UAC1B,KAAK,SAAW,GAAI,cAAa,KAAK,SACtC,KAAK,SAAW,GAAI,cAAa,KAAK,cAIlC,QACJ,GAAI,KAAK,SACP,MAAO,CAAC,MAAO,KAAM,KAAM,IAG7B,oDAGuB,KAAM,MAAK,eAClC,GAAI,KAAK,oBACP,aAAiB,KAAK,aAAa,eAAe,eAClD,kBAAoB,KAAK,4BACrB,SAAU,CAAC,KAAK,UAAW,KAAK,qBAAsB,IAE5D,GAAI,KAAK,iBACP,aAAiB,KAAK,aAAa,eAAe,eAClD,eAAiB,KAAK,4BAClB,SAAU,CAAC,KAAK,UAAY,KAAK,QAAS,IAGhD,MAAO,CACL,MAAO,CAAC,YAAe,kBAAmB,SAAY,gBACtD,KAAM,SAMJ,WACJ,MAAQ,MAAM,MAAK,QAAQ,WAIf,gBAEZ,kBAAsC,iBACA,iBAClB,EACpB,MAAO,IAAI,SAAQ,UACjB,eAAmB,YAAY,KACzB,KAAK,oBACP,MAAK,SAAS,sBAAsB,KAAK,UAErC,KAAK,SAAS,KAAO,WACvB,QAAQ,CAAC,cAAe,gBAE1B,cAAc,KAAK,KAAK,SAAS,MAAM,EAAG,KAAK,wBAE7C,KAAK,iBACP,MAAK,SAAS,uBAAuB,KAAK,UAC1C,cAAc,KAAK,KAAK,SAAS,UAI/B,EAAE,gBAAkB,KAAK,WAC3B,eAAc,YACd,QAAQ,CAAC,cAAe,kBAEzB,KAAK,QAAU,KAAK,aAAe,OAK1C,OACO,KAAK,UACR,MAAK,SAAW,GAChB,KAAK,SAAS,aACd,KAAK,aAAa,QACd,KAAK,QAAU,MAAQ,KAAK,OAAO,YAAY,OAAS,GAC1D,KAAK,OAAO,YAAY,GAAG,QAMjC,UACE,KAAM,IAAI,OAAM,mDAIlB,gBACE,MAAO,MAAK,aAGN,oBACN,cAAkB,MAAM,GAAG,gBACV,GAAI,cAAa,MAAM,OAAS,WACjD,MAAA,OAAM,QAAQ,UAAa,SAAS,IAAI,KAAM,EAAI,YAC3C,SAGD,4CAEN,SAAa,GAAI,cAAa,aAAK,cAAc,QAEjD,MAAA,MAAK,IAAI,SAAU,KAAK,OAAS,SAAS,QACnC,QAAO,KAAM,wBCvOxB,aA0BoC,cAQlC,6CAGE,QACA,GAHqB,KAAA,mBAAA,mBACA,KAAA,aAAA,aATf,KAAA,SAAW,GAEX,KAAA,OAAS,GASX,KAAK,eAKP,GAJA,KAAK,OAAS,GACd,KAAK,SACD,CAAC,KAAK,aAAa,aAAc,KAAK,aAAa,aACvD,KAAK,WAAa,SAAS,CAAC,GAAI,SAC5B,KAAK,aAAa,YAEpB,uBACI,KAAK,aAAa,YAAc,EAAM,KAAK,mBAAmB,0BACtC,KAAK,aAAa,aAAe,EACzD,KAAK,mBAAmB,sBACJ,GAAI,oBAAsB,kBACzB,GAAI,qBAAuB,eAC/B,eAAiB,iCAChB,oBAAsB,gBAC5C,KAAK,QAAU,SACX,CAAC,gBAAiB,eAAgB,cAAe,cACjD,CAAC,EAAG,QAER,MAAK,QAAU,SAAS,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAKhD,UACE,MAAO,qBAII,wCAC2D,IACtE,GAAI,MAAM,IAAI,WACZ,KAAM,IAAI,OACN,4DAGN,GAAI,CAAC,oBAIH,GADA,mBAAqB,SAAS,cAAc,SACxC,CAAC,aAAa,aAAe,CAAC,aAAa,aAC7C,KAAM,IAAI,OACN,0GAGN,mBAAmB,MAAQ,aAAa,YACxC,mBAAmB,OAAS,aAAa,aAE3C,mBAAuB,GAAI,gBAAe,mBAAoB,cAG9D,MAAA,MAAM,gBAAe,QAEd,oBAIH,SACA,KAAK,aAAa,YACpB,aAAK,OACA,KAAK,aAAa,aAAe,QAC7B,KAAK,aAAa,aAAe,cACtC,IACI,+BAA+B,KAAK,aAAa,sDAI3D,IACE,KAAK,OAAS,KAAM,WAAU,aAAa,aAAa,CACtD,MAAO,CACL,SAAU,KAAK,aAAa,SAC5B,WAAY,KAAK,aAAa,WAC1B,KAAK,aAAa,WAClB,OACJ,MAAO,KAAK,mBAAmB,MAC/B,OAAQ,KAAK,mBAAmB,mBAKpC,KAAA,GAAE,QAAU,iDAAiD,EAAE,UACzD,EAGR,GAAI,CAAC,KAAK,OACR,KAAM,IAAI,OAAM,uCAIlB,IACE,KAAK,mBAAmB,UAAY,KAAK,oBAEzC,QAAQ,IAAI,OACZ,KAAK,mBAAmB,IAAM,OAAO,IAAI,gBAAgB,KAAK,QAGhE,MAAA,MAAK,mBAAmB,OAExB,KAAK,SAAW,GAET,GAAI,SAAc,UAEvB,KAAK,mBAAmB,iBAAmB,KACzC,kBAKA,QACJ,GAAI,KAAK,SACP,MAAO,CAAC,MAAO,KAAM,KAAM,IAG7B,QACA,IACE,IAAM,gBAAQ,WAAW,KAAK,6BAE9B,KAAM,IAAI,OACN,4CAA4C,KAAK,UAAU,MAEjE,GAAI,KAAK,OACP,IACE,MAAO,CAAC,MAAO,KAAK,mBAAmB,KAAM,KAAM,aAEnD,KAAM,IAAI,OAAM,oCAAoC,EAAE,mBAEtD,IAAI,cAGN,OAAO,CAAC,MAAO,IAAK,KAAM,IAItB,eAIN,MAAI,CAAA,CAAA,MAAK,aAAa,aAAe,KAAK,aAAa,cAClD,MAAK,mBAAmB,QAAU,KAAK,aAAa,aACpD,KAAK,mBAAmB,SAAW,KAAK,aAAa,eAO5D,wBACE,MAAO,MAAK,KACV,kBAAgC,IAAI,UAAU,WAAW,gBAEzD,aAAe,MAAM,cACjB,cAAe,KAAK,QAAS,KAAK,WAAY,KAAK,SACnD,YAEJ,UAAc,aAAa,MAC3B,MAAO,cAAa,QAAQ,MAAM,MAAM,WAMtC,WACJ,MAAQ,MAAM,MAAK,QAAQ,MAI7B,OACE,WAAe,KAAK,OAAO,YAE3B,OAAO,QAAQ,OAAS,MAAM,QAE9B,IACE,KAAK,mBAAmB,UAAY,kBAEpC,QAAQ,IAAI,OACZ,KAAK,mBAAmB,IAAM,KAEhC,KAAK,SAAW,GAIlB,UACE,KAAM,IAAI,OAAM,gEC5NpB,uBCAA,aAoB6C,cAmB3C,iBACE,MAAO,IAAI,eAAc,KAAM,2BAxCnC,aAuD4B,gBAG1B,gCACE,QADoB,KAAA,SAAA,SAEpB,KAAK,KAAO,GAAI,mBAAkB,SAAU,WAG9C,UACE,MAAO,MAAK,KAAK,eAGb,QACJ,MAAO,MAAK,KAAK,2BApErB,aAwEgC,mBAI9B,gCAEE,QADY,KAAA,SAAA,SAA0C,KAAA,UAAA,UAHxD,KAAA,UAAY,GAOZ,UACE,MAAO,GAAG,KAAK,SAAS,uBAAuB,KAAK,mBAGhD,QACJ,gBAAoB,KAAM,MAAK,SAAS,OACxC,GAAI,YAAY,KACd,MAAI,MAAK,YAAc,GACd,GAKT,MAAK,YAAY,KAAK,KAAK,WAC3B,KAAK,UAAY,GACV,IAET,UAAc,YAAY,MAAM,MAAM,KAAK,WAK3C,MAAM,GAAK,KAAK,UAAY,MAAM,GAClC,eAAmB,OAAM,MAAM,EAAG,IAChC,KAAK,YAAY,KAAK,MAExB,MAAA,MAAK,UAAY,MAAM,MAAM,OAAS,GAE/B,uBC7GX,aAsBgD,cAU9C,aACE,MAAO,IAAI,cAAa,qBAjC5B,aAgD2B,gBAGzB,sBACE,QADoB,KAAA,SAAA,SAEpB,KAAK,KAAO,GAAI,kBAAiB,UAGnC,UACE,MAAO,MAAK,KAAK,eAGb,QACJ,MAAO,MAAK,KAAK,0BA7DrB,aAuF+B,mBAM7B,sBACE,QACA,GAF6B,KAAA,SAAA,SAEzB,MAAM,IAAI,cACZ,KAAK,QAAU,GAAI,aAAY,cAG/B,IAAO,eAAyB,yBAChC,KAAK,QAAU,GAAI,eAAc,SAGrC,UACE,MAAO,GAAG,KAAK,SAAS,yBAGpB,QACJ,gBAAoB,KAAM,MAAK,SAAS,aAExC,GAAI,YAAY,KACd,MAAO,GAEP,MAAQ,YAAY,MAGtB,SACA,MAAI,OAAM,IAAI,cACZ,KAAO,KAAK,QAAQ,OAAO,MAAO,CAAC,OAAQ,KAE3C,KAAO,KAAK,QAAQ,MAAM,OAAO,KAAK,MAAM,SAE9C,KAAK,YAAY,KAAK,MACf,uBC3HX,aAqCuC,mBAIrC,yBAEkD,IAChD,QAFY,KAAA,KAAA,KACA,KAAA,QAAA,QAEZ,aAAK,OACA,eAAgB,aACZ,OAAM,IAAI,cACL,eAAgB,OAAQ,eAAgB,MACzC,IACT,IAAM,wEAEV,KAAK,OAAS,QAAQ,QAAU,EAEhC,KAAK,UAAY,QAAQ,WAAa,KAAO,KAG/C,UACE,MAAO,cAAc,KAAK,YAGtB,QACJ,GAAI,KAAK,QAAY,MAAK,eAAgB,YAClB,KAAK,KAAK,WACV,KAAK,KAAK,MAChC,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,UAAc,GAAI,SAAoB,mBACpC,QAAY,KAAK,OAAS,KAAK,UAC/B,GAAI,KAAK,eAAgB,YAGvB,QAAQ,GAAI,YAAW,KAAK,KAAK,MAAM,KAAK,OAAQ,YAMpD,eAAmB,GAAI,YACvB,WAAW,OAAS,QAClB,SAA0C,WAAW,OAOrD,GAHI,eAAgB,cAClB,MAAO,GAAI,YAAW,OAEpB,CAAE,gBAAgB,aACpB,MAAO,QAAO,GAAI,WAAU,sCAE9B,QAAQ,OAEV,WAAW,QAAU,OACZ,OAAO,GAAI,OAAM,YAE1B,WAAW,QAAU,OACZ,OAAO,GAAI,OAAM,MAAM,OAIhC,YAAc,KAAK,KAAK,MAAM,KAAK,OAAQ,KAG3C,WAAW,kBAAkB,SAE/B,KAAK,OAAS,MAEhB,MAAO,CAAC,MAAQ,KAAM,OAAQ,KAAM,MC/ExC,4CAC0D,IACxD,0BAEK,MAAO,MAAS,SACnB,UAAY,IAEZ,WAAa,IAAgB,IAC7B,YAAc,0BAA0B,MAE1C,aAAiB,KAAM,cAAK,MAAM,UAAW,aAC7C,GAAI,SAAS,IACX,eAAmB,GAAI,YAAW,KAAM,UAAS,eACjD,MAAO,IAAI,mBAAkB,WAAY,aAEzC,MAAM,IAAI,OAAM,SAAS,YAK7B,8BAAkC,UAChC,UAAa,CACX,OAAQ,QAAQ,OAChB,QAAS,QAAQ,QACjB,KAAM,QAAQ,KACd,KAAM,QAAQ,KACd,YAAa,QAAQ,YACrB,MAAO,QAAQ,MACf,SAAU,QAAQ,SAClB,SAAU,QAAQ,SAClB,UAAW,QAAQ,WAErB,MAAO,QCvCH,6BACJ,MAAQ,OAAO,SAAW,UAAa,OAAO,OAAO,EAAG,KAAO,UCtBjE,mBAAA,aA6BoC,YASlC,2BAE2D,IACzD,QAFY,KAAA,MAAA,OACS,KAAA,QAAA,aAIjB,YACJ,GAAI,YAAY,KAAK,QAAU,MAAM,IAAI,YAEvC,OAAmB,cACnB,KAAK,MAAQ,GAAG,aAAc,KAAK,MAAiB,OAAO,IAI7D,MAAO,IAAI,mBAAkB,KAAK,MAAsB,KAAK,yBCpDjE,aA4BmC,YAQjC,4BAE+D,IAC7D,QAFqB,KAAA,IAAA,IACA,KAAA,YAAA,iBAQjB,YACJ,MAAI,aAAY,KAAK,KACX,GAAI,gBAAe,KAAK,IAAe,KAAK,aAC/C,WAEE,iBAAiB,KAAK,IAAK,KAAK,eCsDvC,8BAC0C,IAC9C,MAAO,IAAI,YAAW,GAAI,eAAc,QAAS,WA2B7C,iBAEJ,SAAa,qBAAqB,GAClC,MAAO,uBAAsB,SAAY,MA+DrC,+BAEJ,MAAO,uBAAsB,UAC3B,QAAY,KAAM,cAClB,MAAO,sBAAqB,IAAM,IAAI,UAkC1C,uDAGE,MAAO,gBAAe,OAAO,mBAAoB,cAqCnD,4CAEE,MAAO,oBAAmB,OAAO,kBCrRnC,aAAgB,QEgBV,4CAEC,MAAM,QAAQ,YACjB,WAAS,CAAC,YAEZ,UAAO,QAAQ,IACT,GAAK,MACP,aAAK,OACD,EAAE,QAAU,YACZ,IAAM,GACF,mECVd,eAAkB,qBAAa,yBAnB/B,aAoCoC,eAMlC,cACE,QANK,KAAA,UAAY,GAGX,KAAA,SAAW,GAIjB,KAAK,KAAO,GAAI,aAAY,KAAM,YAGpC,0BAEM,KAAK,UACP,MAAK,SAAW,GACZ,MAAM,IAAI,YACZ,qBAAa,KACT;;;gCAYR,WAAe,GAEf,MAAA,MAAK,KAAK,IAAI,OAAQ,CAAC,OAAQ,MAAO,SAAU,IAEzC,OAST,mCAGE,UACA,GAAI,QAAU,UAAY,QAAU,MAAQ,OAAO,OAAS,GACxD,aAAK,SAAS,OAAO,KACvB,kBACK,OAA0B,IAAI,GAAK,aAAK,aAAa,IAE1D,MAAQ,KAAK,MAAM,cAAe,MAAO,WAEzC,OAAQ,KAAK,MAAM,OAAsB,MAAO,OAGlD,MAAO,CAAC,OAAQ,MAAO,MAAO,OAIhC,eACE,eAAmB,KAAK,KAAK,IAAI,QACjC,WAAW,WAIb,eACE,GAAI,KAAK,KAAK,IAAI,SAChB,eAAmB,KAAK,KAAK,IAAI,QACjC,WAAW,YAIf,gCAGE,KAAK,KAAK,IAAI,OAAQ,CAAC,OAAQ,MAAO,SAAU,IAGlD,aACE,MAAO,MAAK,KAAK,kBAGb,cACJ,MAAO,MAAK,SAAS,QAEvB,iBACE,IAAO,MAAO,oBAAsB,KAAK,KAAK,IAAI,QAElD,GAAI,QAAU,aACZ,eACI,KAAK,SAAS,mBAAmB,KAAK,mBAEtC,KAAK,SAAS,mBAAmB,KAAK,QAC1C,MAAO,sBAAa,uBAAuB,WAAY,YAGzD,MAAO,MAAK,KAAK,IAAI,QAAQ,OAG/B,cACE,SAAa,KAAK,SAAS,EAAE,oBACX,KAClB,GAAI,EAAE,QAAU,SACd,IAEE,YAAe,KAAsB,IAAI,GAAK,aAAK,aAAa,cAEhE,KAAM,IAAI,OAAM,oDAGpB,MAAO,QAAO,EAAE,MAAsB,EAAE,MAAO,aAIjD,+BAEE,WAAe,KAAK,MAAM,OAAQ,MAAO,OACzC,MAAO,YAAS,qBAAqB,OAAQ,MAAO,MAAO,MAG7D,oBACE,GAAI,KAAK,KAAK,IAAI,SAChB,IAAO,oBAAsB,KAAK,KAAK,IAAI,QAEvC,oBAAsB,MACxB,MAAK,YAAY,mBAAmB,KAAK,QACzC,KAAK,YAAY,mBAAmB,KAAK,SAG3C,KAAK,KAAK,OAAO,SAIrB,0CACE,WAAe,WAAW,OAE1B,GAAI,KAAK,KAAK,IAAI,SAChB,eAAmB,KAAK,KAAK,IAAI,QAEjC,WAAW,WAEP,WAAW,SAAW,GACxB,KAAK,YAAY,cAKjB,SACJ,UAAc,aAAK,MACnB,IACA,aAAiB,aAAK,MAAQ,MAC9B,MAAO,CAAC,UAGV,SACE,MAAO,CAEL,WAAY,GACZ,QACI,CAAC,uHAKT,iBACE,iBAAiB,CAAC,WAAY,SAE9B,aAAiB,KAAK,SAAS,UAAU,QACzC,MAAO,YAAU,UAAU,MAAO,UAGpC,WAEA,iBACE,MAAO,IAIT,UACE,MAAO,OAAM,2BCxNjB,GAAA,UAAA,eAAA,CAAA,QAAA,IAAA,QAAA,aAAA,IAAA,aAAA,mBAAA,IAAA,mBAAA,SAAA,IAAA,SAAA,QAAA,IAAA,QAAA,UAAA,IAAA,UAAA,UAAA,IAAA,UAAA,aAAA,IAAA,aAAA,YAAA,IAAA,YAAA,SAAA,IAAA,SAAA,aAAA,IAAA,aAAA,QAAA,IAAA,QAAA,QAAA,IAAA,QAAA,YAAA,IAAA,YAAA,YAAA,IAAA,YAAA,aAAA,IAAA,aAAA,QAAA,IAAA,QAAA,aAAA,IAAA,aAAA,SAAA,IAAA,SAAA,UAAA,IAAA,UAAA,UAAA,IAAA,UAAA,cAAA,IAAA,cAAA,UAAA,IAAA,UAAA,sBAAA,IAAA,sBAAA,iBAAA,IAAA,iBAAA,QAAA,IAAA,QAAA,SAAA,IAAA,SAAA,SAAA,IAAA,SAAA,cAAA,IAAA,cAAA,WAAA,IAAA,aCsBM,6BACJ,iBAAqB,GAAI,cAAa,KAAK,QAC3C,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,EACjC,aAAa,GAAK,KAAK,IAAI,KAAK,IAElC,MAAO,cAGF,SAAY,OACjB,IAAO,GAAK,KAAK,kBACE,KAAK,QAExB,iBAAiB,EAAG,OAEpB,iBAAmB,GAAI,cAAa,aAAK,cAAc,EAAE,eAC1C,WAAW,KAAK,IAAI,EAAE,QAAQ,OAC7C,MAAA,cAAe,cAAc,QAEtB,WAAW,WAAW,aAAc,EAAE,MAAO,sBAGf,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,MCtBR,2CAEJ,MAAO,oCAEL,aAAiB,qBAAa,2BAA2B,OAAQ,mBAE9C,SAAS,qBACN,aAAK,eAAe,qBACvB,aAAK,cAAc,iBAGlC,aAAK,uBAAuB,MAA0B,kBAE5C,OAAO,aACP,OAAO,gBAEJ,aAAK,eAAe,iBACpB,aAAK,eAAe,uBAEd,qBAAa,iBAAiB,OAAQ,yBACtC,qBAAa,iBAAiB,OAAQ,UAE7D,GAAI,eAAe,OAAS,eAAe,SAAW,EACpD,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,OAAO,GAAK,IAAG,MAAM,EAAI,MAAM,QAAS,MAAM,EAAI,MAAM,aAG1D,WAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,GACnC,QAAY,aAAK,WAAW,EAAG,WAAY,oBAE9B,IAAI,MAAM,CAAC,OACxB,eAAe,QAAQ,GAAK,KAAK,GAAK,GACtC,WAAe,aAAK,WAAW,KAAM,MAAO,eAE/B,IAAI,MAAM,CAAC,OACxB,eAAe,QAAQ,GAAK,KAAK,GAAK,GACtC,WAAe,aAAK,WAAW,KAAM,MAAO,UAE5C,OAAO,GAAK,IAAG,MAAM,QAAS,MAAM,SAIxC,MAAO,CAAC,OAAQ,WC7Cd,wBAEJ,IAAO,OAAQ,kBAAW,MACnB,WAAM,YAAQ,gBAEJ,SAAQ,KAAK,IAAI,MAAK,QAAQ,gBAC9B,SAAQ,KAAK,IAAI,MAAK,QAAQ,mBAE3B,SAAQ,eAAe,MAAK,MAAO,sBAEvC,SAAQ,KAAK,IAAI,YAAY,QAK7C,MAAA,UAAQ,mBAAqB,CAC3B,KAAM,SAAQ,eAAe,MAAK,MAAO,UAAW,UACpD,KAAM,SAAQ,eAAe,MAAK,MAAO,UAAW,WAG/C,YAGF,kBAAoC,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,UCpBR,qCAEgB,WACpB,GAAI,QAAU,aACZ,UAAa,OAAM,SAAS,MAAO,iBACtB,OAAM,SAAS,MAAO,WAEnC,MAAO,UAAQ,CAAC,OAAQ,CAAC,KAAA,MAAM,KAAA,OAAO,QAAA,WAGxC,WAAe,aAAK,oBAAoB,aAAK,cAAc,OAAQ,OAEnE,MAAO,UAAQ,eAAe,MAAO,MAAO,QClBxC,yBAEJ,IAAO,OAAQ,kBAAW,MACnB,GAAK,OAEZ,MAAA,UAAQ,OAAO,EAAE,QAEV,CAAC,OAAQ,EAAE,OAAQ,MAAO,EAAE,MAAO,MAAO,EAAE,OAG9C,mBAAqC,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,WCbR,qBAEJ,IAAO,OAAQ,kBAAW,MACnB,cAAS,aAEH,SAAQ,KAAK,IAAI,OAAM,QAAQ,mBAAmB,aAC/C,SAAQ,KAAK,IAAI,MAAK,QAAQ,OAK9C,MAAO,UAAQ,eAAe,MAAK,MAAO,MAAK,MAAO,SAGjD,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OCZR,sBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,OAAS,MAGhB,GAAI,QAAU,aACZ,GAAI,EAAE,QAAU,YACd,MAAO,WAAS,CAAC,OAAQ,CAAC,GAAI,QAAA,WAGhC,oBAAwB,OAAM,SAAS,EAAE,MAAO,EAAE,cACnC,OAAK,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,oBAGtD,SAAQ,CAAC,OAAQ,CAAC,KAAM,OAAQ,KAAM,iBAAkB,QAAA,WAE5D,MAAA,UAAQ,8BAA8B,iBACtC,SAAQ,8BAA8B,QAE/B,OAIT,GAAI,EAAE,QAAU,aACd,aAAiB,MAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,kBAC5B,OAAK,CAAC,OAAQ,CAAC,EAAG,UAAW,QAAA,SAAS,MAAO,CAAC,SAE7D,MAAA,UAAQ,8BAA8B,UAE/B,OAGT,GAAI,CAAC,aAAK,gBAAgB,EAAE,MAAO,QAGjC,WAAe,UAAS,CAAC,OAAQ,CAAC,GAAI,QAAA,WACtC,MAAO,CAAC,OAAQ,OAAO,OAAQ,MAAO,OAAO,MAAO,OAGtD,GAAI,QAAU,SACZ,WAAe,SAAQ,KAAK,IAAI,EAAE,QAAQ,oBACrB,WAAW,KAAK,QACrC,MAAO,UAAQ,eAAe,EAAE,MAAO,QAAS,cAGlD,GAAI,QAAU,QAIZ,UAAc,SAAQ,KAAK,IAAI,EAAE,QAAQ,YAC5B,aAAK,aAAa,CAAC,GAAI,EAAE,gCAEJ,6BAC9B,OAAW,IAAM,EAAK,EAAI,GAAG,EAAE,MAAO,GAAI,MAAO,KAAM,QAE3D,MAAO,UAAQ,eAAe,YAAa,OAAQ,YAGrD,KAAM,IAAI,OAAM,iCAAiC,EAAE,YAAY,SAG1D,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,QCxDR,6DAGJ,MAAI,cAAe,KACV,EAAE,OAAQ,qBACf,IAAO,EAAG,GAAK,kBACI,SAEnB,iBAAiB,CAAC,EAAG,GAAI,MAEzB,UAAc,WAAW,KAAK,IAAI,EAAE,QAAQ,aAC9B,WAAW,KAAK,IAAI,EAAE,QAAQ,cAE7B,OAAS,EAAE,+BAGtB,WAAW,EAAE,MAAO,EAAE,MAAO,MAAO,MAAO,QAE/C,MAAO,YAAW,eAAe,YAAa,OAAQ,aAInD,EAAE,OAAQ,qBACf,IAAO,EAAG,GAAK,kBACI,SAEnB,GAAI,EAAE,QAAU,aAAe,EAAE,QAAU,aACzC,cAAkB,OACd,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAS,WAAY,MAAO,CAAC,MAAO,6BAEnC,WAAW,KAAK,IAAI,UAAU,cAEtC,cAAc,mBAAmB,WACjC,cAAc,mBAAmB,eAG3C,WAAW,KAAK,IAAI,MAAM,QAAQ,iBAElC,WAAW,KAAK,IAAI,MAAM,QAAQ,iBAEpB,OACd,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAS,WAAY,MAAO,CAAC,MAAO,6BAEnC,WAAW,KAAK,IAAI,UAAU,cAEtC,cAAc,mBAAmB,WACjC,cAAc,mBAAmB,eAG3C,WAAW,KAAK,IAAI,MAAM,QAAQ,iBAElC,WAAW,KAAK,IAAI,MAAM,QAAQ,mDAEgB,YAClD,EAAE,MAAO,EAAE,MAAO,UAAW,UAAW,UAAW,sBAGnD,WAAW,eAAe,YAAa,UAAW,2BAGlD,WAAW,eAAe,YAAa,UAAW,uBAEvC,SACX,CAAC,OAAQ,CAAC,KAAM,WAAY,KAAM,YAAa,QAAS,aAE5D,MAAA,YAAW,8BAA8B,WACzC,WAAW,8BAA8B,WACzC,WAAW,8BAA8B,YACzC,WAAW,8BAA8B,YAElC,YAEP,UAAc,WAAW,KAAK,IAAI,EAAE,QAAQ,aAC9B,WAAW,KAAK,IAAI,EAAE,QAAQ,cAE7B,OAAS,EAAE,+BAGtB,WAAW,EAAE,MAAO,EAAE,MAAO,MAAO,MAAO,QAE/C,MAAO,YAAW,eAAe,YAAa,OAAQ,cAStD,4CAEJ,MAAO,0DAGL,gBAAoB,qBAAa,2BAA2B,OAAQ,mBACjD,aAAK,cAAc,wBACnB,YAAY,qBACT,aAAK,eAAe,4BAEnB,aAAK,uBAAuB,UAAW,2BACvC,aAAK,uBAAuB,UAAW,2BAEvC,qBAAa,iBAAiB,OAAQ,4BACtC,qBAAa,iBAAiB,OAAQ,mBAE/C,qBAAa,uBAAuB,UAAW,iBAC/C,qBAAa,uBAAuB,UAAW,iBAE/C,OAAO,gBACJ,aAAK,eAAe,cAEvB,OAAO,gBACJ,aAAK,eAAe,QAErC,GAAI,eAAe,OAAS,eAAe,SAAW,EACpD,UAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,SAAa,EAAI,MAAM,YACV,EAAI,MAAM,cAGnB,IAAG,MAAM,KAAO,GAAI,MAAM,KAAO,EAAI,GAAI,MAAM,KAAO,GACnD,MAAM,KAAO,EAAI,IAExB,eAAe,GAAK,OAAO,KAC3B,eAAe,GAAK,OAAO,SAG7B,WAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,QAAY,aAAK,WAAW,EAAG,WAAY,oBAE9B,IAAI,MAAM,CAAC,OACxB,eAAe,QAAQ,GAAK,KAAK,GAAK,GACtC,WAAe,aAAK,WAAW,KAAM,MAAO,eAE/B,IAAI,MAAM,CAAC,OACxB,eAAe,QAAQ,GAAK,KAAK,GAAK,GACtC,WAAe,aAAK,WAAW,KAAM,MAAO,mBAGxC,IAAG,MAAM,OAAS,GAAI,MAAM,OAAS,EAAI,GAAI,MAAM,OAAS,GACzD,MAAM,OAAS,EAAI,IAE1B,eAAe,GAAK,SAAS,KAC7B,eAAe,GAAK,SAAS,KAGjC,MAAO,CAAC,eAAgB,eAAgB,cCjKrC,YAAgB,6BAA8B,OAAU,EAAI,kBAE/D,8BAA+B,2BACtB,EAAC,KAAM,MAAQ,MAAO,KAAM,MAAQ,eAG9B,iBAAiB,IAAK,QAAS,0BAEX,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,OCdR,wEAGJ,gBAAoB,aAAK,cAAc,sBACvB,aAAK,oBAAoB,KAAM,cAE/C,UAAa,EAAG,EAAI,MAAM,OAAQ,KAChC,UAAc,MAAM,GACpB,GAAI,MAAQ,EACV,KAAM,IAAI,OAAM,iCAGlB,GAAI,OAAS,KACX,SAGE,YAAc,EAChB,QAAQ,QAAU,YAAY,GAE9B,QAAQ,QAAU,EAItB,MAAO,SAGH,8DAEa,IACjB,YAAgB,KAAK,MAAM,WACX,KAAK,MAAM,UAEZ,OAAO,CAAC,QAAS,MAAO,WAAW,OAElD,UAAa,EAAG,EAAI,QAAS,IAC3B,UAAa,EAAG,EAAI,QAAS,KAC3B,UAAc,KAAK,IAAI,EAAG,GAC1B,GAAI,MAAQ,EACV,KAAM,IAAI,OAAM,iCAGlB,GAAI,OAAS,KACX,SAGE,aACF,OAAO,IAAI,EAAG,EAAG,OAEb,WAAW,KAAO,EACpB,OAAO,IAAI,OAAO,IAAI,EAAG,OAAS,WAAW,IAAI,EAAG,GAAI,EAAG,OAE3D,OAAO,IAAI,OAAO,IAAI,EAAG,OAAS,EAAG,EAAG,OAMhD,MAAO,QCpDH,oCAEJ,MAAO,uBACL,cACI,aAAK,uBAAuB,MAA0B,OAAO,QACjE,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,UAAU,GAAK,IAAG,OAAO,GAAI,OAE/B,MAAO,YCAL,yCAEJ,MAAO,EAAE,OAAQ,MAAO,qBACtB,IAAO,GAAK,OAEZ,GADA,iBAAiB,EAAG,MAChB,EAAE,QAAU,UAAY,QAAU,SACpC,KAAM,IAAI,OAAM,wDAGlB,eAAmB,gBACJ,WAAW,KAAK,IAAI,EAAE,QAAQ,aAC/B,aAAK,cAAc,EAAE,cACpB,OAAS,EAAE,gBACR,aAAK,kBAAkB,OAAQ,OACjD,UAAa,EAAG,EAAI,MAAO,EAAE,EAC3B,UAAU,GAAK,IAAG,OAAO,GAAI,OAE/B,MAAO,YAAW,eAAe,EAAE,MAAO,OAAQ,YAahD,uDAEJ,MAAO,EAAE,OAAQ,MAAO,qBACtB,IAAO,GAAK,OAEZ,GADA,iBAAiB,EAAG,MAChB,EAAE,QAAU,UAAY,QAAU,SACpC,KAAM,IAAI,OAAM,wDAGlB,eAAmB,gBACJ,WAAW,KAAK,IAAI,EAAE,QAAQ,cAC9B,OAAS,EAAE,gBACR,UAAU,OAAQ,OAAQ,OAC5C,MAAO,YAAW,eAAe,EAAE,MAAO,OAAQ,YCrD/C,aAAiB,sBAAsB,IAAQ,KAAK,KAAK,WAC5C,wBAAwB,KAAM,qBAEV,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,eCNS,sBAAsB,IAAQ,KAAK,IAAI,WAC3C,wBAAwB,IAAK,mBAET,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,iBCNW,sBAAsB,IAAQ,KAAK,MAAM,YAC7C,wBAAwB,MAAO,uBAEX,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,kBCNW,sBAAsB,IAAQ,KAAK,MAAM,YAC7C,wBAAwB,MAAO,uBAEX,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,QCTR,0DAGJ,WAAe,OAAO,mBAAoB,KAAK,OAC/C,UAAa,EAAG,EAAI,OAAO,KAAM,EAAE,GACjC,WAAe,OAAO,WAAW,eAEH,OAAO,iBACpB,YAAY,cACV,YAAY,gBACV,WAAW,WAAW,CAAC,SAAU,aACtD,YAAY,GAAK,WAAW,OAAO,cAEnC,kBAAsB,KAAK,WAAW,aACtC,OAAO,OAAO,GAAK,KAAK,OAAO,eAGjC,MAAO,QCdF,gBACH,6BAA6B,OAA2B,EAAI,EAAK,EAAI,aAErE,iBAAiB,QAAS,YAAa,KAAwB,sBAExB,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,oBCPV,6BAA6B,OAA2B,EAAI,EAAK,EAAI,SAErE,iBAAiB,KAAM,SAAU,KAAwB,mBAErB,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OCXR,sCAEJ,UAAc,MAAO,OAAU,KAAM,UAEtB,aAAK,oBAAoB,IAAK,WAC7C,OAAO,GAAK,MACZ,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,OAAO,GAAK,OAAO,EAAI,GAAK,MAG9B,MAAO,QCPF,YAAgB,sBAAsB,IAAQ,KAAK,IAAI,UAC3C,wBAAwB,IAAK,mBAET,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,MCTR,kDAGJ,SAAa,aAAK,uBACd,MAA0B,aAAK,cAAc,WAEjD,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,GACjC,WAAe,EAAI,iBACT,MAAM,QAChB,UAAa,EAAG,EAAI,WAAY,EAAE,GAChC,UAAc,MAAM,OAAS,GACzB,MAAQ,OACV,OAAM,OAGV,KAAK,GAAK,MAEZ,MAAO,MCdF,gBAAoB,6BACtB,iBAAoB,KAAK,IAAI,OAAQ,kBACnB,iBAAiB,QAAS,2BAEN,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,sBCPa,6BACtB,iBAAoB,KAAK,IAAI,OAAQ,kBACnB,iBAAiB,QAAS,2BAEN,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,uBCPV,6BAA8B,iBAAoB,OAAS,4BAE3D,8BAA+B,2BACtB,EACL,KAAM,MAAQ,MAAQ,MAAQ,MAC9B,KAAM,MAAQ,MAAQ,MAAQ,mBAKlC,iBAAiB,SAAU,aAAc,oCAED,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,WCdR,sCAEJ,aACI,aAAK,kBAAkB,GAAuB,QAClD,MAAO,cAAa,GAAI,OAAQ,SAAU,MAAO,QAG7C,qBAEJ,IAAO,OAAQ,kBAAW,MACnB,GAAK,OAEZ,iBAAiB,EAAG,OAEpB,UAAc,SAAQ,KAAK,IAAI,EAAE,QAAQ,sBACjB,QAAQ,MAAO,EAAE,MAAO,EAAE,OAElD,MAAO,UAAQ,eAAe,SAAU,EAAE,MAAO,KAG5C,cAAgC,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,oBCvBV,6BAA8B,OAAW,IAAM,EAAK,EAAI,aAExD,iBAAiB,SAAU,aAAc,KAAsB,uBAEvB,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,WCVR,yDAGJ,UAAc,OAAO,aACP,aAAK,cAAc,iBAChB,aAAK,eAAe,mBAClB,aAAK,eAAe,iBAExB,aAAK,uBAChB,MAA0B,aAAK,cAAc,WAEjD,UAAa,EAAG,EAAI,MAAO,EAAE,GAC3B,QAAY,aAAK,WAAW,EAAG,MAAO,iBAGb,GAAI,OAAM,IAAI,QACvC,WAAa,EAAG,GAAI,OAAO,OAAQ,KACjC,OAAO,IAAK,IAAI,KAAK,KAGvB,aAAiB,aAAK,WAAW,OAAQ,MAAO,YAChD,OAAO,UAAY,MAAM,GAE3B,MAAO,QCnBH,0BAKJ,IAAO,OAAQ,MAAO,kBAAW,MAC1B,GAAK,QACL,MAAQ,MAEf,iBAAiB,EAAG,aAEpB,UAAc,EAAE,MAAM,gBAEK,GAAI,OAAM,OACrC,UAAa,EAAG,EAAI,SAAS,OAAQ,IACnC,SAAS,GAAK,EAAE,MAAM,KAAK,IAG7B,WAAe,SAAQ,KAAK,IAAI,EAAE,QAAQ,cAC3B,cAAc,OAAQ,EAAE,MAAO,EAAE,MAAO,KAAM,iBAE9C,SAAQ,MAAM,OAAQ,SAAU,EAAE,OACjD,MAAO,CAAC,OAAQ,MAAO,SAAU,MAAO,EAAE,OAGrC,oBAAsC,CAC3C,WAAY,UACZ,YAAa,MACb,WAAY,YC7BR,qDAIJ,0BACI,qBAAa,0BAA0B,OAAQ,wBAClC,WAAW,OAAQ,iBACpB,aAAK,oBACD,aAAK,cAAc,UAAW,qBAC/B,aAAK,cAAc,aAEtC,UAAa,EAAG,EAAI,QAAQ,OAAQ,EAAE,GACpC,WAAe,EAAI,iBACR,EACX,UAAa,EAAG,EAAI,WAAY,EAAE,EAChC,OAAQ,MAAM,OAAS,GAEzB,QAAQ,GAAK,MAGf,MAAO,CAAC,QAAS,SAAU,UAGvB,qBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,KAAM,UAAY,MAEzB,iBAAiB,EAAG,QAEpB,UAAc,EAAE,MAAM,YACT,aAAK,eAAe,KAAM,EAAE,mBAErB,qBAAa,mBAAmB,KAAM,qBACtC,eACJ,0BACgB,GAC5B,aAAe,MACjB,WAAY,WAAU,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,KAAM,eAC3D,wBAAwB,KAAK,WAC7B,cAAgB,qBAAa,iBAAiB,cAAc,OAAQ,QAGtE,UAAc,SAAQ,KAAK,IAAI,UAAU,QAAQ,QAC1C,QAAS,SAAU,UACtB,SAAS,UAAU,MAAO,UAAU,MAAO,MAAO,2BAEpC,SAClB,MAAI,WACF,aAAc,qBAAa,qBAAqB,SAAU,OAG5D,wBAAwB,QACpB,GAAK,SAAQ,8BAA8B,IAExC,SAAQ,eAAe,YAAa,SAAU,SAGhD,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OCnER,2CAGJ,kBAAsB,QAAU,iCACI,MAAQ,MAAQ,MAAO,8BACvB,KAAO,OAAS,MAAO,EAE3D,GAAI,eAAiB,6BACjB,4BACF,MAAO,cAAK,oBAAoB,EAAG,OAGrC,gBAAoB,KAAK,IAAI,KAAK,KAAM,MAAO,OAAS,eACzC,aAAK,oBAAoB,YAAa,OAEjD,KAAO,OAAS,QAAS,GAG3B,OAAO,IAGT,OAAO,GAAK,MACZ,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,OAAO,GAAK,OAAO,EAAI,GAAK,MAE9B,MAAO,QCtBF,cAAkB,sBAAsB,IAAQ,EAAI,KAAK,KAAK,YAChD,wBAAwB,MAAO,uBAEX,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,QCNR,gDAGJ,gBAAoB,mBAAW,iBAAiB,MAAO,MAAO,aAC/C,aAAK,cAAc,eACjB,aAAK,eAAe,OAErC,GAAI,aACF,eAAmB,mBAAW,kBAAkB,MAAO,UAEvD,MAAI,SAAU,SACJ,KAAsB,MAAM,WAAY,WAAa,QAGvD,KAAoB,SAAS,WAAY,WAAa,QAGhE,gBAAoB,QAAU,SAC1B,qBAAa,uBAAuB,MACpC,WAEU,OAAO,MAAO,MAAO,oBACpB,OAAO,KAAM,OAC5B,UAAa,EAAG,EAAI,OAAO,KAAM,EAAE,GACjC,WAAe,OAAO,WAAW,SACnB,OAAO,IAAI,SAAoB,IAAM,MAAM,IACzD,OAAO,IAAI,MAAM,IAAI,GAAG,OAAQ,GAAG,QAGrC,MAAI,SAAU,SACL,qBAAa,uBAAuB,OAAO,QAE7C,OAAO,OAGV,uBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,MAAO,MAAQ,MAEtB,iBAAiB,EAAG,SAEpB,kBAAwB,mBAAW,iBAAiB,EAAG,MAAO,MAC9D,mBAAW,kBAAkB,EAAG,OAAQ,OAExC,SAAa,SAAQ,KAAK,IAAI,EAAE,QAAQ,eACxB,UAAU,KAAM,OAAQ,MAAO,EAAE,MAAO,EAAE,OAC1D,MAAO,UAAQ,eAAe,MAAO,EAAE,MAAO,SAGzC,gBAAkC,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,+BCvDuB,6BAA8B,QACjE,SAAa,EAAI,EACjB,MAAO,MAAO,0BAGZ,iBAAiB,kBAAmB,+CAEa,CACnD,WAAY,kBACZ,YAAa,MACb,WAAY,oBCbR,uDAGJ,WAAe,OAAO,SAAU,KAAK,OAErC,UAAa,EAAG,EAAI,OAAO,KAAM,KAC/B,QAAY,OAAO,WAAW,UAEL,GAAI,OAAM,IAAI,QACvC,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,OAAO,GAAK,IAAI,GAAK,QAAQ,GAAK,MAAM,GAE1C,OAAO,IAAI,KAAK,IAAI,GAAG,QAAS,GAAG,KAGrC,MAAO,QCZF,YACH,6BAA8B,iBAAoB,OAAS,uBAE3D,8BAA+B,2BACtB,EAAC,KAAM,MAAQ,MAAO,KAAM,MAAQ,eAE9B,iBAAiB,IAAK,QAAS,0BAEX,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,OCTR,6BAGJ,aAA2B,GAAI,OAAM,KAAK,MAC1C,UAAa,EAAG,EAAI,SAAS,OAAQ,IACnC,SAAS,GAAK,KAAK,MAAM,GAAK,KAAK,GAErC,WAAe,OAAO,SAAU,KAAK,OACrC,UAAa,EAAG,EAAI,OAAO,OAAO,OAAQ,EAAE,GAC1C,WAAe,OAAO,WAAW,eAEH,GAAI,OAAM,KAAK,MAC7C,UAAa,EAAG,EAAI,YAAY,OAAQ,IACtC,YAAY,GAAK,OAAO,GAAK,KAAK,MAAM,GAG1C,kBAAsB,KAAK,WAAW,aAEtC,OAAO,OAAO,GAAK,KAAK,OAAO,eAEjC,MAAO,QCvBH,4CAKJ,YAAgB,OAAO,OAAO,OAAS,gBACjB,CAAC,EAAE,OAAS,QAAS,qBACvB,aAAK,uBAAuB,OAAQ,MAAQ,kBACzC,aAAK,uBAAuB,QAAS,MAAQ,GAEpE,UAAa,EAAG,EAAI,MAAO,KACzB,WAAe,EAAI,UACN,EAAE,SAAS,OAAQ,OAAS,gBACgB,GACzD,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,UAAU,KAAK,CAAC,MAAO,KAAK,GAAI,MAAO,IAEzC,UAAU,KAAK,QAAU,GAAE,MAAQ,EAAE,OAErC,cAAkB,EAAI,WACL,YAAY,SAAS,UAAW,UAAY,eACzC,eAAe,SAAS,UAAW,UAAY,GACnE,UAAa,EAAG,EAAI,EAAG,IACrB,SAAS,GAAK,UAAU,GAAG,MAC3B,YAAY,GAAK,UAAU,GAAG,MAKlC,gBAAoB,OAAO,QAC3B,MAAA,aAAY,YAAY,OAAS,GAAK,EAE/B,CACL,OAAO,YAA4B,OAAQ,aAC3C,OAAO,YAA4B,QAAS,iBCpC1C,6CAOJ,UAAc,aAAK,eAAe,KAAM,OAAO,YAyD9B,CAAC,EAAG,MAAM,GAAI,GAC/B,UAAa,EAAG,EAAI,MAAO,IACzB,SAAS,IAAM,MAAM,GAEvB,SAAS,GAAK,MAAM,OACpB,UAAa,MAAQ,EAAG,EAAI,MAAM,OAAQ,IACxC,SAAS,IAAM,MAAM,GAKvB,mBAAgD,WAGhC,GAAI,YAAW,MAAM,oBAEjB,GAAI,cAAa,SAAU,MAAO,sBAGtB,cACb,SAAS,KAAO,GAAK,SAAS,KAAO,EACxD,UAAa,EAAG,EAAI,MAAM,OAAQ,KAEhC,YACA,GAAI,WAEF,QAAU,OAAO,GAAG,gBAEpB,eAAmB,GACnB,UAAa,EAAG,EAAI,SAAS,GAAI,IAC/B,UAAa,EAAG,EAAI,SAAS,GAAI,IAC/B,WAAW,KAAK,YAAY,IAAI,EAAG,EAAG,IAG1C,QAAU,WAAW,KAAK,KAI5B,GAAI,eAAe,WAAa,OAC9B,QAAQ,GAAK,eAAe,cAE5B,gBAAoB,OAAO,KAAK,gBAAgB,OAChD,eAAe,SAAW,YAC1B,QAAQ,GAAK,YACb,cAAc,KAAK,IAOvB,mBAAuB,SAAS,QAChC,eAAe,GAAK,OAAO,KAAK,gBAAgB,OAChD,iBAAqB,GAAI,cAAa,eAAgB,OACtD,cAAc,QAAQ,yBACpB,UAAa,EAAG,EAAI,SAAS,GAAI,IAC/B,UAAa,EAAG,EAAI,SAAS,GAAI,IAC/B,aAAa,IAAI,YAAY,IAAI,EAAG,mBAAoB,GAAI,EAAG,EAAG,KAOxE,gBAAoB,MAAM,QAC1B,MAAA,aAAY,OAAS,eAAe,GAE7B,CACL,aAAc,aAAa,OAC3B,YACA,SEtJJ,cAAgB,QE2BhB,gBAAgB,MAAO,IAAM,GAAI,gBAAkB,GCT5C,SACH,gBAAgB,IAAK,IAAQ,IAAM,EAAI,GAAM,KAAK,IAAI,IAAM,aAEzB,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,MCLR,0BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,OAAS,MAEhB,iBAAiB,CAAC,GAAI,aAEtB,UAAc,aAAK,cAAc,EAAE,aACrB,SAAQ,KAAK,IAAI,EAAE,QAAQ,eACzB,aAAK,uBAAuB,UAAW,OAEvD,UAAa,EAAG,EAAI,MAAM,OAAQ,IAChC,QAAQ,GAAK,MAAM,GAAK,EAAI,MAAQ,MAAM,GAAK,MAAM,GAGvD,MAAO,UAAQ,eAAe,EAAE,MAAO,UAAW,SAG7C,oBAAsC,CAC3C,WAAY,UACZ,YAAa,MACb,WAAY,sBCxBI,6BACd,iBAAoC,OAAS,EAAI,OAAS,OAAS,QAEjE,sBAEJ,IAAO,OAAQ,kBAAW,MACnB,EAAG,OAAS,OAEnB,iBAAiB,CAAC,EAAG,OAAQ,SAE7B,UAAc,SAAQ,KAAK,IAAI,EAAE,QAAQ,aAC3B,SAAQ,KAAK,IAAI,MAAM,QAAQ,gCAGzC,UAAU,EAAE,MAAO,MAAM,MAAO,MAAO,MAAO,EAAE,OAEpD,MAAO,UAAQ,eAAe,YAAa,EAAE,MAAO,YAG/C,gBAAkC,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,cCxBM,gBAAgB,KAAM,IAAQ,KAAK,IAAI,EAAG,gBAEtB,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,cCJV,gBAAgB,MAAO,IAAQ,KAAK,IAAI,KAAK,IAAI,EAAG,IAAK,gBAEpB,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,QCAR,wFAGJ,GAAI,cAAe,SACjB,MAAO,WAAS,CAAC,OAAQ,CAAC,GAAI,QAAA,WACzB,GAAI,cAAe,OACxB,MAAO,OAAK,CAAC,OAAQ,CAAC,GAAI,QAAA,WACrB,GAAI,cAAe,MACxB,MAAO,MAAI,CAAC,OAAQ,CAAC,GAAI,QAAA,WACpB,GAAI,cAAe,QACxB,MAAO,QAAM,CAAC,OAAQ,CAAC,GAAI,QAAA,WACtB,GAAI,cAAe,QACxB,MAAO,QAAM,CAAC,OAAQ,CAAC,EAAG,MAAO,wBAAyB,QAAA,WACrD,GAAI,cAAe,YACxB,MAAO,YAAU,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,kBAEzD,KAAM,IAAI,OACN,cAAc,6DCvBd,yBAIJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,OAAS,YAEF,aAAK,cAAc,EAAE,cACpB,aAAK,uBAAuB,MAAO,cACnC,aAAK,cAAc,QAElC,aAAK,OACD,QAAU,OACV,IAAM,kBAAkB,eAAe,sCACzB,EAAE,cAAc,sFAGlC,SAAQ,OAAO,EAAE,QAEjB,UAAc,SAAQ,KAAK,IAAI,EAAE,QAEjC,GAAI,MAAM,oBAAsB,MAC9B,UAAa,MAAM,mBAAmB,WACzB,MAAM,mBAAmB,KAEtC,MAAK,MAAQ,OACb,MAAK,MAAQ,OAGf,MAAO,CAAC,OAAQ,EAAE,OAAQ,MAAO,OAAQ,MAAO,EAAE,OAG7C,kBAAoC,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,WCjCR,2BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,GAAK,QACR,WAAY,YAAc,MAEjC,iBAAiB,CAAC,EAAG,GAAI,UAEzB,UAAc,EAAE,MAAM,aACR,EAAE,MAAM,mBAEF,WAAa,EAAE,MAAM,MAAQ,GAAK,EAAE,MAAM,MAAQ,eAClD,WAAa,EAAE,MAAM,MAAQ,GAAK,EAAE,MAAM,MAAQ,eAElD,WAAa,EAAE,MAAM,MAAQ,GAAK,EAAE,MAAM,MAAQ,eAClD,WAAa,EAAE,MAAM,MAAQ,GAAK,EAAE,MAAM,MAAQ,cAEnD,EAAE,MAAM,MAAM,EAAG,eACjB,EAAE,MAAM,MAAM,EAAG,cAElB,aAAK,cAAc,sBACnB,aAAK,cAAc,gCAGjC,YAAc,WAAa,YAAc,GAAK,YAAc,EAEhE,aAAK,OACD,OAAS,GAAK,OAAS,GAAK,oBAC5B,IAAM,uJAEsB,oBAAoB,gBAEpD,sBACI,UAAY,UAAY,EAAE,MAAM,MAAM,EAAG,IAAM,EAAE,MAAM,MAAM,EAAG,aACnD,kBAAkB,OAAO,CAAC,YAAa,cAExD,aAAK,OACD,cAAgB,YAChB,IAAM,kCAAkC,qBACjC,uCAAuC,EAAE,aACzC,EAAE,wBAAwB,6BACV,0BAE3B,aAAiB,WAAa,CAAC,UAAW,YAAa,aACzB,CAAC,UAAW,YAAa,sBACtC,WAAa,CAAC,UAAW,YAAa,aACzB,CAAC,UAAW,YAAa,iBAG3C,UAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,gBACjD,UAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,sBAE3C,WAAa,IAAI,MAAM,GAAK,IAAI,MAAM,WACxC,WAAa,IAAI,MAAM,GAAK,IAAI,MAAM,YACrC,WAAa,IAAI,MAAM,GAAK,IAAI,MAAM,YACtC,KAAK,IAAI,UAAW,qBAEnB,SAAQ,KAAK,IAAI,IAAI,QAAQ,iBAC7B,SAAQ,KAAK,IAAI,IAAI,QAAQ,kBAE5B,aAAK,eAAe,IAAI,kBACxB,aAAK,eAAe,IAAI,sCAEF,WACrC,CAAC,WAAW,GAAI,EAAG,WAAW,IAC9B,CAAC,WAAW,GAAI,WAAW,GAAI,kCACM,WACrC,CAAC,EAAG,WAAW,GAAI,WAAW,IAC9B,CAAC,WAAW,GAAI,EAAG,WAAW,SAErB,QAAU,gBACR,OAAO,CAAC,SAAU,QAAS,UAAW,IAAI,eAEzC,OAAO,iBACL,SAAQ,UAE1B,WAAc,EAAG,GAAK,SAAU,KAC9B,WAAc,EAAG,GAAK,QAAS,IAAM,UACnC,WAAc,EAAG,GAAK,SAAU,IAAM,UACpC,WAAc,EAAG,GAAK,UAAW,IAAM,WAErC,WAAe,KAAK,IAAI,GAAK,UAAW,gBACzB,KAAK,IAAI,GAAK,UAAW,iBACzB,KAAK,IAAI,GAAK,UAAW,WAExC,UAAa,GAAI,EAAI,OAAQ,IAC3B,UAAa,GAAI,EAAI,OAAQ,KAC3B,UAAU,EAEV,UAAa,GAAI,EAAI,OAAQ,KAC3B,iBAAqB,KAAK,IAAI,GAAI,UAAY,GAAK,oBAC9B,KAAK,IAAI,GAAI,UAAY,GAAK,YAE/C,UAAU,aAAe,EAAI,WAAa,EAAI,iBAE9C,UAAU,EAAI,WAAa,EAAI,WAAa,cAChD,OAAO,KAAO,KAEhB,QAAQ,GAAK,KAAQ,GAAI,SAAW,KAAO,OAQvD,MAAA,UAAQ,8BAA8B,KACtC,SAAQ,8BAA8B,KAG/B,SAAQ,eACX,SAAU,OAAO,MAAO,OAAO,QAG9B,sBAAwC,CAC7C,WAAY,YACZ,YAAa,MACb,WAAY,aCvHR,4BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,EAAG,KAAM,wBAA0B,QACtC,WAAY,WAAY,uBAAY,gBAAkB,iDAMzB,aAGhC,YAAY,CAAC,OAAQ,CAAC,EAAG,GAAI,MAAO,CAAC,WAAY,YAAa,QAAA,WAClE,QAAU,UAEN,MACF,QAAS,MAAI,CAAC,OAAQ,CAAC,EAAG,QAAS,EAAG,MAAO,QAAA,WAC7C,cAAc,KAAK,SACnB,QAAU,QAER,aACF,eAAgB,iBACZ,SAAS,QAAS,YAAY,uBAAwB,gBAC1D,cAAc,KAAK,SACnB,QAAU,eAGZ,YAAgB,eACd,SAAQ,8BAA8B,GAGxC,MAAO,SAGF,uBAAyC,CAC9C,WAAY,aACZ,YAAa,MACb,WAAY,oBC7CM,gBAAgB,KAAM,IAAQ,KAAK,KAAK,gBAEpB,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,cCLO,gBAAgB,MAAO,IAAQ,KAAK,MAAM,iBAEtB,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,QCJR,qBAEJ,IAAO,OAAQ,kBAAW,aACV,OAEhB,iBAAiB,OAAQ,QAEzB,SACI,QAAQ,IAAI,GAAK,SAAQ,KAAK,IAAI,EAAE,QAAQ,eACjC,OAAO,QAAQ,GAAG,MAAO,QAAQ,GAAG,eACnC,OAAO,OACvB,UAAa,EAAG,EAAI,QAAQ,OAAQ,KAClC,aAAiB,KAAK,GACtB,UAAa,EAAG,EAAI,QAAQ,OAAQ,IAClC,QAAQ,IAAM,SAAS,GAI3B,MAAO,UAAQ,eAAe,OAAO,MAAO,OAAO,MAAO,OAAO,QAG5D,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OCtBR,oBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,KAAM,UAAY,MAEzB,iBAAiB,EAAG,OAEpB,aAAiB,aAAK,eAAe,KAAM,EAAE,YAClC,sBACU,qBAAa,mBAAmB,KAAM,EAAE,MAAM,WAC1D,EACL,cAAgB,MAClB,IAAK,WAAU,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,KAAM,gBACpD,KAAO,qBAAa,iBAAiB,KAAK,OAAQ,EAAE,MAAM,SAG5D,qBAAa,2BAA2B,MAAO,KAAM,GAAG,MAAM,QAC9D,0BACI,qBAAa,0BAA0B,GAAG,MAAO,iBAClC,aAAK,cAAc,kBACzB,aAAK,oBAAoB,aAAK,cAAc,UAAW,GAAG,aAEzD,SAAQ,KAAK,IAAI,GAAG,QAAQ,OAC1C,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,GACjC,WAAe,EAAI,gBACT,MAAM,QAChB,UAAa,EAAG,EAAI,WAAY,EAAE,GAChC,UAAc,MAAM,OAAS,GAC7B,KAAM,MAAO,MAEf,KAAK,GAAK,KAGR,cAAgB,MAClB,SAAQ,8BAA8B,IAGxC,WAAe,SAAQ,eAAe,SAAU,GAAG,MAAO,MAE1D,GAAI,UACF,kBAAsB,qBAAa,qBAAqB,SAAU,yBAE9D,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,MAAO,iBAE1D,MAAA,UAAQ,8BAA8B,QAE/B,eAGT,MAAO,QAGF,cAAgC,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,MCzDR,oBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,KAAM,UAAY,MAEzB,iBAAiB,EAAG,OAEpB,aAAiB,aAAK,eAAe,KAAM,EAAE,YAClC,sBACU,qBAAa,mBAAmB,KAAM,EAAE,MAAM,WAC1D,EACL,cAAgB,MAClB,IAAK,WAAU,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,KAAM,gBACpD,KAAO,qBAAa,iBAAiB,KAAK,OAAQ,EAAE,MAAM,SAG5D,qBAAa,2BAA2B,MAAO,KAAM,GAAG,MAAM,QAC9D,0BACI,qBAAa,0BAA0B,GAAG,MAAO,iBAClC,aAAK,cAAc,kBACzB,aAAK,oBAAoB,aAAK,cAAc,UAAW,GAAG,aAEzD,SAAQ,KAAK,IAAI,GAAG,QAAQ,OAC1C,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,GACjC,WAAe,EAAI,kBACN,MAAM,QACnB,UAAa,EAAG,EAAI,WAAY,EAAE,GAChC,UAAc,MAAM,OAAS,GAC7B,OAAS,QAAU,MAErB,KAAK,GAAK,OAGR,cAAgB,MAClB,SAAQ,8BAA8B,IAGxC,WAAe,SAAQ,eAAe,SAAU,GAAG,MAAO,MAE1D,GAAI,UACF,kBAAsB,qBAAa,qBAAqB,SAAU,yBAE9D,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,MAAO,iBAE1D,MAAA,UAAQ,8BAA8B,QAE/B,eAGT,MAAO,QAGF,cAAgC,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,MC1DR,uBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,MAAQ,MAEf,iBAAiB,EAAG,UAEpB,SAAW,aAAK,eAAe,KAAM,EAAE,oBAClB,qBAAa,mBAAmB,KAAM,EAAE,MAAM,WAC1D,0BACuB,GAC5B,cAAgB,MAClB,IAAK,WAAU,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,KAAM,gBACpD,wBAAwB,KAAK,IAC7B,KAAO,qBAAa,iBAAiB,KAAK,OAAQ,GAAG,MAAM,SAG7D,KAAO,CAAC,KAAK,IACb,qBAAa,2BAA2B,SAAU,KAAM,GAAG,MAAM,QACjE,0BACI,qBAAa,0BAA0B,GAAG,MAAO,cAErC,aAAK,cAAc,eACtB,aAAK,oBAAoB,QAAS,oBAC5B,aAAK,cAAc,mBAExB,SAAQ,KAAK,IAAI,GAAG,QAAQ,OAC1C,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,GACjC,WAAe,EAAI,iBACT,MAAM,iBACD,EACf,UAAa,EAAG,EAAI,WAAY,EAAE,GAChC,UAAc,MAAM,OAAS,GACzB,MAAQ,OACV,OAAM,MACN,SAAW,GAGf,KAAK,GAAK,SAGZ,MAAA,yBAAwB,QACpB,GAAK,SAAQ,8BAA8B,IAExC,SAAQ,eAAe,SAAU,QAAS,MAG5C,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,SCpDR,uBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,MAAQ,MAEf,iBAAiB,EAAG,UAEpB,SAAW,aAAK,eAAe,KAAM,EAAE,oBAClB,qBAAa,mBAAmB,KAAM,EAAE,MAAM,WAC1D,0BACuB,GAC5B,cAAgB,MAClB,IAAK,WAAU,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,KAAM,gBACpD,wBAAwB,KAAK,IAC7B,KAAO,qBAAa,iBAAiB,KAAK,OAAQ,GAAG,MAAM,SAG7D,KAAO,CAAC,KAAK,IACb,qBAAa,2BAA2B,SAAU,KAAM,GAAG,MAAM,QACjE,0BACI,qBAAa,0BAA0B,GAAG,MAAO,cAErC,aAAK,cAAc,eACtB,aAAK,oBAAoB,QAAS,oBAC5B,aAAK,cAAc,mBAExB,SAAQ,KAAK,IAAI,GAAG,QAAQ,OAC1C,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,GACjC,WAAe,EAAI,gBACT,MAAM,iBACD,EACf,UAAa,EAAG,EAAI,WAAY,EAAE,GAChC,UAAc,MAAM,OAAS,GACzB,MAAQ,MACV,MAAM,MACN,SAAW,GAGf,KAAK,GAAK,SAGZ,MAAA,yBAAwB,QACpB,GAAK,SAAQ,8BAA8B,IAExC,SAAQ,eAAe,SAAU,QAAS,MAG5C,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,eCtDM,gBAAgB,KAAM,IAAQ,KAAK,KAAK,gBAEpB,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,cCLO,gBAAgB,MAAO,IAAQ,KAAK,MAAM,iBAEtB,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,cCLM,gBAAgB,KAAM,IAAQ,KAAK,KAAK,gBAEpB,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,iBCLW,6BACrB,iBAAoB,KAAK,MAAM,OAAQ,gBAEtB,iBAAiB,MAAO,uBAEJ,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,eCRO,gBAAgB,MAAO,IAAQ,KAAK,MAAM,iBAEtB,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,QCPR,+DAIJ,iBAAqB,SAAS,yBACV,SAAS,2BACN,SAAS,6BACV,SAAS,oCACD,SAAS,2CACV,SAAS,4BACvB,SAAS,QAAQ,YAChB,SAAS,QAAQ,kBAG5B,WAAa,MAAQ,OAAO,kBACP,OAAO,yBAElB,OAAO,SAAS,SAAU,kBACtB,OAAO,0BAGtB,SAAS,SAAS,GAAK,SAAS,SAAS,GAAK,SAAS,SAAS,oBAC3C,SAAS,SAAS,GAAK,SAAS,SAAS,oBACzC,SAAS,SAAS,GAE3C,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,GACxC,sBAA0B,EAAI,oCACL,EAAI,QAAQ,GACrC,UAAa,EAAG,EAAI,SAAS,WAAY,EAAE,EACzC,WAAc,EAAG,GAAK,SAAS,UAAW,EAAE,IAC1C,aAAiB,GAAK,aAAe,aACvB,KAAK,IAAI,EAAG,gBAEtB,KAAK,IAAI,SAAS,SAAU,sBAAwB,0BAChC,kBAAoB,GAAK,iBACjD,WAAc,EAAG,GAAK,SAAS,SAAU,EAAE,IACzC,aAAiB,GAAK,YAAc,cACtB,KAAK,IAAI,EAAG,gBAEtB,KAAK,IAAI,SAAS,QAAS,qBAAuB,sBACpC,sBACH,SACH,EACZ,WAAc,MAAO,GAAK,MAAO,IAAM,gBACrC,aAAiB,iBAAmB,GAAK,QAAQ,GACjD,WAAc,MAAO,GAAK,MAAO,IAAM,eACrC,aAAiB,SAAW,GAAK,QAAQ,SAC3B,QAAQ,SAAW,GAC5B,WAAa,OAAS,MAAQ,YACjC,YAAc,MACL,WAAa,OACtB,WAAY,MACZ,UAGJ,GAAI,MAAM,aACR,MAGJ,iBAAqB,gBAAkB,GAAK,iBAAmB,EAC/D,WAAW,cACP,WAAa,MAAQ,SAAW,OAAQ,cAKpD,MAAO,QAGH,yEAEoD,uBAChC,IACxB,iBAAqB,OAAO,SAAS,SAAU,sBAC1B,SAAS,yBACV,SAAS,2BACN,SAAS,6BACV,SAAS,oCACD,SAAS,2CACV,SAAS,4BACvB,SAAS,QAAQ,YAChB,SAAS,QAAQ,UAEpB,OAAO,OAAQ,MAAO,SACnC,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,EACxC,UAAa,EAAG,EAAI,SAAS,WAAY,EAAE,EACzC,WAAc,EAAG,GAAK,SAAS,UAAW,EAAE,IAC1C,aAAiB,GAAK,aAAe,aACzB,SACZ,KAAO,MAAQ,GACb,OAAS,eAGX,UACI,KAAK,IAAI,SAAS,SAAU,sBAAwB,UACxD,WAAc,EAAG,GAAK,SAAS,SAAU,EAAE,IACzC,aAAiB,GAAK,YAAc,cACxB,SACZ,KAAO,MAAQ,GACb,OAAS,cAEX,UACI,KAAK,IAAI,SAAS,QAAS,qBAAuB,mBACvC,OAAO,8BACJ,GAElB,WAAc,MAAO,GAAK,MAAO,IAAM,gBACrC,OAAW,GAAK,SAChB,WAAc,MAAO,GAAK,MAAO,IAAM,eACrC,OAAW,GAAK,eACF,KAAK,IAAI,EAAG,GAAI,GAAI,GAC9B,MAAQ,UACV,UAAW,MACP,iBACF,YAAc,oBACR,IAAI,SAAS,SAAW,IAAM,SAAS,QAAU,IAC3C,SAAS,WACb,EACH,IAAK,SAAS,QAAU,IAAM,SAAS,WAAa,EAEzD,YAAc,GAAK,qBAAuB,KAKlD,aAAa,IAAI,YAAa,EAAG,GAAI,GAAI,IAKjD,MAAO,cAGH,iEAIJ,gBAAoB,SAAS,yBACR,SAAS,yBACV,SAAS,0BACP,SAAS,6BACR,SAAS,6BACV,SAAS,mCACF,SAAS,2CACR,SAAS,2CACV,SAAS,8BACrB,SAAS,QAAQ,aACnB,SAAS,QAAQ,YAChB,SAAS,QAAQ,kBAG5B,WAAa,MAAQ,OAAO,kBACP,OAAO,yBAElB,OAAO,SAAS,SAAU,kBACtB,OAAO,0BAEC,SAAS,SAAS,GAAK,SAAS,SAAS,GAChE,SAAS,SAAS,GAAK,SAAS,SAAS,sBAEzC,SAAS,SAAS,GAAK,SAAS,SAAS,GAAK,SAAS,SAAS,oBAC3C,SAAS,SAAS,GAAK,SAAS,SAAS,oBACzC,SAAS,SAAS,GAE3C,cAAiB,EAAG,MAAQ,SAAS,UAAW,EAAE,OAChD,sBAA0B,MAAQ,oCACT,MAAQ,QAAQ,GACzC,gBAAmB,EAAG,QAAU,SAAS,WAAY,EAAE,QACrD,eAAkB,EAAG,OAAS,SAAS,SAAU,EAAE,QACjD,iBAAqB,OAAS,YAAc,mBAC5B,aAChB,KAAO,UAAY,GACjB,WAAa,cAEf,cACI,KAAK,IAAI,SAAS,QAAS,qBAAuB,gCAElD,kBAAoB,OAAS,mBACjC,aAAgB,EAAG,KAAO,SAAS,UAAW,EAAE,MAC9C,eAAmB,KAAO,aAAe,eAC3B,WACd,KAAO,QAAU,GACf,SAAW,eAEb,YACI,KAAK,IAAI,SAAS,SAAU,sBAAwB,4BAChC,kBAAoB,KAAO,iBACnD,aAAgB,EAAG,KAAO,SAAS,SAAU,EAAE,MAC7C,eAAmB,KAAO,YAAc,gBAC1B,WACd,KAAO,QAAU,GACf,SAAW,cAEb,YACI,KAAK,IAAI,SAAS,QAAS,qBAAuB,4BAE9B,gBAAkB,KAAO,6BAC/B,sBACH,SACH,EACZ,eAAkB,UAAW,OAAS,UACjC,QAAU,eACb,iBAAqB,iBAAmB,OAAS,QAAQ,GACzD,aAAgB,QAAS,KAAO,QAAS,MAAQ,gBAC/C,eAAmB,aAAe,KAAO,QAAQ,GACjD,aAAgB,QAAS,KAAO,QAC3B,MAAQ,eACX,eAAmB,WAAa,KAAO,QAAQ,SACjC,QAAQ,WAAa,SAOnC,GANK,WAAa,OAAS,MAAQ,YACjC,YAAc,MACL,WAAa,OACtB,WAAY,MACZ,UAEE,MAAM,aACR,MAGJ,GAAI,MAAM,aACR,MAGJ,GAAI,MAAM,aACR,MAGJ,iBAAqB,gBAAkB,QACvC,WAAW,cACP,WAAa,MAAQ,SAAW,OAAQ,eAOtD,MAAO,QAGH,2CAGJ,iBAAqB,OAAO,SAAS,SAAU,qBAC3B,SAAS,yBACR,SAAS,yBACV,SAAS,0BACP,SAAS,6BACR,SAAS,6BACV,SAAS,mCACF,SAAS,2CACR,SAAS,2CACV,SAAS,8BACrB,SAAS,QAAQ,aACnB,SAAS,QAAQ,YAChB,SAAS,QAAQ,KAEjC,cAAiB,EAAG,MAAQ,SAAS,UAAW,EAAE,MAChD,gBAAmB,EAAG,QAAU,SAAS,WAAY,EAAE,QACrD,eAAkB,EAAG,OAAS,SAAS,SAAU,EAAE,QACjD,iBAAqB,OAAS,YAAc,mBAC5B,aAChB,KAAO,UAAY,GACjB,WAAa,cAEf,cACI,KAAK,IAAI,SAAS,QAAS,qBAAuB,cACtD,aAAgB,EAAG,KAAO,SAAS,UAAW,EAAE,MAC9C,eAAmB,KAAO,aAAe,eAC3B,WACd,KAAO,QAAU,GACf,SAAW,eAEb,YACI,KAAK,IAAI,SAAS,SAAU,sBAAwB,YACxD,aAAgB,EAAG,KAAO,SAAS,SAAU,EAAE,MAC7C,eAAmB,KAAO,YAAc,gBAC1B,WACd,KAAO,QAAU,GACf,SAAW,cAEb,YACI,KAAK,IAAI,SAAS,QAAS,qBAAuB,qBAGvC,OAAO,8BACJ,GAElB,eAAkB,UAAW,OAAS,UACjC,QAAU,eACb,WAAe,OAAS,aACxB,aAAgB,QAAS,KAAO,QAAS,MAAQ,gBAC/C,SAAa,KAAO,WACpB,aAAgB,QAAS,KAAO,QAC3B,MAAQ,eACX,SAAa,KAAO,iBACN,KAAK,IAAI,MAAO,OAAQ,KAAM,KAAM,SAC9C,OAAS,UACX,UAAW,MACX,YACI,OAAS,sBAAwB,qBACjC,KAAO,sBAAwB,QAM3C,aAAa,IAAI,YAAa,MAAO,OAAQ,KAAM,KAAM,WAOnE,MAAO,cCrTH,wBAIJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,OACZ,iBAAiB,EAAG,WACpB,IAAO,WAAY,QAAS,UAAK,iBAAmB,gBAClC,EAElB,aAAK,OACD,qBAAa,+BAA+B,QAAS,WACrD,IAAM,wEACa,0BAA0B,cAEjD,aAAiB,qBAAa,kBAC1B,EAAE,MAA2C,WAAY,QACzD,UAAW,MAAK,qBAGpB,GAAI,SAAS,cAAgB,GAAK,SAAS,eAAiB,GACxD,aAAK,YAAY,SAAS,QAAS,SAAS,UAC9C,IAAM,UAAS,CAAC,OAAQ,CAAC,GAAI,QAAA,gBAE7B,YAAgB,SAAQ,KAAK,IAAI,EAAE,QAAQ,gBAC3B,aAAK,eAAe,EAAE,eACvB,MAAK,QAAS,EAAE,MAAO,EAAE,MAAO,SAAS,SAAU,OAClE,IAAM,SAAQ,eACV,SAAS,SAAU,EAAE,MAAO,QAAO,QAEzC,MAAO,KAGF,kBAAoC,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,UCpCR,yBAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,WAAY,QAAS,UAAK,gBAAiB,WAAY,WAC1D,MAEJ,iBAAiB,EAAG,aAEpB,eAAiB,UACb,YAAc,MAChB,YAAa,CAAC,EAAG,EAAG,IAGtB,aAAiB,qBAAa,kBAC1B,EAAE,MAAmD,WAAY,QACjE,WAAY,MAAK,gBAAiB,oBAEtB,SAAQ,KAAK,IAAI,EAAE,QAAQ,cAC5B,QACX,QAAS,EAAE,MAAO,EAAE,MAAO,aAAK,eAAe,EAAE,OAAQ,SAAU,OAEvE,MAAO,UAAQ,eAAe,OAAO,MAAO,UAAW,OAAO,QAGzD,oBAAsC,CAC3C,WAAY,UACZ,YAAa,MACb,WAAY,WChCR,6BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAI,cAAS,QACb,WAAY,QAAS,UAAK,UAAW,iBAAmB,MAE/D,iBAAiB,CAAC,GAAI,QAAQ,iBAE9B,aAAiB,qBAAa,kBAC1B,OAAM,MAAmD,WACzD,QAAS,UAAW,MAAK,6BAET,SAAS,yBACR,SAAS,yBACV,SAAS,wBACT,SAAS,yBACR,SAAS,yBACV,SAAS,0BACP,SAAS,6BACR,SAAS,6BACV,SAAS,mCACF,SAAS,2CACR,SAAS,2CACV,SAAS,8BACrB,qBAAuB,EAAI,SAAS,QAAQ,cAC7C,qBAAuB,EAAI,SAAS,QAAQ,YAC7C,sBAAwB,EAAI,SAAS,QAAQ,OACjD,OAAO,OAAM,MAAO,yBAET,EAAK,aAAc,aAAe,mBAE1C,SAAQ,WAAW,IAEjC,cAAiB,EAAG,MAAQ,SAAS,UAAW,EAAE,MAChD,gBAAmB,EAAG,QAAU,SAAS,WAAY,EAAE,QACrD,gBAAmB,EAAG,QAAU,SAAS,QAAS,EAAE,QAClD,cAAiB,EAAG,MAAQ,SAAS,SAAU,EAAE,MAC/C,cAAiB,EAAG,MAAQ,SAAS,QAAS,EAAE,OAE9C,kBAAsB,QAAU,qBACZ,MAAQ,mBACR,MAAQ,gBACd,EACd,eAAkB,EAAG,OAAS,qBACzB,QAAU,eACb,YAAiB,eAAgB,QAAU,YAC3C,GAAI,QAAU,GAAK,SAAW,SAAS,UACnC,KAAK,MAAM,WAAa,QAC1B,SAEF,aAAgB,EAAG,KAAO,sBACrB,MAAQ,gBACX,UAAe,aAAc,MAAQ,aACrC,GAAI,MAAQ,GAAK,OAAS,SAAS,WAC/B,KAAK,MAAM,SAAW,MACxB,SAEF,aAAgB,EAAG,KAAO,qBACrB,MAAQ,eACX,UAAe,aAAc,MAAQ,YACrC,GAAI,MAAQ,GAAK,OAAS,SAAS,UAC/B,KAAK,MAAM,SAAW,MACxB,SAGF,UACI,MAAM,IAAI,MAAO,QAAS,MAAO,MAAO,SAC5C,SAAW,QAIjB,GAAG,IACC,QAAU,cAAe,MAAO,QAAS,MAAO,MAAO,SAOrE,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,yBAA0C,CAC/C,WAAY,cACZ,YAAa,MACb,WAAY,eCzFR,4BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAI,cAAS,SACV,OACV,iBAAiB,CAAC,GAAI,QAAQ,eAC9B,IAAO,WAAY,QAAS,WAAO,eAElB,qBAAa,kBAC1B,EAAE,MAA2C,WAAY,QACzD,EAAmB,oBACF,SAAS,yBACV,SAAS,yBACR,SAAS,yBACV,SAAS,2BACN,SAAS,6BACV,SAAS,oCACD,SAAS,2CACV,SAAS,6BACtB,qBAAuB,EAAI,SAAS,QAAQ,YAC7C,sBAAwB,EAAI,SAAS,QAAQ,OAExD,OAAgB,EAAE,MAA2C,yBAE3C,EAAK,cAAe,oBAE3B,SAAQ,KAAK,IAAI,GAAG,QAAQ,aAC7B,OACV,GAAG,MAA2C,UAAW,QAE7D,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,EACxC,UAAa,EAAG,EAAI,SAAS,WAAY,EAAE,EACzC,YAAe,EAAG,IAAM,SAAS,SAAU,EAAE,IAC3C,YAAe,EAAG,IAAM,SAAS,QAAS,EAAE,KAE1C,cAAkB,IAAM,iBACN,IAAM,gBACV,EACd,WAAc,EAAG,GAAK,sBAAuB,IAAM,gBACjD,QAAa,WAAY,IAAM,aAC/B,GAAI,IAAM,GAAK,KAAO,SAAS,WAC3B,KAAK,MAAM,OAAS,IACtB,SAEF,WAAc,EAAG,GAAK,qBAAsB,IAAM,eAChD,QAAa,WAAY,IAAM,YAC/B,GAAI,IAAM,GAAK,KAAO,SAAS,UAC3B,KAAK,MAAM,OAAS,IACtB,SAGF,UAAc,MAAM,IAAI,EAAG,IAAK,IAAK,GACrC,SAAW,OAGf,GAAG,IAAI,QAAU,cAAe,EAAG,IAAK,IAAK,GAKrD,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,uBAAwC,CAC7C,WAAY,YACZ,YAAa,MACb,WAAY,cCpER,0BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,cAAO,OAAQ,WAAM,UAAY,OAE3C,aAAK,OACD,MAAK,MAAM,SAAW,SAAS,MAAM,OACrC,IAAM,gFAEV,aAAK,OACD,QAAU,MAAQ,MAAK,MAAM,SAAW,OAAO,MAAM,OACrD,IAAM,8EAEV,aAAK,OACD,SAAS,MAAQ,MAAK,MAAM,SAAW,QAAM,MAAM,OACnD,IAAM,6EAGV,iBAAiB,CAAC,EAAG,MAAM,SAAU,QAAO,QAAS,aAErD,IAAK,iBAAmB,MACpB,iBAAmB,MACrB,iBAAkB,MAGpB,UAAc,SAAQ,KAAK,IAAI,EAAE,QAAQ,aAC3B,SAAQ,KAAK,IAAI,MAAK,QAAQ,eAC5B,SAAQ,KAAK,IAAI,SAAS,QAAQ,aACpC,QAAQ,SAAQ,KAAK,IAAI,QAAM,QAAQ,OAC/B,GAAI,cAAa,CAAC,YACxB,OACZ,SAAQ,KAAK,IAAI,OAAO,QAAQ,OAChC,GAAI,cAAa,CAAC,YACN,GAAI,cAAa,MAAM,sBAEjB,QAAQ,mBACV,MAAM,qBACJ,QAAQ,mBACV,MAAM,YAEf,KACF,KACA,KACA,EACT,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,EAClC,QAAQ,GAAK,QAAQ,QAChB,OAAM,GAAK,MAAM,OAAS,MAAM,MAC7B,KAAK,KAAK,QAAQ,MAAQ,iBAC9B,MAAQ,eACV,MAAO,GAEL,IAAM,aACR,IAAK,GAEH,IAAM,aACR,IAAK,GAEH,IAAM,eACR,IAAK,GAGT,MAAO,UAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,SAG3C,oBAAsC,CAC3C,WAAY,eACZ,YAAa,MACb,WAAY,YCnER,+BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,WAAY,OAAS,MAE5B,iBAAiB,CAAC,GAAI,kBAEtB,UAAa,WAAW,OAAO,OAAU,EAAI,YAE5B,qBAAa,YAAY,EAAE,MAAO,WAAY,gBAC9C,qBAAa,YAAY,SAAS,OAAQ,WAAW,yBAElE,qBAAa,oBAAoB,EAAE,MAAO,WAAY,wBAEtD,qBAAa,oBAAoB,MAAO,WAAW,kBAEnD,qBAAa,aAAa,iBAAkB,MAAO,WAAW,kBAEhD,UAAQ,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,wBAE5D,WAAU,CAAC,OAAQ,CAAC,EAAG,WAAY,QAAA,SAAS,MAAO,CAAC,KAAM,gCAClC,UACxB,CAAC,OAAQ,CAAC,EAAG,aAAc,QAAA,SAAS,MAAO,CAAC,MAAO,2BACxC,QAAM,CACnB,OAAQ,CAAC,EAAG,qBACZ,QAAA,SACA,MAAO,CAAC,MAAO,iBAAkB,KAAM,aAGzC,MAAA,UAAQ,8BAA8B,WACtC,SAAQ,8BAA8B,aACtC,SAAQ,8BAA8B,qBAE/B,OAGF,yBAA2C,CAChD,WAAY,eACZ,YAAa,MACb,WAAY,iBC9CR,yBAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,SAAW,QACd,MAAQ,YAED,SAAQ,KAAK,IAAI,EAAE,QAAQ,mBACrB,SAAQ,KAAK,IAAI,QAAQ,QAAQ,eAGjD,aAAa,MAAO,YAAa,QAAQ,MAAO,QAAQ,MAAO,MAEnE,MAAO,UAAQ,eAAe,CAAC,MAAO,QAAQ,MAAO,SAGhD,mBAAqC,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,gBCtBM,gBAAgB,YAAa,aAC/C,cAAkB,MAClB,MAAI,IAAK,UAAU,aACV,UAAU,aAEZ,GAAK,UAAU,aAAe,UAAU,aAAe,gBAGxB,CACtC,WAAY,YACZ,YAAa,MACb,WAAY,iBCVV,OACE,IAAO,GAAK,KAAK,kBACE,KAAK,qBACH,GAAI,cAAa,aAAK,cAAc,EAAE,oBACvC,WAAW,KAAK,IAAI,EAAE,cAC7B,YAAY,mBAAmB,WAC/B,YAAY,mBAAmB,cAC3B,WAAW,KAAK,IAAI,MAAK,QAAQ,gBACjC,WAAW,KAAK,IAAI,MAAK,QAAQ,OAClD,UAAa,EAAG,EAAI,SAAS,OAAQ,KACnC,UAAa,SAAS,SACT,SAAS,GACtB,aAAa,GAAK,KAAK,MAAM,MAAM,OAGrC,MAAO,YAAW,WAAW,aAAc,EAAE,MAAO,6BAGZ,CAC5C,WAAY,WACZ,YAAa,MACb,WAAY,YCtBR,qBAEJ,IAAO,OAAQ,kBAAW,MACnB,cAAS,aAEH,SAAQ,KAAK,IAAI,OAAM,QAAQ,mBAAmB,aAC/C,SAAQ,KAAK,IAAI,MAAK,QAAQ,OAK9C,MAAO,UAAQ,eAAe,MAAK,MAAO,MAAK,MAAO,SAGjD,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OCXR,wBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,MAAQ,YAED,aAAK,eAAe,KAAM,OAAO,GAAG,OAAO,YAC1C,qBAAa,gBAAgB,OAAO,IAAI,GAAK,EAAE,OAAQ,OAEtE,GAAI,aAAK,cAAc,YAAc,EACnC,MAAO,UAAQ,eAAe,SAAU,OAAO,GAAG,MAAO,IAI3D,YAAgB,OAAO,OAAO,GAAK,aAAK,cAAc,EAAE,OAAS,GACjE,GAAI,QAAQ,SAAW,EACrB,MAAO,WAAS,CAAC,OAAQ,CAAC,EAAG,QAAQ,IAAK,QAAA,WAG5C,WAAe,QAAQ,IAAI,GAAK,EAAE,OAGlC,GAFA,qBAAa,uBAAuB,OAAQ,OAExC,QAAQ,GAAG,QAAU,aACvB,UAAc,QAAQ,IAAI,GAAO,MAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,kBAC7C,QAAQ,IAAI,GAAO,MAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,yBAEtC,SAAO,CAAC,OAAQ,MAAO,QAAA,SAAS,MAAO,CAAC,KAAM,sBAC9C,SAAO,CAAC,OAAQ,MAAO,QAAA,SAAS,MAAO,CAAC,KAAM,gBAG/D,SAAQ,CAAC,OAAQ,CAAC,KAAM,aAAc,KAAM,cAAe,QAAA,WAE/D,MAAA,OAAM,QAAQ,GAAK,SAAQ,8BAA8B,IACzD,MAAM,QAAQ,GAAK,SAAQ,8BAA8B,IACzD,SAAQ,8BAA8B,cACtC,SAAQ,8BAA8B,cAE/B,OAUT,aAAiB,QAAQ,IAAI,IAC3B,cAAkB,aAAK,cAAc,EAAE,MAAM,MAAM,cACrC,CAAC,GAAI,WACnB,MAAO,WAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,SAAS,MAAO,CAAC,WAInD,SACI,qBAAa,gBAAgB,SAAS,IAAI,GAAK,EAAE,OAAQ,GAE7D,YAAgB,aAAK,uBACjB,QAAQ,GAAG,MAAoB,aAAK,cAAc,WAEtD,GAAI,SAAS,GAAG,MAAM,KAAO,GAE3B,WAAa,EACb,SAAS,QAAQ,IACf,QAAY,SAAQ,KAAK,IAAI,EAAE,QAAQ,YAC1B,aAAK,cAAc,EAAE,OAElC,QAAQ,IAAI,IAAK,QACjB,QAAU,YAGZ,cAAgB,EAEhB,SAAS,QAAQ,IACf,UAAc,SAAQ,KAAK,IAAI,EAAE,QAAQ,YAE9B,EAEX,YAAe,EAAG,IAAM,EAAE,MAAM,GAAI,EAAE,KACpC,WAAe,IAAM,SAAS,GAAK,UACnC,YAAe,EAAG,IAAM,EAAE,MAAM,GAAI,EAAE,IACpC,QAAQ,OAAS,KAAO,MAAM,QAIlC,WAAa,EAAE,MAAM,KAIzB,kBACI,qBAAa,gBAAgB,QAAQ,IAAI,GAAK,EAAE,OAAQ,eAGxD,SAAQ,eAAe,cAAe,OAAO,GAAG,MAAO,SAE3D,MAAA,UAAS,QAAQ,GAAK,SAAQ,8BAA8B,IAErD,QAGF,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,UC5GR,sBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,QAAU,QACb,QAAS,UAAK,WAAY,UAAW,iBAAmB,MAE/D,iBAAiB,CAAC,EAAG,QAAS,UAE9B,gBAAoB,qBAAa,wBAAwB,qBACxC,qBAAa,kBAC1B,EAAE,MACF,OAAO,MAA2C,QAAS,UAAW,MACtE,gBAAiB,GAAuB,0BAEvB,SAAS,yBACV,SAAS,2BACN,SAAS,6BACV,SAAS,sBACf,SAAS,QAAQ,YAClB,SAAS,QAAQ,mBACT,SAAS,aAAe,iBAErC,GAAI,cAAa,SAAS,SAAU,EAAE,gBAE/B,aAAK,eAAe,EAAE,qBACjB,aAAK,eAAe,OAAO,oBAE5B,SAAS,cACX,eAAiB,SAAS,GAAK,SAAS,cACxC,eAAiB,SAAS,GAAK,iBAC3B,eAAiB,EAAI,SAAS,gBAChC,EAAE,QAAQ,cACZ,eAAiB,EAAE,QAAQ,GAAK,EAAE,QAAQ,cAC1C,eAAiB,EAAE,QAAQ,GAAK,iBAC5B,eAAiB,EAAI,EAAE,QAAQ,SAExC,SAAQ,KAAK,IAAI,EAAE,QAAQ,aAC3B,SAAQ,KAAK,IAAI,OAAO,QAAQ,aAChC,EAAE,OAEhB,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,GACxC,aAAiB,EAAI,sBACJ,EAAI,aACrB,WAAc,EAAG,GAAK,SAAS,UAAW,EAAE,IAC1C,aAAiB,SAAW,GAAK,oBAChB,GAAK,SAAS,aAAe,OAC9C,WAAc,EAAG,GAAK,aAAc,EAAE,IACpC,OAAW,SAAW,GAAK,eAC3B,GAAI,GAAK,GAAK,IAAM,SAAS,SAC3B,SAEF,aAAiB,GAAK,cAAc,YACnB,SAAW,GAAK,WACjC,WAAc,EAAG,GAAK,SAAS,SAAU,EAAE,IACzC,aAAiB,SAAW,GAAK,oBAChB,GAAK,SAAS,YAAc,QAC7C,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,OAAW,SAAW,GAAK,cAC3B,GAAI,GAAK,GAAK,IAAM,SAAS,QAC3B,SAEF,aAAiB,SAAW,GAAK,cAAc,YAC9B,SAAW,GAAK,oBAClB,SACf,WAAc,EAAG,GAAK,SAAS,WAAY,EAAE,IAC3C,SAAa,MAAM,SAAW,GAAK,gBACnC,WAAc,EAAG,GAAK,SAAS,YAAa,EAAE,GAC5C,MAAM,SAAW,GAAK,iBAClB,KAAO,MAAM,SAAW,IAE9B,UAAY,SAAS,iBAQjC,MAAO,UAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,OAG3C,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,QCrFR,qCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,IAAM,QACT,QAAS,UAAK,WAAY,gBAAiB,aAAe,MAEjE,iBAAiB,CAAC,EAAG,IAAK,wBAE1B,gBAAoB,qBAAa,wBAAwB,qBACxC,qBAAa,kBAC1B,EAAE,MAA2C,YAAa,QAC1D,EAAmB,MAAK,gBAAiB,GACzC,cAEG,aAAc,YAAa,aAAc,aAAe,wBACxC,SAAS,aAAe,kBACpC,GAAI,cAAa,SAAS,YAAa,mBAElC,SAAS,QAAQ,YAClB,SAAS,QAAQ,UAClB,SAAQ,KAAK,IAAI,EAAE,QAAQ,cAC1B,SAAQ,KAAK,IAAI,GAAG,QAAQ,YAE9B,GAAI,cAAa,EAAE,MAAO,EAAE,MAAO,aAClC,GAAI,cAAa,GAAG,MAAO,GAAG,MAAO,QAEnD,WAAc,EAAG,GAAK,aAAc,EAAE,IACpC,UAAc,KAAK,IAAI,EAAG,KAAK,KAAM,QAAS,IAAM,qBACtC,KAAK,IACf,SAAS,UAAY,UAAS,SAAW,OAAS,IAAM,cAE5D,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,UAAc,KAAK,IAAI,EAAG,KAAK,KAAM,SAAU,IAAM,oBACvC,KAAK,IACf,SAAS,SAAW,UAAS,QAAU,QAAU,IAAM,aAE3D,WAAc,EAAG,GAAK,SAAS,WAAY,EAAE,GAC3C,WAAc,EAAG,GAAK,SAAS,YAAa,EAAE,IAC5C,YAAc,EACd,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,EACxC,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,GAAK,aAAe,OACpC,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,GAAK,YAAc,QAC/B,eACF,SAAY,KAAK,IAAI,EAAG,GAAI,GAAI,IAC3B,MAAM,IAAI,EAAG,GAAI,GAAI,IAE1B,SAAY,KAAK,IAAI,EAAG,GAAI,GAAI,IAC3B,MAAM,IAAI,EAAG,GAAI,GAAI,KAKlC,GAAG,IAAI,QAAS,GAAI,GAAI,GAAI,MAMpC,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,+BAAiD,CACtD,WAAY,qBACZ,YAAa,MACb,WAAY,uBCrER,oCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAI,QAAU,QACd,WAAY,QAAS,UAAK,WAAY,iBAAmB,MAEhE,iBAAiB,CAAC,GAAI,QAAS,uBAE/B,kBAAsB,aAAK,eAAe,OAAO,iBAC/B,aAAK,eAAe,GAAG,mBAEvB,qBAAa,wBAAwB,qBACtC,qBAAa,kBAC1B,WAAY,OAAO,MAA2C,QAC9D,EAAmB,MAAK,gBAAiB,GAAO,gBAEzC,GAAI,cAAa,SAAS,QAAS,oBAC7B,GAAG,gBACH,SAAQ,KAAK,IAAI,GAAG,QAAQ,iBAC3B,SAAQ,KAAK,IAAI,OAAO,QAAQ,2BACpB,eAE5B,UACA,aACA,YACA,WACA,SACA,QACA,YACA,UACA,SACA,aACA,aACE,SACJ,YAAc,SAAS,WACvB,WAAe,aAAe,EAAI,SAAS,QAAQ,YACnC,YAAc,EAAI,SAAS,QAAQ,oBAE5B,cAAgB,4BAClB,GAAG,QAAQ,cACb,eAAiB,GAAG,QAAQ,GAAK,GAAG,QAAQ,cAC5C,eAAiB,GAAG,QAAQ,GAAK,iBAC7B,eAAiB,EAAI,GAAG,QAAQ,gBAClC,UAAU,cACZ,eAAiB,UAAU,GAAK,UAAU,cAC1C,eAAiB,UAAU,GAAK,iBAC5B,eAAiB,EAAI,UAAU,GAEtD,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,WAAc,EAAG,GAAK,WAAY,EAAE,GAClC,WAAc,EAAG,GAAK,SAAU,EAAE,IAChC,aAAiB,GAAK,aACR,KAAK,IAAI,EAAG,KAAK,KAAK,SAAW,qBAE3C,KAAK,IAAI,UAAY,cAAe,UAAY,cAEpD,WAAc,EAAG,GAAK,QAAS,EAAE,IAC/B,aAAiB,GAAK,cACR,KAAK,IAAI,EAAG,KAAK,KAAK,SAAW,oBAE3C,KAAK,IAAI,SAAW,aAAc,UAAY,qBAEpC,EACd,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,aAAe,SAE/B,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,YAAc,kBAE1B,aAAe,EAAI,WAAa,GAAK,WAAa,aACpC,MAAS,cAAe,EAAI,IAC1C,MAAS,aAAc,EAAI,IAAM,MAAQ,GAE7C,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,UAAc,SAAS,SAAW,eAAiB,WACpC,UAAU,UAAY,IACrC,SAAW,MAAQ,SAIzB,aAAiB,aAAe,EAAI,WAAa,GAC7C,WAAa,GAAK,eAAiB,GACvC,SAAS,UAAY,SAM7B,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,8BAAgD,CACrD,WAAY,oBACZ,YAAa,MACb,WAAY,sBCjGR,sBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,QAAU,QACb,QAAS,UAAK,WAAa,MAElC,iBAAiB,CAAC,EAAG,QAAS,UAE9B,aAAiB,qBAAa,kBAC1B,EAAE,MACF,OAAO,MAAmD,QAC1D,UAAW,QAGb,YACA,aACA,YACA,cACA,eACA,cACA,SACE,kBACa,QAAQ,cACT,QAAQ,YACT,QAAQ,MACb,GAAI,cAAa,SAAS,SAAU,EAAE,aAElC,SAAQ,KAAK,IAAI,EAAE,QAAQ,aAC3B,SAAQ,KAAK,IAAI,OAAO,QAAQ,aAChC,EAAE,gBAEC,aAAK,eAAe,EAAE,qBACjB,aAAK,eAAe,OAAO,OAEjD,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,GACxC,aAAiB,EAAI,SAAS,YACb,EAAI,EAAE,QAAQ,GAC/B,WAAc,EAAG,GAAK,SAAS,SAAU,EAAE,IACzC,aAAiB,SAAW,GAAK,EAAE,QAAQ,YAC1B,GAAK,SAAS,YAAc,SAC7C,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,OAAW,SAAW,GAAK,cAC3B,GAAI,GAAK,GAAK,IAAM,SAAS,QAC3B,SAEF,aAAiB,GAAK,cAAc,YACnB,SAAW,GAAK,SAAS,GAE1C,WAAc,EAAG,GAAK,SAAS,UAAW,EAAE,IAC1C,aAAiB,SAAW,GAAK,EAAE,QAAQ,YAC1B,GAAK,SAAS,aAAe,OAC9C,WAAc,EAAG,GAAK,aAAc,EAAE,IACpC,OAAW,SAAW,GAAK,eAC3B,GAAI,GAAK,GAAK,IAAM,SAAS,SAC3B,SAEF,aAAiB,SAAW,GAAK,cAAc,YAC9B,SAAW,GAAK,SAAS,GAC1C,WAAc,EAAG,GAAK,SAAS,SAAU,EAAE,IACzC,aAAiB,SAAW,GAAK,SAAS,qBACzB,GAAK,SAAS,YAAc,QAC7C,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,OAAW,SAAW,GAAK,cAC3B,GAAI,GAAK,GAAK,IAAM,SAAS,QAC3B,SAEF,aAAiB,SAAW,GAAK,cAAc,YAC9B,SAAW,GAAK,SAAS,oBAC3B,SACf,WAAc,EAAG,GAAK,SAAS,WAAY,EAAE,IAC3C,SAAa,MAAM,SAAW,IAC9B,WAAc,EAAG,GAAK,SAAS,YAAa,EAAE,GAC5C,MAAM,SAAW,KAAO,KAAO,MAAM,SAAW,IAElD,UAAY,SAAS,mBAUrC,MAAO,UAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,EAAE,QAG7C,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,QC3FR,sCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,IAAM,QACT,QAAS,UAAK,aAAe,MAEpC,iBAAiB,CAAC,EAAG,IAAK,0BAE1B,aAAiB,aAAK,eAAe,EAAE,iBACrB,aAAK,eAAe,GAAG,gBAExB,qBAAa,kBAC1B,EAAE,MAAmD,YAAa,QAClE,EAAmB,mBAEH,SAAS,yBACR,SAAS,yBACV,SAAS,wBACT,SAAS,yBACR,SAAS,yBACV,SAAS,eAElB,GAAI,cAAa,SAAS,YAAa,oBACjC,GAAG,6BACa,GAAG,iBACnB,SAAQ,KAAK,IAAI,GAAG,QAAQ,6BACZ,kBACjB,SAAQ,KAAK,IAAI,EAAE,QAAQ,yBACd,kBAEZ,SAAS,QAAQ,cAClB,SAAS,QAAQ,YAClB,SAAS,QAAQ,IAEhC,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,UAAc,KAAK,IAAI,EAAG,KAAK,KAAM,UAAW,IAAM,oBACxC,KAAK,IACf,SAAS,SAAW,UAAS,QAAU,SAAW,IAAM,sBAC3C,GAAK,KAEtB,WAAc,EAAG,GAAK,aAAc,EAAE,IACpC,UAAc,KAAK,IAAI,EAAG,KAAK,KAAM,QAAS,IAAM,qBACtC,KAAK,IACf,SAAS,UAAY,UAAS,SAAW,OAAS,IAAM,uBAC3C,GAAK,KAAO,SAE7B,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,UAAc,KAAK,IAAI,EAAG,KAAK,KAAM,SAAU,IAAM,oBACvC,KAAK,IACf,SAAS,SAAW,UAAS,QAAU,QAAU,IAAM,sBAC1C,GAAK,KAAO,SAE7B,WAAc,EAAG,GAAK,SAAS,WAAY,EAAE,IAC3C,aAAiB,GAAK,KAAO,SAE7B,WAAc,EAAG,GAAK,SAAS,YAAa,EAAE,IAC5C,YAAc,EACd,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,GACxC,aAAiB,EAAI,aACJ,EAAI,KAErB,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,GAAK,YAAc,kBAClB,GAAK,IAAM,kBACX,GAAK,KAAO,SAE7B,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,GAAK,aAAe,gBACnB,GAAK,IAAM,kBACX,GAAK,KAAO,SAE7B,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,GAAK,YAAc,iBAClB,GAAK,IAAM,kBACX,GAAK,KAAO,SAE7B,SAAW,QAAQ,SAAW,IAAM,SAAS,SAAW,OAKhE,SAAS,SAAW,IAAM,YAOpC,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,iCAAmD,CACxD,WAAY,uBACZ,YAAa,MACb,WAAY,wBCjGR,qCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAI,QAAU,QACd,UAAK,QAAS,YAAc,MAEnC,iBAAiB,CAAC,IAAK,yBAEvB,cAAkB,aAAK,eAAe,GAAG,qBACnB,aAAK,eAAe,OAAO,gBAEhC,qBAAa,kBAC1B,WAAY,OAAO,MACnB,QAAS,EAAmB,UAErB,GAAI,cAAa,SAAS,QAAS,oBAC7B,GAAG,6BACa,GAAG,iBACnB,SAAQ,KAAK,IAAI,GAAG,QAAQ,6BACZ,oBACf,SAAQ,KAAK,IAAI,OAAO,QAAQ,iCACb,eAEnC,UACA,YACA,aACA,YACA,WACA,QACA,SACA,QACA,YACA,SACA,UACA,SACA,YACA,aACA,aACE,kBACa,YAAc,EAAI,SAAS,QAAQ,aACrC,aAAe,EAAI,SAAS,QAAQ,YACnC,YAAc,EAAI,SAAS,QAAQ,KAEnD,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,WAAc,EAAG,GAAK,WAAY,EAAE,GAElC,WAAc,EAAG,GAAK,QAAS,EAAE,IAC/B,aAAiB,GAAK,eACR,KAAK,IAAI,EAAG,KAAK,KAAK,SAAW,oBAE3C,KAAK,IAAI,SAAW,aAAc,UAAY,aAGlD,WAAc,EAAG,GAAK,SAAU,EAAE,IAChC,aAAiB,GAAK,aACR,KAAK,IAAI,EAAG,KAAK,KAAK,SAAW,qBAE3C,KAAK,IAAI,UAAY,cAAe,UAAY,cAEpD,WAAc,EAAG,GAAK,QAAS,EAAE,IAC/B,aAAiB,GAAK,cACR,KAAK,IAAI,EAAG,KAAK,KAAK,SAAW,oBAE3C,KAAK,IAAI,SAAW,aAAc,UAAY,qBAEpC,EACd,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,YAAc,SAE9B,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,aAAe,SAE/B,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,YAAc,kBACb,KAAO,EAAI,KAAO,GAAK,KAAO,GAAK,KAAO,aACzC,MAAS,aAAc,EAAI,IACzC,MAAS,cAAe,EAAI,IAC5B,MAAS,aAAc,EAAI,IAAM,MAAQ,GAE7C,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,UAAc,SAAS,SAAW,WACnB,UAAU,UAAY,IACrC,SAAW,MAAQ,UAK3B,SAAS,KAAO,EAAI,KAAO,GAAK,KAAO,GAAK,KAAO,GAAK,IACpD,UAOd,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,gCAAkD,CACvD,WAAY,sBACZ,YAAa,MACb,WAAY,4BCzGK,gBAAgB,IAAK,IAAQ,KAAK,IAAI,eAElB,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,YCLM,gBAAgB,KAAM,IAAQ,KAAK,KAAK,gBAEpB,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OCLR,8BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,aAAO,MAAO,QAAU,QACxB,SAAU,OAAQ,oBAAsB,iDAEO,OAAM,eAC3C,MAAM,MAAM,0BAEG,gBAE5B,OAAO,CAAC,SAAU,WAAY,UAAW,aAAc,mBAE3C,SAAQ,KAAK,IAAI,MAAM,QAAQ,kBAC5B,SAAQ,KAAK,IAAI,OAAO,QAAQ,iBACjC,SAAQ,KAAK,IAAI,OAAM,QAAQ,gBAG7C,aAAK,eAAe,OAAM,iBACZ,aAAK,eACnB,OAAO,OAKX,UAAa,EAAG,EAAI,SAAU,KAC5B,aAAiB,EAAI,KACV,QAAQ,aACR,QAAQ,SAAW,MACnB,QAAQ,SAAW,MACnB,QAAQ,SAAW,QAET,WAAW,GAChC,GAAI,MAAQ,MACV,SAGF,gBACK,WAAa,EAAM,IAAK,IAAO,aAAc,GAAM,YAAa,GAAK,aAErE,UAAY,EAAM,IAAK,IAAO,YAAa,GAAM,WAAY,GAAK,EAEvE,UAAa,EAAG,EAAI,WAAY,KAC9B,SAAsB,WAAa,EAC/B,GAAM,aAAc,GAAK,EAAK,YAC9B,GAAO,IAAK,IAAO,aAAc,GAErC,GAAI,KAAO,GAAK,KAAO,YAAc,GACnC,UAAa,EAAG,EAAI,UAAW,IAC7B,UAAa,EAAG,EAAI,YAAa,KAC/B,QACI,EAAI,EAAI,UAAU,GAAK,EAAI,UAAU,GAAK,EAAI,UAAU,GAC5D,OAAO,OAAO,KAAO,mBAGzB,SAGF,GAAI,SAAW,YACb,WAAe,KAAK,MAAM,gBACR,KAAK,KAAK,YACd,KAAO,OAErB,UAAa,EAAG,EAAI,UAAW,KAC7B,SAAc,UAAY,EACtB,GAAM,YAAa,GAAK,EAAI,WAC5B,GAAO,IAAK,IAAO,YAAa,GAEpC,GAAI,KAAO,GAAK,KAAO,WAAa,GAClC,UAAa,EAAG,EAAI,YAAa,KAC/B,QACI,EAAI,EAAI,UAAU,GAAK,EAAI,UAAU,GAAK,EAAI,UAAU,GAC5D,OAAO,OAAO,KAAO,mBAEvB,SAGF,YAAgB,KAAK,MAAM,eACV,KAAK,KAAK,YACb,KAAO,QAErB,UAAa,EAAG,EAAI,YAAa,KAC/B,QAAU,EAAI,QAAU,SAAS,GAAK,OAAS,SAAS,GACpD,KAAO,SAAS,WACJ,UAAU,KAE1B,IAAM,EAAI,SAAW,SAAS,GAAK,OAAS,SAAS,GACjD,KAAO,SAAS,GACpB,aAAiB,UAAU,KAE3B,IAAM,EAAI,QAAU,SAAS,GAAK,UAAY,SAAS,GACnD,KAAO,SAAS,GACpB,eAAmB,UAAU,KAE7B,IAAM,EAAI,SAAW,SAAS,GAAK,UAAY,SAAS,GACpD,KAAO,SAAS,GACpB,gBAAoB,UAAU,SAElB,QAAW,UAAW,SAAW,aAC9B,WAAc,aAAc,YAAc,MAEzD,IAAM,EAAI,EAAI,UAAU,GAAK,EAAI,UAAU,GAAK,EAAI,UAAU,GAC9D,OAAO,OAAO,KAAO,IAAQ,QAAS,KAAO,YAIjD,WAAa,EAAG,EAAI,UAAW,EAAE,GAC/B,SAAc,UAAY,EACtB,GAAM,YAAa,GAAK,EAAI,WAC5B,GAAO,IAAK,IAAO,YAAa,GAEpC,GAAI,KAAO,GAAK,KAAO,WAAa,GAClC,UAAa,EAAG,EAAI,YAAa,KAC/B,QACI,EAAI,EAAI,UAAU,GAAK,EAAI,UAAU,GAAK,EAAI,UAAU,GAC5D,OAAO,OAAO,KAAO,mBAEvB,SAGF,aAAiB,KAAK,MAAM,eACX,KAAK,MAAM,MAC5B,UAAa,EAAG,EAAI,YAAa,KAC/B,UAAc,EAAI,SAAW,SAAS,GAAK,SAAW,SAAS,GAC3D,KAAO,SAAS,UAEhB,EAAI,EAAI,UAAU,GAAK,EAAI,UAAU,GAAK,EAAI,UAAU,GAC5D,OAAO,OAAO,QAAU,UAAU,UAO5C,MAAO,UAAQ,eAAe,OAAO,MAAO,OAAO,MAAO,OAAO,QAG5D,wBAA0C,CAC/C,WAAY,cACZ,YAAa,MACb,WAAY,gBC7IR,uBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,KAAM,UAAW,mBAAW,MAEnC,iBAAiB,EAAG,UAEpB,gBAAoB,qBAAa,mBAAmB,CAAC,MAAO,EAAE,MAAM,WAC3D,EACL,aAAe,MACjB,IAAK,WAAU,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,KAAM,gBAEtD,iBAAqB,qBAAa,iBAAiB,EAAG,EAAE,MAAM,QAAQ,GAEtE,GAAI,eAAiB,GAAG,MAAM,OAAS,EACrC,KAAM,IAAI,OACN,oDACQ,GAAG,MAAM,OAAS,kBAAkB,gBAGlD,gBAAoB,WAAW,GAAG,MAAO,cAC5B,aAAK,oBACD,aAAK,cAAc,GAAG,OAAQ,mBAEjC,SAAQ,KAAK,IAAI,GAAG,QAAQ,gBACzB,GAAG,MAAM,GAAG,MAAM,OAAS,iBACtB,UAClB,OAA0B,EAAI,SAAW,EAAI,EAC7C,OAA0B,EAAI,EAClC,UAAa,EAAG,EAAI,MAAM,OAAQ,GAAK,SACrC,UAAa,EAAG,EAAI,SAAU,KAC5B,QAAY,cAAc,EAAG,GAC7B,GAAI,IAAM,EACR,KAAK,KAAO,UAAY,EAAI,MAAM,UAElC,YAAgB,cAAc,EAAG,EAAI,GACrC,KAAK,KAAO,UAAY,MAAM,SAAW,KAAK,SACtB,MAAM,KAAO,KAAK,UAKhD,WAAe,SAAQ,eAAe,GAAG,MAAO,YAAa,MAE7D,GAAI,aAAe,MACjB,uBAA2B,qBAAa,uBAAuB,qCAC/B,WAC5B,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,KAAM,sBAEjD,MAAA,UAAQ,8BAA8B,QACtC,SAAQ,8BAA8B,IAE/B,wBAGT,MAAO,QAGF,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,SChER,8BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,SAAW,QACd,KAAM,cAAgB,MAE7B,GAAI,EAAE,MAAM,SAAW,GACrB,UAAc,SAAQ,KAAK,IAAI,EAAE,QAAQ,mBACrB,SAAQ,KAAK,IAAI,QAAQ,QAAQ,eAGjD,aAAa,MAAO,YAAa,QAAQ,MAAO,QAAQ,MAAO,MAEnE,MAAO,UAAQ,eAAe,CAAC,MAAO,QAAQ,MAAO,iBAC5C,EAAE,MAAM,SAAW,GAC5B,SAAa,SAAQ,WAAW,cACb,SAAQ,WAAW,gBAEvB,mBAAmB,KAAM,WAAY,KAAM,cAE1D,MAAO,UAAQ,eAAe,OAAO,MAAO,QAAQ,MAAO,OAAO,QAGpE,KAAM,IAAI,OACN,qEACG,EAAE,MAAM,WAGV,wBAA0C,CAC/C,WAAY,cACZ,YAAa,MACb,WAAY,gBCnCR,6BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,UAAW,YAAc,MAEhC,aAAK,OACD,aAAe,OACf,IAAM,+DACF,cACR,aAAK,OACD,UAAY,EACZ,IAAM,sDAAsD,aAEhE,cAAkB,EAAE,MAAM,eACN,EAAE,MAAM,cACT,EAAE,MAAM,cACR,EAAE,MAAM,gBAEN,YAAc,sBACf,WAAa,sBACb,WAAc,WAAY,mBAE9B,SAAQ,KAAK,IAAI,EAAE,QAAQ,cAEvC,GAAI,cAAa,UAAY,aAAe,YAAc,uBAE9C,EAChB,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,UAAa,EAAG,EAAI,aAAc,EAAE,GAClC,QAAY,KAAK,MAAM,EAAI,mBACV,EAAI,UACrB,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,QAAY,KAAK,MAAM,EAAI,mBACV,EAAI,kBACJ,SAAU,UAAY,SAAW,YAClD,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,QAAY,EAAI,iBAEZ,IAAM,WAAc,KAAM,WAAc,KAAM,YAAc,IAChE,OAAO,aAAe,QAAQ,YAMtC,MAAO,UAAQ,eACX,CAAC,UAAW,aAAc,YAAa,aAAc,EAAE,MAAO,QAG7D,uBAAyC,CAC9C,WAAY,aACZ,YAAa,MACb,WAAY,eCvDR,qCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,QAAU,QACb,QAAS,UAAK,UAAW,iBAAmB,MAEnD,iBAAiB,CAAC,EAAG,QAAS,yBAE9B,aAAiB,aAAK,eAAe,EAAE,qBACjB,aAAK,eAAe,OAAO,kBAEhC,UACb,YAAc,MAChB,YAAa,CAAC,EAAG,IAGnB,aAAK,OACD,qBAAa,+BAA+B,QAAS,YACrD,IAAM,gFACgB,0BAA0B,eAEpD,aAAiB,qBAAa,kBAC1B,EAAE,MACF,OAAO,MAA2C,QAAS,WAC3D,MAAK,gBAAiB,KAEnB,aAAc,YAAa,eAAgB,cAAe,SAC7D,iBACY,QAAQ,YACT,QAAQ,UACT,SAAS,YAAc,SAAS,aACpC,GAAI,cAAa,SAAS,SAAU,EAAE,aAClC,SAAQ,KAAK,IAAI,EAAE,QAAQ,aAC3B,SAAQ,KAAK,IAAI,OAAO,QAAQ,aAChC,EAAE,OAEhB,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,GACxC,aAAiB,EAAI,SAAS,YACb,EAAI,EAAE,QAAQ,GAC/B,WAAc,EAAG,GAAK,SAAS,UAAW,EAAE,IAC1C,aAAiB,SAAW,GAAK,EAAE,QAAQ,YAC1B,GAAK,SAAS,aAAe,QAC9C,WAAc,EAAG,GAAK,aAAc,EAAE,IACpC,OAAW,SAAW,GAAK,eAC3B,GAAI,GAAK,GAAK,IAAM,SAAS,SAC3B,SAEF,aAAiB,GAAK,cAAc,YACnB,SAAW,GAAK,SAAS,GAC1C,WAAc,EAAG,GAAK,SAAS,SAAU,EAAE,IACzC,aAAiB,SAAW,GAAK,EAAE,QAAQ,YAC1B,GAAK,SAAS,YAAc,OAC7C,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,OAAW,SAAW,GAAK,cAC3B,GAAI,GAAK,GAAK,IAAM,SAAS,QAC3B,SAEF,aAAiB,SAAW,GAAK,cAAc,YAC9B,SAAW,GAAK,SAAS,oBAC3B,kBACA,SACf,WAAc,EAAG,GAAK,SAAS,WAAY,EAAE,IAC3C,SAAa,MAAM,SAAW,IAC9B,UAAa,EAAG,EAAI,MAAO,EAAE,EAC3B,MAAM,SAAW,IAAM,KAAO,MAAM,SAAW,GAEjD,UAAY,MACZ,UAAY,WAQxB,MAAO,UAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,EAAE,QAG7C,gCAAkD,CACvD,WAAY,sBACZ,YAAa,MACb,WAAY,uBCpFR,oDAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,IAAM,QACT,QAAS,UAAW,UAAK,gBAAiB,aAAe,MAEhE,iBAAiB,CAAC,EAAG,IAAK,uCAE1B,aAAiB,qBAAa,kBAC1B,EAAE,MAA2C,YAAa,QAC1D,UAAW,MAAK,gBAAiB,KAE9B,aAAc,YAAa,aAAc,aAAe,YAEpD,GAAI,cAAa,SAAS,YAAa,mBAElC,SAAS,QAAQ,YAClB,SAAS,QAAQ,UAClB,SAAS,YAAc,SAAS,iBAEhC,SAAQ,KAAK,IAAI,EAAE,QAAQ,YAC5B,GAAI,cAAa,EAAE,MAAO,EAAE,MAAO,cACjC,SAAQ,KAAK,IAAI,GAAG,QAAQ,aAC7B,GAAI,cAAa,GAAG,MAAO,GAAG,MAAO,QACnD,WAAc,EAAG,GAAK,aAAc,EAAE,IACpC,UAAc,KAAK,IAAI,EAAG,KAAK,KAAM,QAAS,IAAM,qBACtC,KAAK,IACf,SAAS,UAAY,UAAS,SAAW,OAAS,IAAM,cAE5D,WAAc,EAAG,GAAK,YAAa,EAAE,IACnC,UAAc,KAAK,IAAI,EAAG,KAAK,KAAM,SAAU,IAAM,oBACvC,KAAK,IACf,SAAS,SAAW,UAAS,QAAU,QAAU,IAAM,aAE3D,WAAc,EAAG,GAAK,SAAS,YAAa,EAAE,IAC5C,OAAW,KAAK,MAAM,GAAK,UAChB,GAAK,cAEF,EACd,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,EACxC,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,GAAK,aAAe,OACpC,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,GAAK,YAAc,QACnC,SAAY,KAAK,IAAI,EAAG,GAAI,GAAI,IAC3B,MAAM,IAAI,EAAG,GAAI,GAAI,KAIhC,GAAG,IAAI,QAAS,GAAI,GAAI,GAAI,MAKlC,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,8CAAgE,CACrE,WAAY,oCACZ,YAAa,MACb,WAAY,sCC/DR,mDAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAI,QAAU,QACd,QAAS,UAAW,UAAK,gBAAiB,YAAc,MAE/D,iBAAiB,CAAC,GAAI,QAAS,sCAE/B,cAAkB,aAAK,eAAe,GAAG,qBACnB,aAAK,eAAe,OAAO,gBAEhC,qBAAa,kBAC1B,WAAY,OAAO,MAA2C,QAC9D,UAAW,MAAK,gBAAiB,OAE1B,GAAI,cAAa,SAAS,QAAS,oBAC7B,GAAG,wBACO,GAAG,iBACb,SAAQ,KAAK,IAAI,GAAG,QAAQ,wBAClB,oBACT,SAAQ,KAAK,IAAI,OAAO,QAAQ,2BACpB,eAE5B,UACA,aACA,YACA,WACA,SACA,QACA,YACA,UACA,SACA,aACA,aACE,gBACW,aAAe,EAAI,SAAS,QAAQ,YACnC,YAAc,EAAI,SAAS,QAAQ,WACrC,YAAc,WAE5B,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,WAAc,EAAG,GAAK,WAAY,EAAE,GAClC,WAAc,EAAG,GAAK,SAAU,EAAE,IAChC,aAAiB,GAAK,aACR,KAAK,IAAI,EAAG,KAAK,KAAK,SAAW,qBAE3C,KAAK,IAAI,UAAY,cAAe,UAAY,cAEpD,WAAc,EAAG,GAAK,QAAS,EAAE,IAC/B,aAAiB,GAAK,cACR,KAAK,IAAI,EAAG,KAAK,KAAK,SAAW,oBAE3C,KAAK,IAAI,SAAW,aAAc,UAAY,qBAEpC,EACd,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,aAAe,SAE/B,WAAc,MAAO,GAAK,MAAO,EAAE,IACjC,OAAW,GAAK,YAAc,kBACb,KAAO,EAAI,KAAO,GAAK,KAAO,aAC7B,MAAS,cAAe,EAAI,IAC1C,MAAS,aAAc,EAAI,IAAM,MAAQ,GAE7C,WAAc,EAAG,GAAK,MAAO,EAAE,IAC7B,OAAW,GAAK,MAAQ,SACV,SAAS,SAAW,WACnB,UAAU,UAAY,IACrC,SAAW,MAAQ,SAIzB,SAAS,KAAO,EAAI,KAAO,GAAK,KAAO,GAAK,IAAM,SAM1D,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,6CAA+D,CACpE,WAAY,mCACZ,YAAa,MACb,WAAY,qCCvFR,qBAEJ,IAAO,OAAQ,kBAAW,MACnB,GAAK,aAEE,aAAK,cAAc,EAAE,aAErB,SAAQ,KAAK,IAAI,EAAE,QAAQ,cAC1B,OAAO,CAAC,MAAO,OAAQ,EAAE,YAC3B,OAAO,OACpB,UAAa,EAAG,EAAI,MAAM,OAAQ,IAChC,KAAK,EAAI,MAAQ,GAAK,MAAM,GAG9B,aAAiB,CAAC,GAAG,EAAE,MAAO,GAAG,EAAE,OAEnC,MAAO,UAAQ,eAAe,SAAU,OAAO,MAAO,OAAO,QAGxD,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,wBCtBgC,CAC5C,WAAY,WACZ,YAAa,MACb,WAAY,EAAE,OAAQ,iBAAS,UAC7B,IAAO,EAAG,QAAU,QACb,QAAS,UAAK,WAAa,iBACf,eAEL,WAAW,KAAK,IAAI,EAAE,QAAQ,aAC9B,EAAE,MAAM,kBAEH,WAAW,KAAK,IAAI,OAAO,QAAQ,kBACnC,OAAO,MAAM,QAG9B,UACA,SACA,QACA,WACA,UACA,SACA,QACA,aACA,YACA,aACA,YACA,eACA,cACA,UAEE,qBAAa,sBACT,EAAE,MACF,OAAO,MAAmC,QAAS,MACnD,OAAyB,mBAEjB,aAAK,cAAc,kBACnB,SAAS,kBACN,aAAK,kBAAkB,EAAE,MAAO,SAMnD,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,aAAgB,EAAG,KAAO,UAAW,EAAE,MACrC,SAAa,KAAO,aAAe,QAAQ,IAC3C,aAAgB,EAAG,KAAO,SAAU,EAAE,MACpC,SAAa,KAAO,YAAc,QAAQ,KAC1C,UAAa,EAAG,EAAI,WAAY,EAAE,GAChC,WAAa,OAAO,iBACpB,UAAa,EAAG,EAAI,aAAc,EAAE,GAClC,QAAY,KAAO,EAAI,eACvB,GAAI,KAAO,GAAK,IAAM,SACpB,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,QAAY,KAAO,EAAI,cACvB,GAAI,KAAO,GAAK,IAAM,SACpB,WAAe,aAAK,WAChB,CAAC,EAAG,IAAK,IAAK,GAAI,MAAO,aAAK,eAAe,EAAE,oBAC/B,aAAK,WACrB,CAAC,EAAG,EAAG,GAAI,WACX,aAAK,eAAe,OAAO,YACnB,MAAM,QAAU,WAAW,aACnC,IAAM,QACR,QAAS,OAMnB,gBAAoB,aAAK,WACrB,CAAC,EAAG,KAAM,KAAM,GAAI,QAAS,aAAK,eAAe,WACrD,WAAW,aAAe,SAMlC,WAAe,WAAW,MACtB,aAAK,aAAa,WAAY,EAAE,OAAQ,SAAU,EAAE,OAExD,MAAO,CAAC,OAAQ,MAAO,SAAU,MAAO,EAAE,wCC/Ec,CAC1D,WAAY,yBACZ,YAAa,MACb,WAAY,EAAE,OAAQ,iBAAS,UAC7B,IAAO,EAAG,OAAQ,IACd,QACG,QAAS,UAAK,WAAa,iBACf,YAGf,aAAK,cACD,EAAE,MAAO,WAAW,KAAK,IAAI,EAAE,QAAQ,gBAG/B,aAAK,cACD,OAAO,MACP,WAAW,KAAK,IAAI,OAAO,QAAQ,SAIrD,UACA,SACA,QACA,WACA,UACA,SACA,QACA,aACA,YACA,aACA,YACA,eACA,cACA,UAEE,qBAAa,sBACT,EAAE,MACF,OAAO,MAAmC,QAAS,MACnD,OAAyB,WAEjC,aAAK,OACD,GAAG,OAAS,SAAS,OACrB,IAAM,YAAY,kEACuB,SAAS,mBAC3C,GAAG,QAEd,QACI,aAAK,cACD,SAAU,WAAW,KAAK,IAAI,GAAG,QAAQ,mBAK/B,aAAK,0BACD,OAAO,MAAO,OAAO,OAO3C,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,aAAgB,EAAG,KAAO,UAAW,EAAE,MACrC,SAAa,KAAO,aAAe,QAAQ,IAC3C,aAAgB,EAAG,KAAO,SAAU,EAAE,MACpC,SAAa,KAAO,YAAc,QAAQ,KAC1C,UAAa,EAAG,EAAI,WAAY,EAAE,GAChC,WAAa,OAAO,sBACT,OACA,EACX,UAAa,EAAG,EAAI,aAAc,EAAE,GAClC,QAAY,KAAO,EAAI,eACvB,GAAI,KAAO,GAAK,IAAM,SACpB,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,QAAY,KAAO,EAAI,cACvB,GAAI,KAAO,GAAK,IAAM,SACpB,QAAY,GAAG,GAAG,KAAK,KAAK,GAAK,QAAQ,GAAG,GAAG,GAC3C,IAAM,QACR,QAAS,IACT,KAAO,EACP,KAAO,KAMjB,WAAU,MAAM,MAAM,IAAM,IAAI,GAAG,MAAM,MAAM,KAMvD,WAAe,WAAW,MACtB,aAAK,aAAa,WAAW,EAAE,OAAQ,OAAO,MAAO,OAAO,OAEhE,MAAO,CAAC,OAAQ,MAAO,OAAO,MAAO,MAAO,OAAO,uCC/FI,CACzD,WAAY,wBACZ,YAAa,MACb,WAAY,EAAE,OAAQ,iBAAS,UAC7B,IAAO,EAAG,OAAQ,IACd,QACG,QAAS,UAAK,WAAa,iBACf,YAGf,aAAK,cACD,EAAE,MAAO,WAAW,KAAK,IAAI,EAAE,QAAQ,gBAG/B,aAAK,cACD,OAAO,MACP,WAAW,KAAK,IAAI,OAAO,QAAQ,SAIrD,UACA,SACA,QACA,WACA,UACA,SACA,QACA,aACA,YACA,aACA,YACA,eACA,cACA,UAEE,qBAAa,sBACT,EAAE,MACF,OAAO,MAAmC,QAAS,MACnD,OAAyB,WAEjC,aAAK,OACD,GAAG,OAAS,SAAS,OACrB,IAAM,YAAY,iEACuB,SAAS,mBAC3C,GAAG,QAEd,QACI,aAAK,cACD,SAAU,WAAW,KAAK,IAAI,GAAG,QAAQ,mBAM7C,aAAK,0BAA0B,EAAE,MAAO,EAAE,OAO9C,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,aAAgB,EAAG,KAAO,UAAW,EAAE,MACrC,SAAa,KAAO,aAAe,QAAQ,IAC3C,aAAgB,EAAG,KAAO,SAAU,EAAE,MACpC,SAAa,KAAO,YAAc,QAAQ,KAC1C,UAAa,EAAG,EAAI,WAAY,EAAE,GAChC,WAAa,OAAO,wBACN,KAAO,EAAK,EAAI,YAChB,KAAO,EAAK,EAAI,KAC9B,UAAa,EAAG,EAAI,aAAc,EAAE,GAClC,QAAY,KAAO,EAAI,eACvB,GAAI,KAAO,GAAK,IAAM,SACpB,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,QAAY,KAAO,EAAI,cACvB,GAAI,KAAO,GAAK,IAAM,SACpB,QAAY,GAAG,GAAG,KAAK,KAAK,GAAK,QAAQ,GAAG,GAAG,GAC3C,IAAM,QACR,QAAS,IACT,OAAS,IACT,OAAS,OAMnB,WAAU,GAAG,QAAQ,QAAQ,IAAM,IAAI,GAAG,MAAM,MAAM,KAM9D,WAAe,WAAW,MACtB,aAAK,aAAa,WAAW,EAAE,OAAQ,EAAE,MAAO,EAAE,OAEtD,MAAO,CAAC,OAAQ,MAAO,EAAE,MAAO,MAAO,EAAE,SC/FvC,uBAEJ,IAAO,OAAQ,kBAAW,MACnB,GAAI,GAAK,OAEhB,iBAAiB,CAAC,GAAI,GAAI,WAE1B,iBAAqB,GAAI,cAAa,aAAK,cAAc,EAAE,eAC5C,SAAQ,KAAK,IAAI,EAAE,QAAQ,gBACzB,SAAQ,KAAK,IAAI,GAAG,QAAQ,OAC7C,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,GACnC,MAAU,OAAO,GACb,GAAK,EACP,aAAa,GAAK,SAAS,GAE3B,aAAa,GAAK,SAAS,GAAM,GAAI,GAIzC,MAAO,UAAQ,eAAe,EAAE,MAAO,UAAW,cAG7C,mBAAoC,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,mBCxBV,6BAA6B,OAA2B,IAAM,EAAK,EAAI,UAEvE,iBAAiB,MAAO,UAAW,KAAwB,oBAEtB,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,UCTJ,qBAAa,SACZ,qBAAa,UACb,qBAAa,UACb,qBAAa,UACb,qBAAa,UACb,qBAAa,YAEL,gBACf,IACA,KACE,UAAa,KAAK,KAAK,MACb,KAAK,IAAI,MACT,EAAO,GAAM,EAAI,GAC3B,MAAO,OACF,GACK,OAAK,EAAI,IAAM,EAAK,IAAM,EAAI,IAAM,EAAI,IAAM,EAC/C,KAAK,IAAI,CAAC,EAAI,gBAIU,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,MCtBR,2BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,cAAS,QACT,KAAO,gBAEI,OAAM,MAAM,gBACb,OAAM,MAAM,aAClB,IACX,MAAI,KAAM,GAER,cAAK,OACD,CAAE,WAAY,IAAM,IACpB,IAAM,iCAAiC,CAAG,WAAY,OAClD,cACR,KAAO,UAAY,IAAM,GAE3B,SAAS,OAAO,KAAM,EAAG,GAElB,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAQ,QAAA,SAAS,MAAO,CAAC,MAAO,YAGvD,qBAAuC,CAC5C,WAAY,WACZ,YAAa,MACb,WAAY,yBC3BV,6BAA6B,OAA0B,EAAI,SAC5C,iBAAiB,QAAS,2BAEF,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,OCKR,6CAGJ,eAAmB,OAAM,YACX,WAAW,YACR,WAAW,aAEV,WAAW,KAAK,IAAI,OAAM,eAE7B,UAAU,mBAAmB,YAC7B,UAAU,mBAAmB,iBAGxB,CAAC,MAAO,qBACT,aAAK,cAAc,wBACnB,aAAK,uBAAuB,UAAW,uBACvC,aAAK,uBAAuB,UAAW,YAE1D,UAAa,EAAG,EAAI,MAAO,KAEzB,MAAU,QAAM,CACd,OAAQ,CAAC,EAAG,QACZ,QAAS,WACT,MAAO,CAAC,MAAO,CAAC,EAAG,GAAI,KAAM,CAAC,EAAG,eAEzB,QAAM,CACd,OAAQ,CAAC,EAAG,QACZ,QAAS,WACT,MAAO,CAAC,MAAO,CAAC,EAAG,GAAI,KAAM,CAAC,EAAG,oBAGrB,SAAQ,CAAC,OAAQ,CAAC,KAAM,EAAG,KAAM,GAAI,QAAS,cAGrD,WAAM,YAAQ,QAAQ,OAAO,QAAS,gBACjC,qBAAa,uBAAuB,MAAM,OAEtD,UAAa,EAAG,EAAI,SAAU,KAC5B,MAAU,qBAAa,oBAAoB,IAAK,GAChD,WAAW,EAAI,SAAW,GAAK,EAAE,KACjC,WAAW,EAAI,SAAW,GAAK,EAAE,KAGnC,WAAW,8BAA8B,GACzC,WAAW,8BAA8B,GACzC,WAAW,8BAA8B,QAG3C,cACI,WAAW,eAAe,YAAa,UAAW,sBAElD,WAAW,eAAe,YAAa,UAAW,mBAEvC,SACX,CAAC,OAAQ,CAAC,KAAM,UAAW,KAAM,WAAY,QAAS,aAE1D,MAAA,YAAW,8BAA8B,WACzC,WAAW,8BAA8B,WAElC,OAGH,4CAGJ,cAAkB,aAAK,cAAc,OAAM,iBAEzB,WAAW,KAAK,IAAI,OAAM,iBAGxC,WAAW,KAAK,IAAI,UAAU,mBAAmB,KAAK,QAAQ,gBAI9D,WAAW,KAAK,IAAI,UAAU,mBAAmB,KAAK,QAAQ,OAGlE,GAAI,cAAc,YAChB,WACI,UAAU,SAAU,SAAU,UAAW,QAAS,wBAElC,CAAC,OAAM,MAAM,GAAI,OAAM,MAAM,IAEjD,GAAI,SACF,aACI,WAAW,eAAe,YAAa,UAAW,OAAO,eAEzD,WAAW,eAAe,YAAa,UAAW,OAAO,eAEhC,WAAW,eACpC,GAAI,UACJ,aAAK,kBAAkB,UAA8B,yBAErD,UAAS,CAAC,OAAQ,CAAC,EAAG,UAAW,QAAS,yBAG1C,cAAc,WACV,CAAC,OAAQ,CAAC,EAAG,SAAU,EAAG,UAAW,QAAS,yBAGlD,cAAc,WACV,CAAC,OAAQ,CAAC,EAAG,SAAU,EAAG,cAAe,QAAS,yBAItD,WAAW,KAAK,IAAI,YAAY,QAAQ,mBAExC,WAAW,KAAK,IAAI,YAAY,QAAQ,OAE5C,MAAA,YAAW,8BAA8B,UACzC,WAAW,8BAA8B,UACzC,WAAW,8BAA8B,UACzC,WAAW,8BAA8B,cACzC,WAAW,8BAA8B,aACzC,WAAW,8BAA8B,aAElC,CAAC,KAAM,YAAa,KAAM,aAGnC,MAAO,aAEP,SAAa,qBAAa,uBAAuB,SAAU,oBAGvD,yBAAyB,KAAM,UAAW,SAE9C,MAAO,sBAAa,uBAAuB,YAI/C,6BACE,MAAQ,MAAO,KAAO,KAAO,EAI/B,8DAIE,GAAI,OAAS,EACX,MAAO,CAAC,KAAM,SAAU,KAAM,UAGhC,SAAa,qBAAa,uBAAuB,SAAU,eAE9C,KAAO,cAEA,qBAAa,qBAAqB,mBAEjC,YAAY,kBACZ,YAAY,eAEf,CAAC,aAAa,qBAG5B,WAAW,eAAe,UAAW,UAAW,2BAEhD,WAAW,eAAe,UAAW,UAAW,6BAE7B,SACnB,CAAC,OAAQ,CAAC,KAAM,aAAc,KAAM,cAAe,QAAS,wBAE7C,qBAAa,oBAAoB,kBAEhC,WAAW,iBACX,WAAW,cAEd,CAAC,YAAY,oBAG1B,WAAW,eAAe,SAAU,UAAW,yBAE/C,WAAW,eAAe,SAAU,UAAW,2BAE7B,SAClB,CAAC,OAAQ,CAAC,KAAM,YAAa,KAAM,aAAc,QAAS,0BAI1D,UAAU,aAAc,aAAc,KAAM,QAAS,0BAEnC,aAAa,mBACb,aAAa,gBAEhB,CAAC,cAAc,sBAG9B,WAAW,eAAe,WAAY,UAAW,6BAEjD,WAAW,eAAe,WAAY,UAAW,+BAE7B,SAAQ,CAC9B,OAAQ,CAAC,KAAM,cAAe,KAAM,eACpC,QAAS,yBAIP,UAAU,YAAa,YAAa,KAAM,QAAS,yBAElC,YAAY,kBACZ,YAAY,eAEf,CAAC,aAAa,qBAG5B,WAAW,eAAe,UAAW,UAAW,2BAEhD,WAAW,eAAe,UAAW,UAAW,6BAE7B,SACnB,CAAC,OAAQ,CAAC,KAAM,aAAc,KAAM,cAAe,QAAS,eAEtD,qBAAa,UAAU,KAAM,gBACxB,CAAC,EAAE,KAAK,kBAEL,WAAW,eAAe,OAAQ,UAAW,EAAE,gBAC/C,WAAW,eAAe,OAAQ,UAAW,EAAE,kBAE7C,SAChB,CAAC,OAAQ,CAAC,KAAM,UAAW,KAAM,WAAY,QAAS,0BAGtD,UACI,CAAC,OAAQ,CAAC,EAAG,YAAa,EAAG,gBAAiB,QAAS,qBAG/C,MAAI,CACF,OAAQ,CAAC,EAAG,gBAAiB,EAAG,cAChC,QAAS,qBAEX,MAAI,CACF,OAAQ,CAAC,EAAG,gBAAiB,EAAG,cAChC,QAAS,yBAGP,MAAK,CAAC,OAAQ,CAAC,MAAO,SAAU,QAAS,yBACzC,MAAK,CAAC,OAAQ,CAAC,MAAO,SAAU,QAAS,yBAEzC,MAAK,CAAC,OAAQ,CAAC,MAAO,SAAU,QAAS,yBACzC,MAAK,CAAC,OAAQ,CAAC,MAAO,SAAU,QAAS,mBAE/C,SAAO,CACnB,OAAQ,CAAC,YAAuB,aAChC,QAAS,WACT,MAAO,CAAC,KAAM,WAEF,SAAO,CACnB,OAAQ,CAAC,YAAuB,aAChC,QAAS,WACT,MAAO,CAAC,KAAM,eAGE,WAAW,KAAK,IAAI,MAAM,QAAQ,iBAClC,WAAW,KAAK,IAAI,MAAM,QAAQ,OAEpD,MAAA,YAAW,8BAA8B,cACzC,WAAW,8BAA8B,cACzC,WAAW,8BAA8B,gBACzC,WAAW,8BAA8B,aACzC,WAAW,8BAA8B,aACzC,WAAW,8BAA8B,eACzC,WAAW,8BAA8B,eACzC,WAAW,8BAA8B,eACzC,WAAW,8BAA8B,iBACzC,WAAW,8BAA8B,cACzC,WAAW,8BAA8B,cACzC,WAAW,8BAA8B,gBACzC,WAAW,8BAA8B,WACzC,WAAW,8BAA8B,WACzC,WAAW,8BAA8B,aACzC,WAAW,8BAA8B,cACzC,WAAW,8BAA8B,SACzC,WAAW,8BAA8B,SACzC,WAAW,8BAA8B,aACzC,WAAW,8BAA8B,aACzC,WAAW,8BAA8B,aACzC,WAAW,8BAA8B,aACzC,WAAW,8BAA8B,OACzC,WAAW,8BAA8B,OAElC,CAAC,KAAM,UAAW,KAAM,WAIjC,qDAEE,QAAY,GAAI,cAAa,KAAO,GAEpC,UAAa,EAAG,EAAI,KAAM,KACxB,UAAW,QACA,EACX,UAAa,EAAG,EAAI,KAAM,KACxB,MAAU,qBAAa,SAAS,EAAI,EAAG,KAAM,cAChC,qBAAa,oBAAoB,KAAsB,GACpE,OAAQ,KAAK,KAAO,EAAE,KAAO,KAAK,KAAO,EAAE,KAC3C,OAAQ,KAAK,KAAO,EAAE,KAAO,KAAK,KAAO,EAAE,KAEzC,SACF,QAAQ,KACR,OAAQ,MAEV,qBAAa,mBAAmB,IAAK,MAAM,MAAM,GAEnD,MAAO,KC1TH,oBAEJ,IAAO,OAAQ,kBAAW,MACnB,cAAS,iBAEE,aAAK,cAAc,OAAM,0BAGhB,OAAM,MAAM,OAAM,MAAM,OAAS,SAC9C,UAAY,2BAEV,UAAQ,CACtB,OAAQ,CAAC,EAAG,QACZ,QAAA,SACA,MAAO,CAAC,MAAO,CAAC,MAAO,8BAGV,SAAS,QAAS,GAAO,yBAGpC,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,MAAO,OAAM,SAEhE,MAAA,UAAQ,8BAA8B,SACtC,SAAQ,8BAA8B,QAE/B,eAGF,cAAgC,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,MCjCR,qBAEJ,IAAO,iBAAS,OAAS,MAClB,MAAO,MAAO,OAAS,aAEf,OAAS,aAAK,WAAW,cACzB,aAAK,kBAAkB,OAAQ,aAAK,cAAc,QACjE,MAAA,YAAW,OAAQ,MAAO,QAEnB,SAAQ,eAAe,MAAO,OAAQ,QAGxC,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OAGd,wCAEM,QAAU,SACX,OAAoB,KAAK,OCpBvB,wBAA0C,CAC/C,WAAY,cACZ,YAAa,MACb,WAAY,EAAE,OAAQ,MAAO,qBAC3B,IAAO,cAAS,kBACG,gBAEJ,aAAK,uBAChB,OAAM,MAA0B,aAAK,cAAc,OAAM,mDACP,OAAM,gBAE1C,WAAW,KAAK,IAAI,OAAM,QAAQ,OAEpD,iBAAoB,EAAG,SAAW,MAAO,YACvC,gBAAoB,SAAW,WAAa,YAAc,YAE1D,YAAe,EAAG,IAAM,YAAa,OACnC,cAAkB,IAAO,YAAa,aAEtC,YAAe,EAAG,IAAM,WAAY,OAClC,cAAkB,IAAM,YAExB,gBAAmB,EAAG,QAAU,YAAa,WAC3C,YAAe,CAAC,MAAO,IAAK,IAAK,WAEvB,QAAO,UAEF,KAAK,MAAM,WAAa,UACxB,YAAc,UAAY,UAAY,oBAEnC,UAAU,QAE5B,GAAI,QAAU,GAAK,OAAS,YAE1B,qBAAyB,OAAS,qBAE9B,YAAc,UAAY,iBAAmB,QACjD,YAAc,UAAU,UAE1B,OAAO,QAAU,eAMzB,WAAe,WAAW,MAAM,OAAQ,OAAM,MAAO,OAAM,OAC3D,MAAO,CAAC,OAAQ,MAAO,OAAM,MAAO,MAAO,OAAM,sBC7CjD,6BAA6B,OAA0B,KAAK,MAAM,EAAI,cAEtE,iBAAiB,SAAU,aAAc,KAAwB,wBAEzB,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,WCNR,2BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,OAAQ,KAAM,wBAA0B,QAEhD,QACA,UACA,WACA,UACA,gBACA,uBACA,gBACE,aAES,OAAO,CAClB,OAAQ,CAAC,EAAG,QACZ,QAAA,SACA,MAAO,CAAC,QAAS,IAAA,MAAK,WAAY,UAAW,mBAG/C,GAAI,MACF,cAAkB,OAClB,OAAS,MAAI,CAAC,OAAQ,CAAC,EAAG,OAAQ,EAAG,MAAO,QAAA,WAC5C,SAAQ,8BAA8B,WAGxC,GAAI,aACF,cAAkB,OAClB,OAAS,iBACL,SAAS,OAAQ,YAAY,uBAAwB,gBACzD,SAAQ,8BAA8B,WAGxC,MAAO,QAGF,sBAAwC,CAC7C,WAAY,YACZ,YAAa,MACb,WAAY,aC1CR,oCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,OAAQ,KAAM,wBAA0B,QAEhD,QACA,UACA,WACA,UACA,gBACA,uBACA,gBACE,aAES,sBAAsB,CACjC,OAAQ,CAAC,EAAG,QACZ,QAAA,SACA,MAAO,CAAC,QAAS,IAAA,MAAK,WAAY,UAAW,mBAG/C,GAAI,MACF,cAAkB,OAClB,OAAS,MAAI,CAAC,OAAQ,CAAC,EAAG,OAAQ,EAAG,MAAO,QAAA,WAC5C,SAAQ,8BAA8B,WAExC,GAAI,aACF,cAAkB,OAClB,OAAS,iBACL,SAAS,OAAQ,YAAY,uBAAwB,gBACzD,SAAQ,8BAA8B,WAGxC,MAAO,QAGF,+BAAiD,CACtD,WAAY,qBACZ,YAAa,MACb,WAAY,sBC5CR,wBAEJ,IAAO,OAAQ,kBAAW,MACnB,OAAQ,SAAW,kBAEP,aAAK,cAAc,OAAO,oBAExB,QAAQ,gBACX,aAAa,aAAa,OAAS,6CAGjD,qBAAa,mBAAmB,OAAQ,SAC5C,GAAI,YAAc,EAChB,MAAO,UAAQ,eAAe,YAAa,OAAO,MAAO,IAG3D,WAAe,OAAO,CAAC,UAAW,WAAY,OAAO,mBACjC,SAAQ,KAAK,IAAI,QAAQ,QAAQ,kBAClC,SAAQ,KAAK,IAAI,OAAO,QAAQ,OAEnD,UAAa,EAAG,EAAI,UAAW,KAC7B,UAAc,gBACK,EACnB,UAAa,EAAG,EAAI,UAAW,KAC7B,QAAY,YAAY,EAAI,UAAY,GACxC,cAAgB,IAAM,QAAQ,GAC9B,MAAM,KAAK,KAEb,GAAI,aAAe,GAAK,cAAgB,WAAa,UACnD,KAAM,IAAI,OACN,oBAAoB,6BAA6B,OAAO,SAG9D,UAAa,EAAG,EAAI,UAAW,IAC7B,OAAO,OAAO,EAAI,UAAY,GAC1B,WAAW,aAAe,UAAY,GAI9C,MAAO,UAAQ,eAAe,YAAa,OAAO,MAAO,OAAO,QAG3D,mBAAqC,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,UC1CR,wBAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,SAAW,QACd,KAAM,WAAa,MAE1B,iBAAiB,CAAC,EAAG,SAAU,YAE/B,eAAiB,UAEb,WAAa,MACf,YAAa,GAGf,gBAAoB,aAAK,cAAc,QAAQ,kBAE5B,aAAK,eAAe,KAAM,EAAE,OAAO,aACpC,qBAAa,aAAa,yBACxC,EAAG,QAAS,WAAY,qBAEX,UAAQ,CACvB,OAAQ,CAAC,GACT,QAAA,SACA,MAAO,CACL,MAAO,CACL,UAAU,UAAW,UAAU,UAAW,UAAU,QACpD,UAAU,2BAKK,UAAQ,CAC3B,OAAQ,CAAC,EAAG,SACZ,QAAA,SACA,MAAO,CAAC,MAAO,CAAC,UAAU,UAAW,YAAc,UAAU,iCAGpC,CACzB,UAAU,UAAW,UAAU,UAAW,YAAc,UAAU,UAClE,UAAU,sBAGO,SAAQ,WAAW,mBACzB,SAAQ,WAAW,iBACjB,aAAa,KAAM,WAAY,oBAE9C,MAAA,UAAQ,8BAA8B,UACtC,SAAQ,8BAA8B,cAE/B,SAAQ,eACX,UAAU,YAAa,OAAO,MAAO,OAAO,QAG3C,mBAAqC,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,2BC5DV,6BAA6B,OAA2B,GAAK,EAAK,EAAI,iBAC9C,iBACxB,aAAc,iBAAkB,KAAwB,2BAEZ,CAC9C,WAAY,aACZ,YAAa,MACb,WAAY,eCPR,qBAEJ,IAAO,OAAQ,kBAAW,MACnB,cAAS,iBAEE,aAAK,cAAc,OAAM,0BAGhB,OAAM,MAAM,OAAM,MAAM,OAAS,SAC9C,UAAY,2BAEV,UAAQ,CACtB,OAAQ,CAAC,EAAG,QACZ,QAAA,SACA,MAAO,CAAC,MAAO,CAAC,MAAO,8BAGV,SAAS,QAAS,GAAM,yBAGnC,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,MAAO,OAAM,SAEhE,MAAA,UAAQ,8BAA8B,SACtC,SAAQ,8BAA8B,QAE/B,eAGF,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,iBChCV,gBAAgB,SAAU,IAAQ,OAAO,SAAS,IAAM,EAAI,EAAG,uBAEvB,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,kBCLV,gBAAgB,MAAO,IAAQ,KAAK,IAAI,MAAQ,SAAW,EAAI,EAAG,oBAE7B,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,eCLV,gBAAgB,MAAO,IAAQ,OAAO,MAAM,IAAM,EAAI,EAAG,oBAEpB,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,sBCJV,6BAA6B,OAA2B,GAAK,EAAK,EAAI,cAEtE,iBAAiB,UAAW,cAAe,KAAwB,wBAE1B,CAC3C,WAAY,UACZ,YAAa,MACb,WAAY,YCRR,wBAEJ,IAAO,iBAAS,OAAS,MAClB,MAAO,KAAM,KAAO,cAEX,aAAa,MAAO,KAAM,KAE1C,MAAO,UAAQ,eAAe,CAAC,QAAQ,QAAS,UAAW,SAGtD,mBAAqC,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,iBCdO,gBAAgB,MAAO,IAAQ,KAAK,MAAM,iBAEtB,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,uBCHV,6BAA6B,OAA0B,GAAK,eACtC,iBACtB,WAAY,eAAgB,KAAwB,yBAEV,CAC5C,WAAY,WACZ,YAAa,MACb,WAAY,yBCRV,gBAAgB,WAAY,IAAQ,GAAK,EAAI,EAAG,yBAEN,CAC5C,WAAY,WACZ,YAAa,MACb,WAAY,2BCJV,6BAA6B,OAA0B,GAAK,cAE5D,iBAAiB,UAAW,cAAe,KAAwB,wBAE1B,CAC3C,WAAY,UACZ,YAAa,MACb,WAAY,YCRR,mBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,YAAa,KAAM,MAAO,MAAQ,MAEzC,iBAAiB,EAAG,OAEpB,aAAiB,EAAE,MAAM,QACZ,SAAW,UACR,SAAQ,KAAK,IAAI,EAAE,QAAQ,YAC9B,aAAK,cAAc,EAAE,cACnB,GAAI,cAAa,MAEhC,mCACE,mBAAuB,OAAS,wBAE5B,OAAS,eAAiB,KAAK,IAAI,EAAG,eAAiB,0BAEvD,OAAS,eAAiB,KAAK,IAAI,eAAiB,YAAa,YAE3D,EACV,KAAO,gBAAkB,aAAc,kBACrC,MAAU,QAAQ,gBAClB,OAAO,EAAI,EAEb,MAAO,OAGT,eAAkB,EAAG,OAAS,KAAM,UAClC,UAAY,kBAAkB,YAClB,QAAQ,QAAU,KAAK,IAAI,KAAO,MAAQ,MAAK,CAAC,MAC5D,OAAO,QAAU,IAGnB,MAAO,UAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,QAG3C,cAAgC,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,KC1CR,uBAIJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,EAAG,IAAM,QACZ,YAAa,KAAM,MAAO,MAAQ,MAEzC,iBAAiB,GAAI,WAErB,WAAe,aAAK,cAAc,GAAG,gBAEpB,GAAG,MAAM,YACT,SAAQ,KAAK,IAAI,GAAG,QAAQ,eAC7B,SAAQ,KAAK,IAAI,EAAE,QAAQ,eAC3B,SAAQ,KAAK,IAAI,EAAE,QAAQ,cAC5B,GAAI,cAAa,aACnB,OAEb,eAAkB,EAAG,OAAS,KAAM,UAClC,mBAAuB,OAAS,oBAE3B,OAAS,eAAkB,KAAK,IAAI,EAAG,eAAiB,sBAC3C,OAAS,eACvB,KAAK,IAAI,SAAU,eAAiB,YAAc,SAE3C,EACX,UAAa,WAAY,EAAI,SAAU,IACrC,OAAQ,KAAK,IAAI,QAAQ,GAAI,GAE/B,MAAO,MAAQ,MAAO,KAEtB,UAAa,WAAY,EAAI,SAAU,KACrC,QAAU,GAAK,MAAQ,KAAO,QAAQ,GAAK,QAAQ,QAAU,MACzD,SAAW,GACb,MAAO,KAAK,IAAI,MAAM,CAAC,OAEzB,KAAO,SAAS,QAChB,OAAO,IAAM,KAIjB,MAAO,UAAQ,eAAe,GAAG,MAAO,EAAE,MAAO,QAG5C,kBAAoC,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,SC3CR,oBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,iBAAkB,UAAY,iBAClB,gBACN,EAAE,YACD,OAAO,gBAEJ,aAAK,eAAe,iBAAkB,aAC5C,sBACU,qBAAa,mBAAmB,KAAM,aAC/C,WAAW,KAAK,IAAI,EAAE,QAAQ,OAC1C,GAAI,cAAgB,MAClB,aAA2B,GAAI,OAAM,OACrC,UAAa,EAAG,EAAI,SAAS,OAAQ,IACnC,SAAS,GAAK,OAAO,aAAa,IAGpC,MAAQ,cAAc,MAAO,OAAQ,EAAE,MAAO,aAAc,UAC5D,KAAO,qBAAa,iBAAiB,KAAK,OAAQ,OAElD,OAAS,SAGX,iBAAiB,EAAG,OACpB,qBAAa,2BAA2B,MAAO,KAAM,OACrD,6BACI,qBAAa,0BAA0B,OAAQ,iBAEhC,aAAK,cAAc,oBAEvB,QAAQ,MAAO,WAAY,YAAa,EAAE,cAC1C,WAAW,MAAM,OAAQ,YAAa,EAAE,gBAExC,YACf,GAAI,UAEF,aAAiB,qBAAa,qBAAqB,YAAa,UAChE,SAAW,SAGb,MAAO,CAAC,OAAQ,MAAO,SAAU,MAAO,EAAE,OAGrC,cAAgC,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,MCrDR,wBAIJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,OACZ,iBAAiB,EAAG,WACpB,IAAO,WAAY,QAAS,UAAK,iBAAmB,gBAClC,EAElB,aAAK,OACD,qBAAa,+BAA+B,QAAS,WACrD,IAAM,wEACa,0BAA0B,cAEjD,aAAiB,qBAAa,kBAC1B,EAAE,MAA2C,WAAY,QACzD,UAAW,MAAK,qBAGpB,GAAI,SAAS,cAAgB,GAAK,SAAS,eAAiB,GACxD,aAAK,YAAY,SAAS,QAAS,SAAS,UAC9C,IAAM,UAAS,CAAC,OAAQ,CAAC,GAAI,QAAA,gBAE7B,YAAgB,SAAQ,KAAK,IAAI,EAAE,QAAQ,gBAC3B,aAAK,eAAe,EAAE,eACvB,MAAK,QAAS,EAAE,MAAO,EAAE,MAAO,SAAS,SAAU,OAClE,IAAM,SAAQ,eACV,SAAS,SAAU,EAAE,MAAO,QAAO,QAEzC,MAAO,KAGF,kBAAoC,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,UCpCR,yBAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,WAAY,QAAS,UAAK,gBAAiB,WAAY,WAC1D,MAEJ,iBAAiB,EAAG,aAEpB,eAAiB,UACb,YAAc,MAChB,YAAa,CAAC,EAAG,EAAG,IAGtB,aAAiB,qBAAa,kBAC1B,EAAE,MAAmD,WAAY,QACjE,WAAY,MAAK,gBAAiB,oBAEtB,SAAQ,KAAK,IAAI,EAAE,QAAQ,cAC5B,QACX,QAAS,EAAE,MAAO,EAAE,MAAO,aAAK,eAAe,EAAE,OAAQ,SAAU,OAEvE,MAAO,UAAQ,eAAe,OAAO,MAAO,UAAW,OAAO,QAGzD,oBAAsC,CAC3C,WAAY,UACZ,YAAa,MACb,WAAY,WC/BR,6BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAI,cAAS,QACb,WAAY,QAAS,UAAK,UAAW,iBAAmB,MAE/D,iBAAiB,CAAC,GAAI,QAAQ,iBAE9B,aAAiB,qBAAa,kBAC1B,OAAM,MAAmD,WACzD,QAAS,UAAW,MAAK,0BAEZ,SAAQ,WAAW,kBAClB,mBAAmB,SAAU,sBAC3B,SAAS,yBACR,SAAS,yBACV,SAAS,0BACP,SAAS,6BACR,SAAS,6BACV,SAAS,mCACF,SAAS,2CACR,SAAS,2CACV,SAAS,8BACrB,qBAAuB,EAAI,SAAS,QAAQ,cAC7C,qBAAuB,EAAI,SAAS,QAAQ,YAC7C,sBAAwB,EAAI,SAAS,QAAQ,OACjD,OAAO,OAAM,MAAO,iBAEjB,SAAQ,WAAW,IAEjC,cAAiB,EAAG,MAAQ,SAAS,UAAW,EAAE,MAChD,gBAAmB,EAAG,QAAU,SAAS,WAAY,EAAE,QACrD,gBAAmB,EAAG,QAAU,SAAS,QAAS,EAAE,QAClD,cAAiB,EAAG,MAAQ,SAAS,SAAU,EAAE,MAC/C,cAAiB,EAAG,MAAQ,SAAS,QAAS,EAAE,OAE9C,kBAAsB,QAAU,qBACZ,MAAQ,mBACR,MAAQ,gBACd,EACd,eAAkB,EAAG,OAAS,qBACzB,QAAU,eACb,YAAiB,eAAgB,QAAU,YAC3C,GAAI,QAAU,GAAK,SAAW,SAAS,UACnC,KAAK,MAAM,WAAa,QAC1B,SAEF,aAAgB,EAAG,KAAO,sBACrB,MAAQ,gBACX,UAAe,aAAc,MAAQ,aACrC,GAAI,MAAQ,GAAK,OAAS,SAAS,WAC/B,KAAK,MAAM,SAAW,MACxB,SAEF,aAAgB,EAAG,KAAO,qBACrB,MAAQ,eACX,UAAe,aAAc,MAAQ,YACrC,GAAI,MAAQ,GAAK,OAAS,SAAS,UAC/B,KAAK,MAAM,SAAW,MACxB,SAGF,WAAe,qBAAuB,sBAC9B,qBACJ,EACC,UAAU,IAAI,MAAO,QAAS,MAAO,MAAO,gBAG7C,OAAS,sBAAwB,qBACjC,KAAO,qBAAuB,UAErB,SAAW,OAAS,EAAI,EACrC,GAAI,OAAS,EACX,SAGF,UACI,MAAM,IAAI,MAAO,QAAS,MAAO,MAAO,SAC5C,SAAW,MAAQ,OAIzB,GAAG,IAAI,QAAS,MAAO,QAAS,MAAO,MAAO,SAOxD,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,yBAA0C,CAC/C,WAAY,cACZ,YAAa,MACb,WAAY,eCnGR,4BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAI,aAAO,QAAU,SAClB,OACV,iBAAiB,CAAC,OAAO,QAAS,eAClC,IAAO,WAAY,QAAS,UAAK,iBAAmB,eAEnC,qBAAa,kBAC1B,EAAE,MAA2C,WAAY,QACzD,EAAmB,MAAK,yBACZ,SAAQ,KAAK,IAAI,EAAE,QAAQ,iBACzB,OACd,SAAS,SAAU,EAAE,MACrB,iBAAiB,QAAS,EAAE,MAAO,EAAE,MAAO,UAAU,qBACrC,SAAS,yBACV,SAAS,2BACN,SAAS,6BACV,SAAS,oCACD,SAAS,2CACV,SAAS,6BACtB,qBAAuB,EAAI,SAAS,QAAQ,YAC7C,sBAAwB,EAAI,SAAS,QAAQ,OAExD,OAAgB,EAAE,MAA2C,kBAElD,SAAQ,KAAK,IAAI,GAAG,QAAQ,aAC7B,OACV,GAAG,MAA2C,UAAW,QAE7D,UAAa,EAAG,EAAI,SAAS,UAAW,EAAE,EACxC,UAAa,EAAG,EAAI,SAAS,WAAY,EAAE,EACzC,YAAe,EAAG,IAAM,SAAS,SAAU,EAAE,IAC3C,YAAe,EAAG,IAAM,SAAS,QAAS,EAAE,KAE1C,cAAkB,IAAM,iBACN,IAAM,gBACV,EACd,WAAc,EAAG,GAAK,sBAAuB,IAAM,gBACjD,QAAa,WAAY,IAAM,aAC/B,GAAI,IAAM,GAAK,KAAO,SAAS,WAC3B,KAAK,MAAM,OAAS,IACtB,SAEF,WAAc,EAAG,GAAK,qBAAsB,IAAM,eAChD,QAAa,WAAY,IAAM,YAC/B,GAAI,IAAM,GAAK,KAAO,SAAS,UAC3B,KAAK,MAAM,OAAS,IACtB,SAEF,WAAe,sBAAwB,qBAAuB,EACzD,UAAU,IAAI,EAAG,IAAK,IAAK,UACjB,GAAK,qBAAuB,QAE9B,SAAW,OAAS,EAAI,EACrC,GAAI,OAAS,EACX,SAGF,UAAc,MAAM,IAAI,EAAG,IAAK,IAAK,GACrC,SAAW,MAAQ,MAGvB,GAAG,IAAI,QAAS,EAAG,IAAK,IAAK,GAKrC,MAAO,UAAQ,eAAe,GAAG,MAAO,GAAG,MAAO,GAAG,QAGhD,uBAAwC,CAC7C,WAAY,YACZ,YAAa,MACb,WAAY,cChFR,kFAGJ,YAAgB,aAAK,eAAe,iBACnB,MAAK,QAAS,OAAQ,MAAO,QAAS,SAAU,oBAC5C,iBACjB,QAAS,OAAQ,MAAO,SAAU,GAAM,qBAE5C,MAAO,CAAC,SAAS,OAAQ,aAAa,QCHjC,4BAA8C,CACnD,WAAY,kBACZ,YAAa,MACb,WAAY,EAAE,OAAQ,MAAO,qBAC3B,IAAO,GAAK,QACL,WAAY,QAAS,UAAK,qBAC7B,iBACe,SACnB,iBAAiB,EAAG,qBAEpB,WAAe,WAAW,KAAK,IAAI,EAAE,QAAQ,gBAC5B,qBAAa,kBAC1B,EAAE,MAA2C,WAAY,QACzD,CAAC,EAAG,GAAI,wBACc,sBACtB,OAAQ,EAAE,MAAO,EAAE,MAAO,oBAAqB,uBAG/C,WAAW,MAAM,OAAwB,SAAS,SAAU,EAAE,qBAE9D,WAAW,MAAM,QAAuB,SAAS,SAAU,EAAE,OACjE,MAAO,CACL,CAAC,OAAQ,aAAc,MAAO,SAAS,SAAU,MAAO,EAAE,OAC1D,CAAC,OAAQ,cAAe,MAAO,SAAS,SAAU,MAAO,YCpBzD,qBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,KAAM,UAAY,MAEzB,iBAAiB,EAAG,OAEpB,OACI,EAAE,QAAU,OACd,GAAK,OAAK,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,WAEhD,GAAK,UAAS,CAAC,OAAQ,CAAC,GAAI,QAAA,WAG9B,UAAc,GAAG,MAAM,YACV,aAAK,eAAe,KAAM,GAAG,mBACtB,qBAAa,mBAAmB,KAAM,qBAEtC,eACJ,GACZ,aAAe,MACjB,WACI,WAAU,CAAC,OAAQ,CAAC,EAAG,IAAK,QAAA,SAAS,MAAO,CAAC,KAAM,eACvD,cAAgB,qBAAa,iBAAiB,cAAc,OAAQ,QAGtE,qBAAa,2BACT,MAAO,cAAe,UAAU,MAAM,QAE1C,0BACI,qBAAa,0BAA0B,UAAU,MAAO,2BACxC,qBAAa,WAAW,UAAU,MAAO,gBAChD,OAAM,SAAS,SAAU,wBACnB,aAAK,cAAc,kBACzB,SAAQ,KAAK,IAAI,OAAO,QAAQ,aAE/B,SAAQ,KAAK,IAAI,UAAU,QAAQ,OACjD,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,GACjC,WAAe,EAAI,iBACT,EACV,UAAa,EAAG,EAAI,WAAY,EAAE,EAChC,OAAO,MAAM,OAAS,GAExB,KAAK,GAAK,MAGZ,GAAI,UACF,aAAiB,qBAAa,qBAAqB,OAAO,MAAO,gBAC/C,OAClB,OAAS,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,MAAO,YAC/D,SAAQ,8BAA8B,WAGxC,MAAA,UAAQ,8BAA8B,IAElC,aAAe,MACjB,SAAQ,8BAA8B,WAGjC,OAGF,cAAgC,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,OCtER,qBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,KAAM,UAAY,WAEZ,aAAK,eAAe,KAAM,EAAE,cAC1B,qBAAa,0BAA0B,EAAE,MAAO,kBAC3C,OAAO,cACR,aAAK,cAAc,uBACpB,oBAEd,SAAQ,eAAe,GAAI,UAAW,GAAI,cAAa,CAAC,cAC5D,UAAU,KAAK,kBAEf,OAAW,OAAK,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,aACtD,UAAU,KAAK,IAEf,QACI,MAAI,CAAC,OAAQ,CAAC,EAAG,GAAI,EAAG,kBAAmB,QAAA,WAC/C,UAAU,KAAK,KAEf,WAAe,MAAI,CAAC,OAAQ,CAAC,EAAG,KAAM,QAAA,SAAS,MAAO,CAAC,KAAM,YAE7D,MAAA,WAAU,QAAQ,GAAK,SAAQ,8BAA8B,IAEtD,OAGF,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OCjCR,oBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,KAAM,UAAY,MAEzB,iBAAiB,EAAG,OAEpB,aAAiB,aAAK,eAAe,KAAM,EAAE,YAClC,sBACU,qBAAa,mBAAmB,KAAM,EAAE,MAAM,WAC1D,EACL,cAAgB,MAClB,IAAK,WAAU,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,KAAM,gBACpD,KAAO,qBAAa,iBAAiB,KAAK,OAAQ,EAAE,MAAM,SAG5D,qBAAa,2BAA2B,MAAO,KAAM,GAAG,MAAM,QAC9D,0BACI,qBAAa,0BAA0B,GAAG,MAAO,iBAClC,aAAK,cAAc,kBACzB,aAAK,oBAAoB,aAAK,cAAc,UAAW,GAAG,aAEzD,SAAQ,KAAK,IAAI,GAAG,QAAQ,OAC1C,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,GACjC,WAAe,EAAI,gBACT,MAAM,QAChB,UAAa,EAAG,EAAI,WAAY,EAAE,GAChC,UAAc,MAAM,OAAS,GACzB,MAAQ,MACV,MAAM,OAGV,KAAK,GAAK,KAGR,cAAgB,MAClB,SAAQ,8BAA8B,IAGxC,WAAe,SAAQ,eAAe,SAAU,GAAG,MAAO,MAE1D,GAAI,UACF,kBAAsB,qBAAa,qBAAqB,SAAU,yBAE9D,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,MAAO,iBAE1D,MAAA,UAAQ,8BAA8B,QAE/B,eAGT,MAAO,QAGF,cAAgC,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,MC7DR,0BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,SAAU,MAAQ,MAEzB,iBAAiB,EAAG,aAEpB,aAAiB,SAAS,IACtB,QAAU,GAAE,GAAqB,EAAE,MAAM,GAAK,GAAE,UAEtC,SAAS,IAAI,IAAK,GAAE,QACtB,SAAS,IAAI,QAAU,GAAE,GAAK,EAAE,MAAM,WACnC,OAAS,UAAY,EAAI,QAE1B,SAAQ,KAAK,IAAI,EAAE,QAAQ,aAC3B,EAAE,MAAM,gBACL,aAAK,eAAe,EAAE,kBAEpB,aAAK,cAAc,qBACnB,SAAS,qBACN,aAAK,eAAe,kBAEtC,aAAK,uBAAuB,EAAE,MAA0B,YAE5D,UAAa,EAAG,EAAI,WAAY,KAC9B,YAAa,aAAK,WAAW,EAAG,WAAY,eAC5C,WAAa,EAAG,GAAI,WAAY,KAC1B,QAAO,IAAK,MAAM,IACpB,QAAO,IAAK,MAAM,IAAK,EAAI,QAAO,IAAK,OAC9B,QAAO,KAAM,IAAI,KAC1B,SAAO,IAAM,KAAI,IAAK,GAAK,EAAI,QAAO,IAAK,QAG/C,QAAS,QAAO,IAAI,QAAU,EAAI,MAAM,KAExC,YAAgB,aAAK,WAAW,QAAQ,MAAO,UAE/C,QAAQ,GAAK,MAAM,SAGrB,UAAc,SAAQ,MAAM,QAAS,SAAU,EAAE,OAEjD,MAAO,CAAC,OAAQ,MAAO,MAAO,SAAU,MAAO,EAAE,OAG5C,oBAAsC,CAC3C,WAAY,UACZ,YAAa,MACb,WAAY,oBCpDS,6BAA8B,kBACnD,QAAY,OAAS,OACrB,MAAK,QAAS,GAAK,OAAS,GAAO,QAAU,GAAK,QAAU,EACnD,IAEC,KAAM,QAAU,cAIT,iBAAiB,IAAK,mBAEF,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,kBClBc,YAAA,uBCUtB,wBAIJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,QAAU,QACV,KAAO,iBAEK,OAAO,MAAM,YAErB,IAIX,GAHI,OAAS,IACX,MAAO,WAAa,GAElB,OAAS,WAAa,EACxB,KAAM,OACF,4EACmB,0BAA0B,QAGnD,SAAa,aAAK,eAAe,CAAC,MAAO,OAAO,gBAC/B,KAAI,CACnB,OAAQ,CAAC,EAAG,QACZ,QAAA,SACA,MAAO,CAAC,iBAAkB,KAAM,SAAU,oBAEtB,qBAAa,qBAAqB,SAAS,MAAO,uBAGpE,UAAQ,CAAC,OAAQ,CAAC,EAAG,UAAW,QAAA,SAAS,MAAO,CAAC,MAAO,mBAExD,MAAI,CAAC,OAAQ,CAAC,EAAG,OAAQ,EAAG,kBAAmB,QAAA,aACzC,MAAI,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,kBAE3B,MAAI,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,SAAS,MAAO,CAAC,KAAM,KAAM,SAAU,kBAE5D,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,MAAO,wBAE3C,MAAI,CAAC,OAAQ,CAAC,EAAG,EAAG,EAAG,aAAc,QAAA,WAEpD,MAAA,UAAQ,8BAA8B,UACtC,SAAQ,8BAA8B,kBACtC,SAAQ,8BAA8B,GACtC,SAAQ,8BAA8B,GACtC,SAAQ,8BAA8B,QACtC,SAAQ,8BAA8B,aAE/B,OAGF,kBAAoC,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,UCxDR,4BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,QAAU,QACV,WAAY,KAAM,YAAc,MAEvC,iBAAiB,OAAQ,eAEzB,kBAAsB,WAClB,OACA,SAAQ,CAAC,OAAQ,CAAC,QAAS,QAAA,SAAS,MAAO,CAAC,IAAK,gBAEnC,cAAc,MAAM,aACpB,cAAc,MAAM,YACrB,SAAQ,KAAK,IAAI,cAAc,QAAQ,gBACvC,CAAC,UAAW,oBAEzB,aAAK,oBAAoB,aAAK,cAAc,UAAW,SAE3D,UAAa,EAAG,EAAI,UAAW,EAAE,GAC/B,WAAe,EAAI,cAGP,GAAI,cAAa,UAAY,GACzC,IAAI,GAAK,SAAS,QAClB,cAAiB,EAAG,MAAQ,IAAI,OAAQ,EAAE,MACxC,IAAI,OAAS,IAAI,MAAQ,GAAK,SAAS,OAAS,OAGlD,WAA0B,YAAA,KAAK,KAAK,sBAClB,EAAI,WACtB,iBAAoB,EAAG,SAAW,WAAY,EAAE,UAC9C,MAAU,SAGV,QAAQ,UAAY,UAAY,IAAI,OAEpC,cAAiB,EAAG,MAAQ,IAAI,OAAQ,QACtC,GAAI,EAAI,IAAI,QACV,QAAQ,UAAY,UAAY,MAChC,QAMR,MAAK,aACH,SAAQ,8BAA8B,eAGjC,SAAQ,eAAe,SAAU,QAAS,SAG5C,sBAAwC,CAC7C,WAAY,YACZ,YAAa,MACb,WAAY,uCCjEkB,qBAAa,wBAKvC,mCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,MAAO,QAAU,QACjB,cAAe,aAAc,gBAAkB,MAEtD,iBAAiB,MAAO,qBAExB,cAAkB,SAAQ,KAAK,IAAI,MAAM,QAAQ,kBAC9B,SAAQ,KAAK,IAAI,OAAO,QAAQ,QAE5C,iBAAmB,yBACtB,UAAW,WAAY,cAAe,aAAc,gBAExD,MAAO,UAAQ,eACX,CAAC,gBAAgB,QAAS,QAAS,GAAI,YAAW,kBAGjD,8BAAgD,CACrD,WAAY,oBACZ,YAAa,MACb,WAAY,8CC7BkB,qBAAa,wBAIvC,mCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,MAAO,QAAU,QACjB,cAAe,aAAc,eAAgB,oBAChD,MAEJ,iBAAiB,MAAO,2BAExB,cAAkB,SAAQ,KAAK,IAAI,MAAM,QAAQ,kBAC9B,SAAQ,KAAK,IAAI,OAAO,QAAQ,QAE5C,gBAAiB,cAAgB,yBACpC,UAAW,WAAY,cAAe,aAAc,eACpD,oBAEJ,MAAO,CACL,SAAQ,eACJ,CAAC,gBAAgB,QAAS,QAAS,GAAI,YAAW,kBACtD,SAAQ,eAAe,GAAI,QAAS,GAAI,YAAW,CAAC,iBAGjD,8BAAgD,CACrD,WAAY,oBACZ,YAAa,MACb,WAAY,8CChCkB,qBAAa,wBAIvC,mCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,MAAO,QAAU,QACjB,cAAe,aAAc,eAAgB,cAAgB,MAEpE,iBAAiB,MAAO,8BAExB,cAAkB,SAAQ,KAAK,IAAI,MAAM,QAAQ,kBAC9B,SAAQ,KAAK,IAAI,OAAO,QAAQ,wBAE1B,8BACD,+BACE,+BACF,cAEjB,gBAAiB,gBAAkB,yBACtC,UAAW,WAAY,iBAAkB,gBACzC,kBAAmB,iBAEvB,MAAO,CACL,SAAQ,eACJ,CAAC,gBAAgB,QAAS,QAAS,GAAI,YAAW,kBACtD,SAAQ,eACJ,CAAC,eAAe,QAAS,UAAW,GAAI,cAAa,kBAItD,8BAAgD,CACrD,WAAY,oBACZ,YAAa,MACb,WAAY,qBCnCR,uBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,SAAW,QACX,MAAO,QAAS,UAAY,MAEnC,iBAAiB,QAAS,UAE1B,gBAAoB,aAAK,cAAc,QAAQ,WAEnC,GAAI,cAAa,YAAc,OAC3C,IAAI,KAAK,UACT,eAAmB,SAAQ,KAAK,IAAI,QAAQ,QAAQ,OAEpD,cAAiB,EAAG,MAAQ,YAAa,EAAE,MACrC,WAAW,QAAU,GAAK,WAAW,OAAS,OAChD,KAAI,MAAQ,MAAQ,WAAW,QAAU,SAI7C,MAAO,UAAQ,eAAe,CAAC,GAAG,QAAQ,MAAO,OAAQ,QAAS,KAG7D,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,SCvBR,0BAEJ,IAAO,OAAQ,kBAAW,MACnB,GAAK,OAEZ,GAAI,EAAE,QAAU,SACd,KAAM,IAAI,OAAM,iDACX,GAAI,EAAE,QAAU,aACrB,aAAiB,MAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,aACjC,WAAU,CAAC,OAAQ,CAAC,EAAG,UAAW,QAAA,oBAC3B,MAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,aACjC,WAAU,CAAC,OAAQ,CAAC,EAAG,UAAW,QAAA,kBAE7B,SAAQ,CAAC,OAAQ,CAAC,KAAM,EAAG,KAAM,GAAI,QAAA,WAEpD,MAAA,UAAQ,8BAA8B,UACtC,SAAQ,8BAA8B,GACtC,SAAQ,8BAA8B,UACtC,SAAQ,8BAA8B,GAE/B,WAEP,OAAO,OAAK,CAAC,QAAA,SAAS,MAAO,CAAC,MAAO,EAAE,MAAO,MAAO,EAAG,MAAO,EAAE,SAI9D,oBAAsC,CAC3C,WAAY,UACZ,YAAa,MACb,WAAY,YC7BR,yBAEJ,IAAO,OAAQ,kBAAW,MACnB,GAAK,OAEZ,GAAI,EAAE,QAAU,SACd,KAAM,IAAI,OAAM,gDACX,GAAI,EAAE,QAAU,aACrB,aAAiB,MAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,aACjC,UAAS,CAAC,OAAQ,CAAC,EAAG,UAAW,QAAA,oBAC1B,MAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,aACjC,WAAU,CAAC,OAAQ,CAAC,EAAG,UAAW,QAAA,kBAE7B,SAAQ,CAAC,OAAQ,CAAC,KAAM,EAAG,KAAM,GAAI,QAAA,WAEpD,MAAA,UAAQ,8BAA8B,UACtC,SAAQ,8BAA8B,GACtC,SAAQ,8BAA8B,UACtC,SAAQ,8BAA8B,GAE/B,WAEP,OAAO,OAAK,CAAC,QAAA,SAAS,MAAO,CAAC,MAAO,EAAE,MAAO,MAAO,EAAG,MAAO,EAAE,SAI9D,mBAAqC,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,WChCR,oBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,MAAQ,MAEf,GAAI,OAAO,SAAW,EACpB,MAAO,aACH,CAAC,OAAQ,CAAC,MAAO,OAAO,IAAK,QAAA,SAAS,MAAO,CAAC,IAAK,QAGzD,UAAc,OAAO,GAAG,YACV,OAAO,GAAG,MAExB,OAAO,QAAQ,IACb,aAAK,kBACD,MAAO,EAAE,MACT,yDACJ,aAAK,OACD,QAAU,EAAE,MACZ,IAAM,2DAGZ,4BAA8C,mBACtB,OAAO,IAAI,IACjC,cACI,YAAW,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,SAAS,MAAO,CAAC,IAAK,QAC1D,MAAA,yBAAwB,KAAK,WACtB,mBAGM,SAAO,CAAC,OAAQ,gBAAiB,QAAA,SAAS,MAAO,CAAC,QAEjE,MAAA,yBAAwB,QACpB,GAAK,SAAQ,8BAA8B,IAExC,OAGF,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,MC3CR,qBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,SAAU,eAAiB,MAElC,iBAAiB,EAAG,OAEpB,aAAiB,SAAS,IACtB,QAAU,GAAE,GAAqB,EAAE,MAAM,GAAK,GAAE,UAEtC,SAAS,IAAI,IAAK,GAAE,UAEpB,SAAQ,KAAK,IAAI,EAAE,QAAQ,aAC3B,aAAK,cAAc,EAAE,aACrB,EAAE,MAAM,gBACL,aAAK,eAAe,EAAE,kBAEpB,aAAK,cAAc,qBACnB,SAAS,qBACN,aAAK,eAAe,kBAEtC,aAAK,uBAAuB,EAAE,MAA0B,YAExD,gBAAkB,GACpB,QAAQ,KAAK,eAGf,UAAa,EAAG,EAAI,MAAO,KACzB,YAAe,aAAK,WAAW,EAAG,MAAO,oBACvB,QAAO,IAAI,QAAU,EAAI,MAAM,cAChC,aAAK,WAAW,UAAW,WAAY,eAExD,QAAQ,UAAY,MAAM,GAG5B,UAAc,SAAQ,MAAM,QAAS,SAAU,EAAE,OAEjD,MAAO,CAAC,OAAQ,MAAO,MAAO,SAAU,MAAO,EAAE,OAG5C,gBAAkC,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,eC5CV,6BAA6B,OAA0B,KAAK,IAAI,EAAG,UACpD,iBAAiB,IAAK,mBAEF,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,OCPR,sBAEJ,IAAO,iBAAS,OAAS,MAClB,MAAO,KAAM,MAAO,YAAQ,aAEpB,UAAU,MAAO,KAAM,MAAM,OAC5C,MAAO,UAAQ,eAAe,CAAC,OAAO,QAAS,MAAO,QAGjD,gBAAkC,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,oBCbY,gBAAgB,WAAY,IAAQ,EAAI,qBAEpB,CAC5C,WAAY,WACZ,YAAa,MACb,WAAY,aCJR,+BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,QAAU,QACV,aAAc,iBAAkB,MAAQ,MAE/C,iBAAiB,OAAQ,kBAEzB,kBAAsB,aAAK,eAAe,OAAO,4BACnB,4CAEoB,OAAO,cACzC,SAAQ,KAAK,IAAI,OAAO,QAAQ,cACjC,GAAI,cACf,aAAK,cAAc,CAAC,MAAO,UAAW,SAAU,kCAEP,CAC1C,cAAgB,UAAY,EAAK,UAAY,EAAI,UACjD,cAAgB,SAAW,EAAK,SAAW,EAAI,8BAGJ,CAC3C,cAAgB,UAAY,EAAK,UAAY,EAAI,UACjD,cAAgB,SAAW,EAAK,SAAW,EAAI,oBAElC,wBACc,mBAAmB,GAAK,oBAAoB,yBAC5C,mBAAmB,GAAK,oBAAoB,GAC1E,UAAa,EAAG,EAAI,MAAO,IACzB,UAAa,EAAG,EAAI,UAAW,KAC7B,kBACI,iBACF,cAAgB,sBAAyB,GAAI,IAAO,GAEpD,cAAgB,sBAAwB,EAG1C,mBAAuB,KAAK,IAAI,EAAG,KAAK,MAAM,wBAC9B,cAAgB,6BACV,KAAK,IAAI,UAAY,EAAG,KAAK,KAAK,6BAEpD,EAAI,cAAc,GAAK,eAAiB,cAAc,gBAEtD,EAAI,cAAc,GAAK,cAAgB,cAAc,GACzD,UAAa,EAAG,EAAI,SAAU,KAC5B,kBACI,iBACF,cAAgB,sBAAyB,GAAI,IAAO,GAEpD,cAAgB,sBAAwB,EAE1C,mBAAuB,KAAK,IAAI,EAAG,KAAK,MAAM,wBAC9B,cAAgB,6BACV,KAAK,IAAI,SAAW,EAAG,KAAK,KAAK,8BACjC,aAAe,eAAiB,cAAc,iBAC9C,aAAe,eAAiB,cAAc,kBAC7C,aAAe,cAAgB,cAAc,kBAC7C,aAAe,cAAgB,cAAc,GACpE,UAAa,EAAG,EAAI,YAAa,KAI/B,YAAgB,QAAQ,cAAgB,cACrB,QAAQ,cAAgB,YAC1B,QAAQ,eAAiB,eACtB,QAAQ,eAAiB,OAEjC,QAAW,UAAW,SAAW,eAC9B,WAAc,aAAc,YAAc,iBACxC,IAAO,QAAS,KAAO,QAExC,OAAO,aAAe,WAM9B,MAAO,UAAQ,eACX,CAAC,MAAO,UAAW,SAAU,aAAc,UAAW,QAGrD,yBAA2C,CAChD,WAAY,eACZ,YAAa,MACb,WAAY,iBCvFR,kCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,OAAQ,IAAM,QACd,cAAgB,MAEvB,iBAAiB,CAAC,GAAI,QAAS,sBAE/B,kBAAsB,aAAK,eAAe,OAAO,oCAET,OAAO,wBACnB,GAAG,aAEhB,GAAI,cAAa,MAAQ,QAAU,OAAS,sBAOlB,CACtC,cAAgB,QAAU,EAAK,QAAU,EAAI,QAC7C,cAAgB,OAAS,EAAK,OAAS,EAAI,uBAGL,CACtC,cAAgB,QAAU,EAAK,QAAU,EAAI,QAC7C,cAAgB,OAAS,EAAK,OAAS,EAAI,oBAG1B,eAAe,GAAK,eAAe,cACpC,eAAe,GAAK,eAAe,YAKrC,SAAQ,KAAK,IAAI,GAAG,QAAQ,cAChC,EACb,UAAa,EAAG,EAAI,MAAO,KACzB,YAAgB,EAAI,cAAc,GAClC,UAAa,EAAG,EAAI,QAAS,KAC3B,QAAY,EAAI,wBACI,KAAK,MAAM,oBACR,KAAK,IAAI,KAAK,KAAK,KAAM,QAAU,gBAErC,QAAU,YAAc,cAAc,mBACnC,QAAU,eAAiB,cAAc,WAEjD,IAAM,2BACC,EAAM,QAC7B,UAAa,EAAG,EAAI,OAAQ,KAC1B,QAAY,EAAI,wBACK,KAAK,MAAM,mBACV,KAAK,IAAI,KAAK,KAAK,KAAM,OAAS,WACxC,IAAM,4BACC,EAAM,wBAEL,aAAe,aAAe,cAAc,oBAEhE,aAAe,cAAgB,cAAc,sBAE7C,gBAAkB,aAAe,cAAc,uBAE/C,gBAAkB,cAAgB,cAAc,qCAGhD,eAAiB,0CACc,eAAiB,mCACjB,QAAU,mCACjB,QAAU,QACtC,UAAa,EAAG,EAAI,MAAO,KACzB,UAAc,SAAS,UACvB,OAAO,gBAAkB,IACrB,MAAQ,kCACZ,OAAO,iBAAmB,IAAM,MAAQ,2BACxC,OAAO,mBAAqB,IAAM,MAAQ,2BAC1C,OAAO,oBAAsB,IAAM,MAAQ,uBAMnD,MAAO,UAAQ,eACX,CAAC,MAAO,OAAQ,QAAS,OAAQ,UAAW,QAG3C,8BAA+C,CACpD,WAAY,mBACZ,YAAa,MACb,WAAY,oBC5FR,sCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,QAAU,QACV,aAAc,iBAAkB,MAAQ,MAE/C,iBAAiB,OAAQ,yBAEzB,kBAAsB,aAAK,eAAe,OAAO,4BACnB,4CAEoB,OAAO,cACzC,SAAQ,KAAK,IAAI,OAAO,QAAQ,cACjC,GAAI,cAAa,MAAQ,UAAY,SAAW,gCAElB,CAC1C,cAAgB,UAAY,EAAK,UAAY,EAAI,UACjD,cAAgB,SAAW,EAAK,SAAW,EAAI,8BAGJ,CAC3C,cAAgB,UAAY,EAAK,UAAY,EAAI,UACjD,cAAgB,SAAW,EAAK,SAAW,EAAI,gCAGpB,mBAAmB,GAAK,oBAAoB,yBAC5C,mBAAmB,GAAK,oBAAoB,gBAEvD,EACnB,UAAa,EAAG,EAAI,MAAO,KACzB,gBAAoB,EAAI,cAAc,GACtC,UAAa,EAAG,EAAI,UAAW,KAC7B,kBAAsB,iBAClB,sBAAyB,GAAI,IAC7B,sBAAwB,mBACL,KAAK,IACxB,UAAY,EACZ,aAAe,KAAK,MAAM,eAAiB,KAAK,MAAM,gBACtD,kBACF,kBAAmB,KAAK,IAAI,EAAG,mBAEjC,cAAkB,YAAc,iBAAmB,cAAc,GACjE,UAAa,EAAG,EAAI,SAAU,KAC5B,kBAAsB,iBAClB,sBAAyB,GAAI,IAC7B,sBAAwB,mBACL,KAAK,IACxB,SAAW,EACX,aAAe,KAAK,MAAM,eACX,KAAK,MAAM,gBAC1B,kBACF,kBAAmB,KAAK,IAAI,EAAG,mBAEjC,cAAkB,UAAY,iBAAmB,cAAc,GAC/D,UAAa,EAAG,EAAI,YAAa,KAG/B,WAAe,QAAQ,UAAY,GACnC,OAAO,gBAAkB,UAMjC,MAAO,UAAQ,eACX,CAAC,MAAO,UAAW,SAAU,aAAc,OAAO,MAAO,QAGxD,gCAAkD,CACvD,WAAY,sBACZ,YAAa,MACb,WAAY,wBC1ER,yCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,OAAQ,IAAM,QACd,cAAgB,MAEvB,iBAAiB,CAAC,GAAI,QAAS,6BAE/B,kBAAsB,aAAK,eAAe,OAAO,iBAC/B,aAAK,eAAe,GAAG,oCACD,OAAO,wBACnB,GAAG,aAEhB,GAAI,cAAa,MAAQ,QAAU,OAAS,gBAC1C,SAAQ,KAAK,IAAI,GAAG,QAAQ,sBAKJ,CACtC,cAAgB,QAAU,EAAK,QAAU,EAAI,QAC7C,cAAgB,OAAS,EAAK,OAAS,EAAI,uBAGL,CACtC,cAAgB,QAAU,EAAK,QAAU,EAAI,QAC7C,cAAgB,OAAS,EAAK,OAAS,EAAI,oBAG1B,eAAe,GAAK,eAAe,cACpC,eAAe,GAAK,eAAe,kBAE/B,EAAI,0BACL,EAAI,qBAIP,KAAK,KAAK,gBAAkB,EAAK,WAClC,KAAK,KAAK,eAAiB,EAAK,EAGlD,UAAa,EAAG,EAAI,MAAO,KACzB,gBAAoB,EAAI,cAAc,GACtC,UAAa,EAAG,EAAI,QAAS,KAC3B,cAAkB,YAAc,EAAI,cAAc,cAG/B,KAAK,MAAM,EAAI,yBACjB,KAAK,MAAM,WAAc,UAAY,GACtD,UAAa,EAAG,EAAI,OAAQ,KAC1B,cAAkB,UAAY,EAAI,cAAc,cAG7B,KAAK,MAAM,EAAI,wBACjB,KAAK,MAAM,WAAc,SAAW,GAErD,UAAa,EAAG,EAAI,MAAO,KACzB,UAAY,EAGZ,iBAAoB,EAAG,SAAW,UAAW,YAC3C,QAAY,SAAW,SAEvB,GAAI,IAAM,GAAK,KAAO,QACpB,SAGF,cAAkB,YAAc,IAAM,UAAU,iBAC1B,IAAM,6BACH,KAAK,IAC1B,QAAU,EACV,aAAe,KAAK,MAAM,eACX,KAAK,MAAM,gBAC9B,GAAI,IAAM,iBACR,SAEF,iBAAoB,EAAG,SAAW,SAAU,YAC1C,QAAY,SAAW,SAEvB,GAAI,IAAM,GAAK,KAAO,OACpB,SAGF,cAAkB,UAAY,IAAM,UAAU,iBACxB,IAAM,4BACH,KAAK,IAC1B,OAAS,EACT,aAAe,KAAK,MAAM,eACX,KAAK,MAAM,gBAE1B,IAAM,kBACR,QAAS,SAAS,UAAY,KAIpC,OAAO,UAAY,GAAK,SAMhC,MAAO,UAAQ,eAAe,OAAO,MAAO,OAAO,MAAO,QAGrD,qCAAsD,CAC3D,WAAY,0BACZ,YAAa,MACb,WAAY,2BC7GR,yBAIJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,MAAQ,MAEf,iBAAiB,EAAG,WAEpB,UAAc,EAAE,MAAM,aAER,aAAK,eAAe,KAAM,EAAE,OAC1C,GAAI,QAAU,EACZ,MAAO,WAAS,CAAC,OAAQ,CAAC,GAAI,QAAA,WAGhC,WAAe,GAAI,cAAa,EAAE,MAAO,EAAE,YAC9B,SAAQ,WAAW,GAEhC,UAAa,EAAG,EAAI,OAAO,KAAM,KAC/B,WAAe,OAAO,WAAW,SACnB,OAAO,QACrB,MAAM,QAAQ,GAAK,MAAM,GAAK,EAAE,MAAM,GAAK,EAAI,MAAM,IACrD,OAAO,IAAI,KAAK,IAAI,GAAG,OAAQ,GAAG,QAGpC,MAAO,UAAQ,eAAe,OAAO,MAAO,OAAO,MAAO,OAAO,QAG5D,kBAAoC,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,kCClCsC,CAClD,WAAY,iBACZ,YAAa,MACb,WAAY,EAAE,OAAQ,MAAO,qBAC3B,IAAO,cAAS,QACT,QAAS,UAAW,QAAU,iBAClB,gBAEJ,aAAK,uBAChB,OAAM,MAA0B,aAAK,cAAc,OAAM,mDACP,OAAM,wBAGxD,qBAAa,eAAe,OAAQ,YAAa,6BAC5B,cAEP,KAAK,IAAI,mBACT,KAAK,IAAI,mBACT,WAAW,KAAK,IAAI,OAAM,QAAQ,OAEpD,iBAAoB,EAAG,SAAW,MAAO,YACvC,gBAAoB,SAAW,WAAa,YAAc,YAE1D,YAAe,EAAG,IAAM,YAAa,OACnC,cAAkB,IAAO,YAAa,aAEtC,YAAe,EAAG,IAAM,WAAY,OAClC,cAAkB,IAAM,YAExB,gBAAmB,EAAG,QAAU,YAAa,WAC3C,YAAe,CAAC,MAAO,IAAK,IAAK,WAEvB,QAAO,KACP,QAAO,UAGH,GAAI,SAAW,UAAa,GAAI,SAAW,iBAC3C,GAAI,SAAW,UAAa,GAAI,SAAW,UACzD,OAAS,KAAK,MAAM,OAAS,SAC7B,OAAS,KAAK,MAAM,OAAS,SAE7B,gBAAkB,UAUlB,GATI,MAAO,YAAc,UACnB,WAAY,EACd,YAAc,iBAEd,YAAc,UAAU,UAKxB,QAAU,GAAK,OAAS,YAAc,QAAU,GAChD,OAAS,aAEX,qBAAyB,OAAU,YAAa,8BACvB,OAAS,qBAE9B,YAAc,iBAAmB,iBAAmB,QACxD,YAAc,UAAU,UAG1B,WAAe,YAAc,UAAY,UAAY,QACrD,OAAO,QAAU,eAMzB,WAAe,WAAW,MAAM,OAAQ,OAAM,MAAO,OAAM,OAC3D,MAAO,CAAC,OAAQ,MAAO,OAAM,MAAO,MAAO,OAAM,gBCtEhC,gBAAgB,MAAO,KAE1C,UAAa,KAAK,MAAM,IACxB,MAAI,IAAK,MAAO,GACP,KAAK,MAAM,IACT,GAAK,MAAO,GACd,KAAK,KAAK,IAEb,MAAO,IAAQ,EACV,MAEA,MAAO,gBAKqB,CACvC,WAAY,MACZ,YAAa,MACb,WAAY,QCtBR,0HAKJ,iBAAqB,CAAC,WAAa,UAAW,uBAE1B,QAAQ,mBACR,QAAQ,OAE5B,GAAI,aAAe,EACjB,MAAO,QAAO,MAAsB,QAAQ,OAG9C,WAAe,OAAO,aAAc,QAAQ,OAC3C,OAAO,OAAsB,KAAK,cAEnC,UAAa,EAAG,EAAI,WAAY,KAC9B,UAAc,gBACK,EACnB,UAAa,EAAG,EAAI,UAAW,KAC7B,QAAY,YAAY,EAAI,UAAY,GACxC,MAAM,KAAK,KACX,cAAgB,IAAM,QAAQ,GAGhC,GAAI,aAAe,GAAK,cAAgB,WAAa,UACnD,KAAM,IAAI,OAAM,oBAAoB,6BAA6B,SAGnE,UAAa,EAAG,EAAI,UAAW,IACzB,eACF,OAAO,OAAO,aAAe,UAAY,IACrC,YAAY,EAAI,UAAY,GAEhC,OAAO,OAAO,aAAe,UAAY,GAAK,QAAQ,OAAS,EAC3D,YAAY,GACZ,YAAY,EAAI,UAAY,GAKtC,MAAO,QCtCH,yBAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,QAAS,SAAW,QACpB,OAAS,OAET,UAAW,WAAY,UAAW,QAAS,YAC9C,qBAAa,gBAAgB,QAAS,QAAS,sBAC5B,cAEJ,SAAQ,WAAW,oBACnB,SAAQ,WAAW,gBAEvB,YACX,WAAY,WAAY,MAAO,WAAY,UAAW,WACtD,UAAW,QAAS,EAAsB,gBAE9C,MAAO,UAAQ,eAAe,MAAO,OAAO,MAAO,OAAO,QAGrD,oBAAsC,CAC3C,WAAY,UACZ,YAAa,MACb,WAAY,WC1BR,sBAEJ,IAAO,OAAQ,kBAAW,MACnB,UAAW,EAAG,GAAK,OAE1B,iBAAiB,CAAC,UAAW,EAAG,GAAI,UACpC,kBAAsB,UAAU,MAAM,cAEvB,SAAQ,KAAK,IAAI,UAAU,QAAQ,eAClC,SAAQ,KAAK,IAAI,EAAE,QAAQ,eAC3B,SAAQ,KAAK,IAAI,EAAE,QAAQ,mBACvB,WAAW,EAAE,MAAO,EAAE,iBAEtC,aAAK,oBAAoB,aAAK,cAAc,EAAE,OAAQ,mBAE9C,SAER,gBAAkB,GAAK,cAAgB,GAAK,EAAE,MAAM,SAAW,EAC/D,EACA,aAAK,cAAc,EAAE,MAAM,MAAM,IAErC,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,UAAa,EAAG,EAAI,OAAQ,IACtB,OAAO,KAAO,EAChB,UAAU,SAAW,QAAQ,GAE7B,UAAU,SAAW,QAAQ,GAKnC,MAAO,UAAQ,eAAe,EAAE,MAAO,YAAa,WAG/C,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,mBCtCK,qBAAa,sBAClB,qBAAa,iBAEP,gBAAgB,KAAM,IACpC,IAAM,EACD,MAAQ,GAER,WAAc,MAAK,IAAI,IAAM,eAIA,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,gBCbV,gBAAgB,QAAS,IAAQ,EAAK,GAAI,KAAK,IAAI,CAAC,oBAEb,CACzC,WAAY,QACZ,YAAa,MACb,WAAY,gBCNM,gBAAgB,KAAM,IACpC,GAAK,EACA,GACE,GAAK,EACP,EAEA,cAI6B,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,YCbK,gBAAgB,IAAK,IAAQ,KAAK,IAAI,eAElB,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,YCLM,gBAAgB,KAAM,IAAQ,KAAK,KAAK,gBAEpB,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,gBCAE,gCACE,KAAK,IAAI,UAAW,YAEd,gBAAgB,SAAU,KAGhD,aAAiB,GAAK,CAAC,mBAIN,GAAK,eAET,KAAK,IAAI,WAGtB,MAAI,UACF,OAAS,KACA,SACT,OAAS,GAET,OAAS,KAAK,IAAI,EAAM,MAEnB,wBAGmC,CAC1C,WAAY,SACZ,YAAa,MACb,WAAY,WC5BR,+BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,WAAY,UAAY,MAE/B,iBAAiB,CAAC,GAAI,kBAEtB,UAAa,aAAK,cAAc,6BAEkB,CAAC,CAAC,EAAG,IACvD,iBAAiB,KAAK,GAAI,UAE1B,UAAa,EAAI,WAAW,OAAQ,EAAI,EAAE,MAAM,OAAQ,EAAE,EACxD,iBAAiB,KAAK,CAAC,EAAG,IAG5B,YAAgB,YAAY,WAAW,CACrC,OAAQ,CAAC,GACT,QAAA,SACA,MAAO,CAAC,SAAU,iBAAkB,cAAe,yBAIjD,qBAAa,YAAY,QAAQ,MAAO,WAAY,MAAM,sCAEpB,qBAAa,YACnD,oBAAoB,OAAQ,WAAW,OAAQ,iBAG/C,qBAAa,oBAAoB,QAAQ,MAAO,WAAY,MAAM,kBAEjC,CAAC,EAAG,sBACN,CAAC,MAAO,qCAEvC,UAAQ,CAAC,OAAQ,cAAe,QAAA,SAAS,MAAO,+BAEX,CAAC,EAAG,gCAExB,CAAC,KAAM,4CAExB,WAAU,CAAC,OAAQ,gBAAiB,QAAA,SAAS,MAAO,qCAEb,CAAC,EAAG,6BACN,CAAC,MAAO,qBAClC,UACX,CAAC,OAAQ,oBAAqB,QAAA,SAAS,MAAO,qBAElD,MAAA,UAAQ,8BAA8B,SACtC,SAAQ,8BAA8B,iBACtC,SAAQ,8BAA8B,UAE/B,OAGF,yBAA2C,CAChD,WAAY,eACZ,YAAa,MACb,WAAY,iBCjER,8BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,cAAe,aAAc,cAAgB,QAC7C,aAAe,OAEf,UAAW,WAAY,UAAW,QAAS,YAC9C,qBAAa,gBAAgB,aAAc,cAAe,4BACvC,cAEJ,SAAQ,WAAW,0BACnB,SAAQ,WAAW,4BAElC,SAAQ,KAAK,IAAI,aAAa,QAAQ,OAAO,UAElC,YACX,WAAY,WAAY,YAAa,WAAY,UAAW,WAC5D,UAAW,QAAS,cAAe,gBAEvC,MAAO,UAAQ,eAAe,YAAa,OAAO,MAAO,OAAO,QAG3D,wBAA0C,CAC/C,WAAY,cACZ,YAAa,MACb,WAAY,gBC3BR,sBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,gBAAiB,MAAQ,YAElB,aAAK,eAAe,KAAM,EAAE,OAAO,cAC9B,qBAAa,iBAAiB,EAAG,gBAAiB,aAEvD,GAAI,OAAM,EAAE,MAAM,QAAQ,KAAK,QAChC,EAAE,MAAM,QACrB,MAAO,YAAW,IAAI,IACpB,cAAkB,CAAC,GAAG,MACtB,UAAU,OAAS,EACnB,WACI,QAAM,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,KAAM,aACtD,MAAA,OAAM,QAAU,EACT,SAIJ,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,eC3BM,gBAAgB,KAAM,IAAQ,KAAK,KAAK,gBAEpB,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,qBCJ4B,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,EAAE,OAAQ,qBACpB,IAAO,GAAK,kBACO,SACnB,iBAAiB,EAAG,UAEpB,WAAe,WAAW,KAAK,IAAI,EAAE,QAAQ,iBAC3B,GAAI,cAAa,OAAO,QAC1C,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,GACnC,UAAc,OAAO,GACrB,UAAU,GAAK,MAAQ,MAEzB,WAAe,WAAW,MAAM,UAAW,EAAE,MAAO,EAAE,OACtD,MAAO,CAAC,OAAQ,MAAO,EAAE,MAAO,MAAO,EAAE,eChBzB,gBAAgB,KAAM,aACxC,cAAkB,MAClB,MAAI,OAAM,IACD,IAEA,GAAK,EAAI,EAAI,UAAU,mBAIM,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OCRR,6BAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QAEV,MACA,IACA,QACA,UACA,QACA,aACA,YACA,gBACE,MAEJ,iBAAiB,EAAG,gBAEpB,IAAO,WAAY,OAAQ,SAAU,KAAM,SAAU,UACjD,mBAAW,UACP,EAAE,MAAO,MAAO,IAAK,QAAS,UAAW,QAAS,aAClD,YAAa,mBAEV,UAAQ,CAAC,OAAQ,CAAC,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,mBAGzD,GAAI,YACF,WACI,QAAM,CAAC,OAAQ,CAAC,EAAG,IAAK,QAAA,SAAS,MAAO,CAAC,MAAO,OAAQ,QAC5D,OAAS,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,MAAO,YAE/D,SAAQ,8BAA8B,gBAC7B,SAAS,KAAK,MAAQ,OAAS,GACxC,OAAS,SAAQ,eAAe,SAAU,EAAE,MAAO,SAEnD,SAAa,SAAQ,WAAW,WACjB,iBAAiB,SAAU,KAAM,SAAU,QAE1D,OAAS,SAAQ,eAAe,OAAO,MAAO,OAAO,MAAO,OAAO,QAGrE,mBACI,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,MAAO,YAE1D,MAAA,UAAQ,8BAA8B,IACtC,SAAQ,8BAA8B,QAE/B,eAGF,uBAAyC,CAC9C,WAAY,aACZ,YAAa,MACb,WAAY,oBC3DK,gBAAgB,IAAK,IAAQ,KAAK,IAAI,eAElB,CACrC,WAAY,IACZ,YAAa,MACb,WAAY,YCLM,gBAAgB,KAAM,IAAQ,KAAK,KAAK,gBAEpB,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OCHR,qBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,MAAQ,MAEf,iBAAiB,EAAG,QACpB,WAAe,SAAS,SAAQ,WAAW,GAAI,MAE/C,MAAO,UAAQ,eAAe,OAAO,MAAO,OAAO,MAAO,OAAO,QAG5D,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,OChBR,oBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,EAAG,QAAU,MAEpB,iBAAiB,EAAG,QAEpB,UAAc,SAAQ,KAAK,IAAI,EAAE,QAAQ,oCAErC,SAAS,MAAO,EAAE,MAAO,EAAE,MAA0B,EAAG,QAE5D,MAAO,CACL,SAAQ,eACJ,YAAY,MAAO,YAAY,MAAO,YAAY,QACtD,SAAQ,eACJ,eAAe,MAAO,eAAe,MAAO,eAAe,SAI5D,eAAiC,CACtC,WAAY,KACZ,YAAa,MACb,WAAY,MCvBR,uBAGJ,IAAO,OAAQ,MAAO,kBAAW,MAC1B,MAAQ,OACR,GAAK,OACZ,iBAAiB,EAAG,UAEpB,WAAe,SAAQ,KAAK,IAAI,EAAE,QAAQ,QACnC,aAAc,YAAa,SAC9B,WAAW,OAAQ,KAAM,EAAE,MAAO,EAAE,OACxC,MAAO,CACL,SAAQ,eAAe,YAAa,EAAE,MAAO,cAC7C,SAAQ,eAAe,CAAC,QAAQ,QAAS,QAAS,UAI/C,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,SCrBR,sBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,OAAS,QACX,MAAQ,MAET,KAAO,GACT,OAAQ,MAAM,MAAM,QAGtB,cAAkB,MAAM,MAAM,WAElB,MAAM,MAAM,eACG,GAAI,OAAM,UAAY,YAClC,EACf,UAAa,EAAG,EAAI,UAAW,IACzB,IAAM,MACR,UAAS,YAAc,MAAM,MAAM,IAIvC,UAAc,GAAI,OAAM,WAAW,KAAK,QAC3B,MAAM,MAAM,QACzB,KAAK,MAAQ,EACb,QAAY,GAAI,OAAM,KACtB,UAAa,EAAG,EAAI,IAAI,OAAQ,KAC9B,MAAM,MAAQ,EACd,YAAgB,QAAM,CAAC,OAAQ,CAAC,EAAG,OAAQ,QAAA,SAAS,MAAO,CAAC,MAAO,QACnE,IAAI,GAAK,UAAQ,CAAC,OAAQ,CAAC,EAAG,SAAU,QAAA,SAAS,MAAO,CAAC,MAAO,YAChE,SAAQ,8BAA8B,SAGxC,MAAO,KAGF,iBAAmC,CACxC,WAAY,OACZ,YAAa,MACb,WAAY,QClCR,mCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,YAAc,QACjB,aAAe,MAEtB,iBAAiB,EAAG,sBAEpB,UAAc,EAAE,MAAM,sBACC,WAAW,MAAM,WAC5B,iBACwB,YAInB,MAAQ,2BACP,WAElB,UAAa,EAAG,EAAI,SAAU,EAAE,GAC9B,aAAiB,YACb,CAAC,OAAQ,CAAC,MAAO,aAAc,QAAA,SAAS,MAAO,CAAC,IAAK,EAAI,KAC7D,YAAc,SACd,cAAc,KAAK,UAGrB,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,gBAAoB,aAAK,kBAAkB,EAAoB,mBAC7C,SAAQ,eAAe,GAAI,QAAS,kBAElD,OAAM,CAAC,OAAQ,CAAC,EAAG,UAAW,EAAG,aAAc,QAAA,sBAE/C,OAAK,CAAC,OAAQ,CAAC,EAAG,MAAO,QAAA,SAAS,MAAO,CAAC,MAAO,mBAEjD,UAAS,CAAC,OAAQ,CAAC,EAAG,WAAY,EAAG,GAAI,QAAA,yBAEzC,MAAI,CAAC,OAAQ,CAAC,EAAG,OAAM,QAAA,SAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,IAAI,KAAK,eACT,cAAc,KAAK,WACnB,cAAc,KAAK,MACnB,cAAc,KAAK,YACnB,cAAc,KAAK,OACnB,cAAc,KAAK,eAGrB,WAAe,KAAK,CAAC,OAAQ,IAAK,QAAA,SAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,eAAc,QAAQ,GAAK,SAAQ,8BAA8B,IAE1D,OAGF,6BAA+C,CACpD,WAAY,mBACZ,YAAa,MACb,WAAY,mCC2FwB,CACpC,mBACA,UACA,WACA,YACA,UACA,WACA,UACA,UACA,aACA,aACA,WACA,YACA,WACA,YACA,YACA,cACA,gBACA,qBACA,mBACA,kBACA,gBACA,qBACA,eACA,WACA,WACA,WACA,cACA,iBACA,aACA,2BACA,0BACA,aACA,6BACA,4BACA,aACA,UACA,WACA,oBACA,aACA,oBACA,mBACA,4BACA,0CACA,yCACA,WACA,iBACA,8BACA,+BACA,cACA,UACA,eACA,YACA,UACA,UACA,iBACA,YACA,UACA,WACA,oBACA,YACA,eACA,kBACA,2BACA,eACA,eACA,cACA,mBACA,eACA,WACA,WACA,eACA,YACA,YACA,gBACA,WACA,gBACA,eACA,UACA,YACA,iBACA,iBACA,gBACA,UACA,cACA,cACA,cACA,gBACA,qBACA,mBACA,wBACA,UACA,WACA,UACA,cACA,gBACA,UACA,kBACA,eACA,UACA,0BACA,0BACA,0BACA,eACA,aACA,eACA,WACA,YACA,UACA,YACA,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AClC,GAAI,kBAAiB,UAAW,kBACjC,SAAQ,cAAc,QAAS,CAAC,GAAG,aAAa,OAG/D,GAFA,UAAU,KAAK,QAEX,OAAO,MAAM,KAAO,aACtB,MAAO,QAET,cAAkB,OAAM,CACtB,QAAA,SACA,MAAO,CAAC,MAAO,EAAG,KAAM,aAAa,KAAM,EAAG,MAAO,sBAEtC,MAAK,CACpB,OAAQ,CAAC,EAAG,WACZ,QAAA,SACA,MAAO,CAAC,KAAM,CAAC,QAAS,eAG1B,UAAU,KAAK,WACf,UAAU,KAAK,UAEf,YACI,aAAa,OAAQ,UAAW,SAAU,MAAO,cACrD,MAAO,sBAGO,aAChB,IAAK,qBAAsB,WAAY,YAAa,sBAGpD,UAAQ,CAAC,OAAQ,CAAC,EAAG,aAAc,QAAA,SAAS,MAAO,CAAC,MAAO,mBAElD,SACb,GAAI,aAAe,MACjB,UAAU,KAAK,UACf,SAAa,qBAAa,uBAAuB,aACjD,OAAS,YAAU,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,QAG5D,MAAA,WAAU,QAAQ,GAAK,SAAQ,8BAA8B,IACtD,OAGF,8BAA+C,CACpD,WAAY,mBACZ,YAAa,QACb,WAAY,oCC4DwB,CACpC,UACA,cACA,oBACA,WACA,YACA,aACA,WACA,YACA,WACA,WACA,cACA,cACA,YACA,aACA,aACA,YACA,aACA,iBACA,eACA,oBACA,mBACA,mBACA,iBACA,sBACA,gBACA,YACA,YACA,kBACA,kBACA,eACA,cACA,4BACA,2BACA,cACA,8BACA,0BACA,cACA,WACA,YACA,qBACA,cACA,qBACA,oBACA,2CACA,0CACA,6BACA,YACA,iBACA,WACA,eACA,aACA,WACA,WACA,kBACA,aACA,WACA,YACA,qBACA,aACA,gBACA,iBACA,mBACA,4BACA,gBACA,gBACA,eACA,oBACA,gBACA,YACA,YACA,gBACA,aACA,aACA,iBACA,YACA,iBACA,gBACA,aACA,WACA,kBACA,kBACA,iBACA,WACA,iBACA,eACA,oBACA,mBACA,yBACA,eACA,YACA,WACA,eACA,iBACA,WACA,mBACA,gBACA,WACA,2BACA,2BACA,2BACA,gBACA,cACA,gBACA,YACA,aACA,WACA,aACA,YACA,aACA,YACA,eACA,kBACA,aACA,YACA,eACA,sBACA,0BACA,6BACA,iCACA,eACA,wBACA,aACA,aACA,iBACA,cACA,YACA,eACA,YACA,WACA,YACA,aACA,eACA,gBACA,sBACA,qBACA,cACA,YACA,cACA,yBACA,YACA,oBACA,WACA,WACA,WACA,YACA,YACA,YACA,iBACA,cACA,cACA,0BACA,kBAGF,uBAA2B,gBACzB,eAAe,cErUjB,cAAgB,kBEmCO,CACrB,YAAa,QACb,mBAAoB,UACpB,qBAAsB,UACtB,YAAa,SACb,cAAe,SACf,iBAAkB,SAClB,KAAQ,oBC3BV,AAAA,qBACE,UAAA,UAAA,QAAA,GAAA,UACA,UAAA,UAAA,MAAA,GAAA,QACA,UAAA,UAAA,KAAA,GAAA,OACA,UAAA,UAAA,OAAA,GAAA,SACA,UAAA,UAAA,UAAA,GAAA,cALU,UAAA,UAAQ,KASpB,sBAAA,AAAA,8BACE,mBAAA,mBAAA,OAAA,GAAA,SACA,mBAAA,mBAAA,KAAA,GAAA,OACA,mBAAA,mBAAA,MAAA,GAAA,QACA,mBAAA,mBAAA,MAAA,GAAA,QACA,mBAAA,mBAAA,UAAA,GAAA,cALU,mBAAA,mBAAiB,KCJ7B,oBAOA,yBACE,gBAAkB,SAAQ,KAAK,MAAM,aAAc,KAAiB,CAClE,SACA,QACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIJ,gCAKE,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,EAAG,KAAM,wBAA0B,OAE7C,GAAI,EAAE,QAAU,WAAa,EAAE,QAAU,UACvC,KAAM,IAAI,OACN,+DAGN,IAAO,WAAY,WAAY,uBAAY,gBAAkB,UACjD,SAAQ,UAAU,IAAI,EAAE,QAAQ,OAChC,SAAQ,UAAU,IAAI,EAAE,QAAQ,UAE/B,EACb,GAAI,MAAQ,MACV,aAAiB,SAAQ,UAAU,IAAI,KAAK,QAC5C,GAAI,SAAS,MAAM,SAAW,EAC5B,KAAM,IAAI,OACN,uDACQ,SAAS,MAAM,WAE7B,OAAS,SAAS,GAEpB,6BAAiC,wBAA0B,KACvD,EACA,SAAQ,UAAU,IAAI,uBAAuB,QAAQ,mBAErD,kBAAkB,aACtB,GAAI,iBAAmB,KACrB,KAAM,IAAI,OACN,GAAG,iFAIT,YAAgB,WAAa,EAAE,MAAM,GAAK,EAAE,MAAM,YACjC,WAAa,EAAE,MAAM,GAAK,EAAE,MAAM,YAClC,EAAE,MAAM,OAEb,SAAQ,WAAW,CAAC,SAAU,QAAS,UAAW,EAAE,aAClD,SAAQ,UAAU,IAAI,IAAI,QAAQ,eAE5B,GAAI,YAAW,GAAI,YAAW,EAAE,OAAO,oBACvC,GAAI,YAAW,GAAI,YAAW,EAAE,OAAO,QAE3D,MAAA,iBACI,IAAK,YAAa,EAAE,MAAM,OAAQ,IAAK,YAAa,EAAE,MAAM,OAC5D,WAAY,WAAY,gBAAiB,OAAQ,yBACjD,gBAAkB,EAAG,OAElB,IAGF,sBAAwC,CAC7C,WAAY,aACZ,YAAa,OACb,UAAW,MACX,WAAY,kBCvFR,6CACJ,cAEA,8BACE,UACI,SAAQ,KAAK,MAAM,WAAY,KAAiB,CAAC,SAAU,WAGjE,2BAEE,IAAO,iBAAS,QAAS,IAAM,SACnB,SAAQ,UAAU,IAAI,EAAE,QAAQ,OAChC,SAAQ,WAAW,EAAE,MAAO,EAAE,aAC5B,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAGhD,MAAI,cAAK,cAAc,IAAI,SAAW,GAItC,UAAS,IAAK,OACP,IAGT,MAAO,CAAC,WAAY,YAAa,OAAQ,UAAA,WAAW,WAAA,aCzB/C,eAAgC,wBAAwB,KCGzD,4EAGJ,cAKA,8BACE,UAAW,SAAQ,KAAK,MAAM,WAAY,KAAiB,CACzD,SACA,QACA,SACA,SACA,QACA,SACA,SACA,WAIJ,2BAEE,IAAO,iBAAS,QAAU,MACnB,EAAG,GAAK,WACH,SAAQ,UAAU,IAAI,EAAE,QAAQ,OAChC,SAAQ,UAAU,IAAI,EAAE,QAAQ,cAEzB,OAAS,KAAO,MAAQ,EAAE,eAC5B,qBAAa,2BAA2B,EAAE,MAAO,EAAE,WACxD,SAAQ,WAAW,SAAU,YAGzC,GAAI,aAAK,cAAc,YAAc,EACnC,MAAO,KAGT,gBAAoB,GAAI,YAAW,GAAI,YAAW,EAAE,OAAO,oBACvC,GAAI,YAAW,GAAI,YAAW,EAAE,OAAO,cAC7C,SAAQ,UAAU,IAAI,IAAI,QAAQ,eAC7B,IAAM,UACrB,IAAK,YAAa,EAAE,MAAM,OAAQ,IAAK,YAAa,EAAE,MAAM,OAC5D,SAAS,EAAE,OAAQ,OAGvB,GAAI,yBAAyB,EAAE,QAAU,UACvC,MAAA,eACO,IAGT,mBAAuB,qBAAa,iBAAiB,EAAE,MAAO,yBACvC,qBAAa,iBAAiB,EAAE,MAAO,0BACtC,eAAe,MAAM,OAAU,IAAM,mBACrC,eAAe,MAAM,OAAU,IAAM,GAC7D,GAAI,iBAAmB,gBACrB,MAAA,eACO,IAEP,KAAM,IAAI,OACN,0DACiB,EAAE,SAAS,eAIpC,MAAO,CAAC,WAAY,YAAa,OAAQ,UAAA,WAAW,WAAA,aClEtD,0BAA8B,cAG1B,yBAAyB,IAAK,gCCGlC,6BACE,SAAW,SAAQ,KAAK,MAAM,KAAM,KAAiB,CACnD,QACA,SACA,SACA,WAIJ,oBACE,IAAO,OAAQ,kBAAW,SACd,SAAQ,WAAW,OAAO,GAAG,MAAO,OAAO,GAAG,OAG1D,GAAI,aAAK,cAAc,IAAI,SAAW,EACpC,MAAO,KAGT,aAAiB,OAAO,IAAI,GAAK,SAAQ,UAAU,IAAI,EAAE,QAAQ,kBAC3C,GAAI,YAAW,GAAI,YAAW,UAAU,cAChD,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,MAAA,UAAS,cAAe,SAAS,OAAQ,SAAS,IAAI,OAAQ,OAEvD,IAGF,gBAAiC,CACtC,WAAY,KACZ,YAAa,OACb,UACA,WAAY,MCnCR,yBAEJ,IAAO,QAAS,GAAI,kBAAW,SACnB,SAAQ,WAAW,EAAE,MAAO,EAAE,cAC3B,SAAQ,mBAAmB,WAC1B,SAAQ,mBAAmB,KAC3C,MAAA,SAAQ,IAAI,QACL,IAGF,oBAAqC,CAC1C,WAAY,SACZ,YAAa,OACb,WAAY,yBCPd,0BACE,cAAgB,SAAQ,KAAK,MAAM,UAAW,KAAiB,CAC7D,SACA,QACA,SACA,SACA,SACA,QACA,WAIE,2BAIJ,IAAO,OAAQ,iBAAS,OAAS,yBAGJ,kBAAkB,OAAO,EAAE,MAAO,MAAM,iBAEpD,GACjB,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC3B,KAAK,KAAO,GACd,YAAa,IAGjB,aAAiB,iBAAgB,OAAO,EAAE,MAAO,MAAM,QAC7C,CACR,OAAQ,OAAO,EAAE,OACjB,MAAO,aACP,MAAO,OAAO,EAAE,OAGlB,GAAI,YACF,WAAe,UAAS,CAAC,OAAQ,QAAA,WACjC,MAAA,QAAO,MAAQ,SACR,OAGT,QAAY,SAAQ,WAAW,SAAU,EAAE,WAC/B,SAAQ,UAAU,IAAI,EAAE,QAAQ,SAC9B,SAAQ,UAAU,IAAI,IAAI,QAAQ,aAC9B,GAAI,YAAW,GAAI,YAAW,MAAM,oBAClC,GAAI,YAAW,GAAI,YAAW,EAAE,OAAO,QAE3D,MAAA,eACI,IAAK,YAAa,EAAE,MAAM,OAAQ,SAAS,EAAE,OAAQ,MAAO,UAC5D,KAAK,QACF,IAGT,wCACE,aAAiB,GAAI,OAAM,QAAQ,QACnC,UAAa,EAAG,EAAI,SAAS,OAAQ,IACnC,SAAS,GAAK,QAAQ,KAAK,IAE7B,MAAO,UAGT,uCAEE,aAA2B,WACD,GAC1B,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,EAC9B,MAAM,KAAO,GACf,SAAS,KAAK,MAAM,IAElB,MAAM,KAAK,MAAQ,GACrB,QAAQ,KAAK,KAAK,IAGtB,UAAa,EAAG,EAAI,QAAQ,OAAQ,EAAE,GACpC,cAAgB,GAChB,UAAa,EAAG,EAAI,QAAQ,OAAQ,EAAE,EAChC,QAAQ,IAAM,GACb,aAAc,IAAM,QAAQ,WAAa,QAAQ,KACpD,WAAY,GAGhB,QAAQ,WAAa,EAEvB,MAAO,CAAC,SAAU,SAGb,qBAAsC,CAC3C,WAAY,UACZ,YAAa,OACb,WAAY,YACZ,UAAW,QCxFP,kDAOJ,WAAe,EAAE,YACH,EAAE,MAAM,oBAED,aAAK,eAAe,KAAM,aACpC,0BACU,qBAAa,mBAAmB,KAAM,mBACzC,wBACO,GACzB,GAAI,cAAgB,MAClB,aAA2B,GAAI,OAAM,OACrC,UAAa,EAAG,EAAI,SAAS,OAAQ,IACnC,SAAS,GAAK,OAAO,aAAa,IAGpC,KAAO,qBAAa,iBAAiB,KAAK,OAAQ,OAClD,YACI,YAAU,CAAC,OAAQ,CAAC,GAAI,MAAO,CAAC,KAAM,cAAe,QAAA,WAEzD,QAAY,SAAQ,UAAU,IAAI,EAAE,QAAQ,gBACvB,SAAQ,UAAU,IAAI,YAAY,QAAQ,GAC3D,eAAiB,KACnB,oBAAqB,IAIzB,MAAO,CAAC,WAAY,YAAa,aAAc,KAAM,oBCrCvD,cAIA,0BACE,UAAW,SAAQ,KAAK,MAAM,OAAQ,KAAiB,CACrD,SACA,SACA,SACA,SACA,WAIJ,sBAEE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,MAAQ,OACR,GAAK,WACA,SAAQ,UAAU,IAAI,EAAE,QAAQ,WAC9B,WACF,GAEL,WAAY,KAAM,oBACrB,wBAAwB,EAAG,KAAM,UAErC,GAAI,oBACF,iBAAqB,SAAQ,UAAU,IAAI,WAAW,QAAQ,GAC1D,eAAiB,KAGnB,QAAQ,WACR,QAAU,cAId,aAAiB,OAAM,MAAM,MAAM,EAAG,QAC1B,SAAQ,WAAW,SAAU,eAC3B,SAAQ,UAAU,IAAI,IAAI,QAAQ,aAC9B,aAAK,cAAc,IAAI,iBACvB,OAAM,MAAM,KAAK,IACnC,MAAA,WAAS,QAAS,SAAS,OAAM,OAAQ,UAAW,UAAW,OAE3D,oBAEF,SAAQ,YAAY,WAAW,QAG1B,IAGF,kBAAmC,CACxC,WAAY,OACZ,YAAa,OACb,WAAY,OACZ,UAAW,oBCpDb,0BACE,YAAc,SAAQ,KAAK,MAAM,QAAS,KAAiB,CACzD,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIJ,wBAEE,IAAO,OAAQ,MAAO,kBAAW,OAEvB,OAAO,MACL,SAAQ,UAAU,IAAI,EAAE,QAAQ,IAErC,WAAY,QAAS,UAAK,iBAAmB,eACnC,qBAAa,kBAC1B,EAAE,MAAO,WAAY,QAAS,EAAmB,MAAK,8BAErC,SAAS,yBACV,SAAS,mBACd,SAAS,QAAQ,aACf,SAAS,QAAQ,gBAChB,SAAS,QAAQ,eACnB,SAAS,QAAQ,kBACZ,SAAS,yBACV,SAAS,qBACZ,SAAS,WAE1B,GAAI,SAAS,aAAe,eAC1B,KAAM,IAAI,OACN,6CACG,SAAS,2CAGlB,GAAI,SAAS,gBAAkB,GAAK,SAAS,iBAAmB,EAC9D,KAAM,IAAI,OACN,0EACQ,SAAS,mBAAmB,SAAS,mBAGnD,QAAY,SAAQ,WAAW,SAAS,SAAU,iBACpC,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAEhD,MAAA,aACI,IAAK,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,aAAc,YACvD,OAAQ,SAAU,UAAW,QAAS,aAAc,YAAa,SACjE,OACG,IAGF,mBAAoC,CACzC,WAAY,QACZ,YAAa,OACb,UAAW,OACX,WAAY,UCxER,yBAKJ,IAAO,OAAQ,OAAS,MACjB,GAAK,QACL,OAAS,YAEF,aAAK,cAAc,EAAE,cACpB,aAAK,uBAAuB,MAAO,OAElD,MAAA,cAAK,OACD,QAAU,aAAK,cAAc,QAC7B,IAAM,cAAc,sBAAsB,EAAE,yEAGzC,CAAC,OAAQ,EAAE,OAAQ,MAAO,OAAQ,MAAO,EAAE,OAG7C,mBAAoC,CACzC,WAAY,QACZ,YAAa,OACb,WAAY,2BChBd,0BACE,gBAAkB,SAAQ,KAAK,MAAM,YAAa,KAAiB,CACjE,SACA,QACA,SACA,SACA,QACA,SACA,SACA,SACA,WAIJ,4BAKE,IAAO,OAAQ,iBAAS,OAAS,MAC1B,EAAG,GAAK,QACR,WAAY,YAAc,MAEjC,GAAI,EAAE,QAAU,WAAa,EAAE,QAAU,UACvC,KAAM,IAAI,OACN,8DAGN,UAAc,EAAE,MAAM,aACR,EAAE,MAAM,mBAEF,WAAa,EAAE,MAAM,MAAQ,GAAK,EAAE,MAAM,MAAQ,eAClD,WAAa,EAAE,MAAM,MAAQ,GAAK,EAAE,MAAM,MAAQ,eAElD,WAAa,EAAE,MAAM,MAAQ,GAAK,EAAE,MAAM,MAAQ,eAClD,WAAa,EAAE,MAAM,MAAQ,GAAK,EAAE,MAAM,MAAQ,cAEnD,EAAE,MAAM,MAAM,EAAG,eACjB,EAAE,MAAM,MAAM,EAAG,cAElB,aAAK,cAAc,sBACnB,aAAK,cAAc,gCAGjC,YAAc,WAAa,YAAc,GAAK,YAAc,EAEhE,aAAK,OACD,OAAS,GAAK,OAAS,GAAK,oBAC5B,IAAM,uJAEsB,oBAAoB,gBAEpD,sBACI,UAAY,UAAY,EAAE,MAAM,MAAM,EAAG,IAAM,EAAE,MAAM,MAAM,EAAG,aACnD,kBAAkB,OAAO,CAAC,YAAa,cAExD,aAAK,OACD,cAAgB,YAChB,IAAM,kCAAkC,qBACjC,uCAAuC,EAAE,aACzC,EAAE,wBAAwB,6BACV,0BAE3B,aAAiB,WAAa,CAAC,UAAW,YAAa,aACzB,CAAC,UAAW,YAAa,sBACtC,WAAa,CAAC,UAAW,YAAa,aACzB,CAAC,UAAW,YAAa,iBAG3C,UAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,gBACjD,UAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,SAAS,MAAO,CAAC,MAAO,kBAE/C,SAAQ,UAAU,IAAI,IAAI,QAAQ,SAClC,SAAQ,UAAU,IAAI,IAAI,QAAQ,WAEhC,WAAa,IAAI,MAAM,GAAK,IAAI,MAAM,YACrC,WAAa,IAAI,MAAM,GAAK,IAAI,MAAM,YACtC,KAAK,IAAI,UAAW,eAEzB,SAAQ,WAAW,CAAC,SAAU,QAAS,UAAW,IAAI,aACpD,SAAQ,UAAU,IAAI,IAAI,QAAQ,eAE5B,GAAI,YAAW,GAAI,YAAW,IAAI,OAAO,oBACzC,GAAI,YAAW,GAAI,YAAW,IAAI,OAAO,QAE7D,MAAA,iBACI,MAAO,YAAa,IAAI,MAAM,OAAQ,MAAO,YAC7C,IAAI,MAAM,OAAQ,WAAY,WAAY,OAE9C,IAAI,MAAQ,SACL,IAGF,uBAAwC,CAC7C,WAAY,YACZ,YAAa,OACb,UAAW,OACX,WAAY,cCvGR,sBAGJ,IAAO,QAAS,GAAI,OAAQ,OAAQ,kBAAW,SACnC,SAAQ,WAAW,EAAE,MAAO,cACzB,SAAQ,mBAAmB,WAC1B,SAAQ,mBAAmB,KAC3C,MAAA,SAAQ,IAAI,QACL,IAGF,gBAAiC,CACtC,WAAY,KACZ,YAAa,OACb,WAAY,iBCbd,0BACE,SAAW,SAAQ,KAAK,MAAM,YAAa,KAAiB,CAC1D,SACA,SACA,SACA,WAIJ,qBAKE,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,aAAc,cAAgB,UACzB,SAAQ,UAAU,IAAI,EAAE,QAAQ,OAChC,SAAQ,WAAW,EAAE,MAAO,EAAE,aAC5B,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,MAAA,UAAS,IAAK,aAAc,aAAc,OACnC,IAGF,uBAAwC,CAC7C,WAAY,YACZ,YAAa,OACb,UAAW,OACX,WAAY,OC7BR,wBAEJ,IAAO,OAAQ,kBAAW,UAEb,aAAK,eAAe,KAAK,MAAM,KAAM,OAAO,GAAG,OAAO,YAElD,qBAAa,gBAAgB,OAAO,IAAI,GAAK,EAAE,OAAQ,cAGxD,OAAO,OAAO,GAAK,aAAK,cAAc,EAAE,OAAS,GACjE,GAAI,QAAQ,SAAW,EACrB,MAAO,WAAS,CAAC,OAAQ,CAAC,EAAG,QAAQ,IAAK,QAAA,WAG5C,QAAY,SAAQ,WAAW,SAAU,OAAO,GAAG,OAEnD,GAAI,aAAK,cAAc,YAAc,EACnC,MAAO,KAGT,WAAe,QAAQ,IAAI,GAAK,EAAE,OAClC,qBAAa,uBAAuB,OAAQ,MAE5C,aAAiB,aAAK,cAAc,QAAQ,GAAG,MAAM,MAAM,EAAG,oBAC3C,YACD,QAAQ,IAAI,SAC5B,aAAiB,aAAK,cAAc,OAAM,MAAM,MAAM,OACtD,MAAA,eAAgB,SACT,kBAEM,QAAQ,IAAI,QAAS,SAAQ,mBAAmB,iBAC/C,SAAQ,mBAAmB,KAC3C,UAAa,EAAG,EAAI,SAAU,KAC5B,cAAgB,EAAI,aACpB,UAAa,EAAG,EAAI,OAAO,OAAQ,KACjC,aAAiB,UAAU,YACV,EAAI,cACR,OAAO,GAAG,SAAS,SAAU,SAAW,UACrD,QAAQ,IAAI,KAAM,WAClB,WAAa,UAGjB,MAAO,KAGF,kBAAmC,CACxC,WAAY,OACZ,YAAa,OACb,WAAY,qBCzCd,0BACE,WAAa,SAAQ,KAAK,MAAM,OAAQ,KAAiB,CACvD,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIJ,wBAEE,IAAO,OAAQ,MAAO,kBAAW,MAE1B,EAAG,QAAU,WACR,SAAQ,UAAU,IAAI,EAAE,QAAQ,YAC3B,SAAQ,UAAU,IAAI,OAAO,QAAQ,IAE/C,QAAS,UAAW,UAAK,gBAAiB,YAAc,kBAC3C,qBAAa,wBAAwB,qBACxC,qBAAa,kBACzB,EAAe,MAAQ,OAAoB,MAAO,QAAS,UAC5D,MAAK,gBAAiB,GAAO,0BAEZ,SAAS,yBACV,SAAS,mBACd,SAAS,QAAQ,aACf,SAAS,QAAQ,gBAChB,SAAS,QAAQ,eACnB,SAAS,QAAQ,oBACV,SAAS,6BACV,SAAS,2BACV,SAAS,yBACV,SAAS,0BACP,SAAS,0BACR,SAAS,sBACd,SAAS,QAAQ,OAAS,OAAS,EAAI,EAEzD,GAAI,SAAS,aAAe,eAC1B,KAAM,IAAI,OACN,oDACG,SAAS,2CAGlB,QAAY,SAAQ,WAAW,SAAS,SAAU,iBACpC,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,MAAA,YACI,IAAK,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,SAAU,aACnD,YAAa,OAAQ,SAAU,UAAW,QAAS,UACnD,eAAgB,cAAe,aAAc,YAAa,cAC1D,eAAgB,OACb,IAGF,kBAAmC,CACxC,WAAY,OACZ,YAAa,OACb,UAAW,OACX,WAAY,kCCtEd,0BACE,wBAA0B,SAAQ,KAAK,MAAM,oBAAqB,KAAM,CACtE,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIJ,oCAKE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,GAAI,QAAU,QACd,QAAS,UAAK,WAAY,gBAAiB,YAAc,gBAE9C,cAEE,qBAAa,wBAAwB,qBACxC,qBAAa,kBAC1B,WAAY,OAAO,MAA2C,QAC9D,UAAW,MAAK,gBAAiB,GAAuB,cAE1D,UACA,aACA,YACA,WACA,SACA,QACA,YACA,UACA,SACA,aACA,aACE,gBAEW,aAAe,EAAI,SAAS,QAAQ,YACnC,YAAc,EAAI,SAAS,QAAQ,oBAE5B,SAAS,aAAe,yBAC7B,aAAK,eAAe,SAAS,mBAC7B,aAAK,eAAe,GAAG,2BACX,aAAK,eAAe,OAAO,oBACpC,UAAU,cACZ,eAAiB,UAAU,GAAK,UAAU,cAC1C,eAAiB,UAAU,GAAK,iBAC5B,eAAiB,EAAI,UAAU,gBACjC,UAAU,cACZ,eAAiB,UAAU,GAAK,UAAU,cAC1C,eAAiB,UAAU,GAAK,iBAC5B,eAAiB,EAAI,UAAU,OAE1C,SAAQ,WAAW,SAAS,QAAS,iBACnC,SAAQ,UAAU,IAAI,IAAI,QAAQ,QACnC,SAAQ,UAAU,IAAI,GAAG,QAAQ,YAC7B,SAAQ,UAAU,IAAI,OAAO,QAAQ,GAEtD,MAAA,yBACI,KAAM,SAAU,UAAW,aAAc,YAAa,SAAU,QAChE,WAAY,UAAW,SAAU,YAAa,aAAc,YAC5D,OAAQ,QAAS,MAAO,MAAO,MAAO,aAAc,WACpD,WAAY,eAAgB,aAAc,WAAY,WACtD,eAAgB,OACb,IAGF,+BAAgD,CACrD,WAAY,oBACZ,YAAa,OACb,UAAW,OACX,WAAY,iCCzGyB,wBAAwB,yBCG/D,AAAA,gCACE,qBAAA,qBAAA,SAAA,GAAA,WACA,qBAAA,qBAAA,QAAA,GAAA,YAFG,qBAAA,qBAAmB,KAKxB,sBAKA,0BACE,kBAAoB,SAAQ,KAAK,MAAM,cAAe,KAAe,CACnE,SACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,WAIJ,8BAKE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,OAAQ,mBAAoB,UAAY,OACxC,aAAO,MAAO,QAAU,gBAEd,MAAM,MAAM,0BAEG,kBACf,CAAC,SAAU,WAAY,UAAW,OAAM,MAAM,eAE9C,SAAQ,UAAU,IAAI,OAAM,mBAEzC,OAAM,QAAU,WAClB,YAAa,OAAK,CAAC,QAAA,SAAS,OAAQ,CAAC,EAAG,QAAQ,MAAO,CAAC,MAAO,aAC/D,WAAa,SAAQ,UAAU,IAAI,WAAW,SAGhD,aAAiB,WAAW,WACZ,SAAQ,UAAU,IAAI,MAAM,QAAQ,YACnC,SAAQ,UAAU,IAAI,OAAO,QAAQ,OAE1C,SAAQ,WAAW,SAAU,iBAC3B,SAAQ,UAAU,IAAI,IAAI,QAAQ,oBAEvB,GAAI,YAAW,GAAI,YAAW,OAAM,OAAO,QAEpE,MAAA,mBACI,SAAU,QAAS,SAAU,SAAU,iBAAkB,WACzD,UACA,oBAAoB,QACpB,mBAAoB,OAEpB,YAAc,MAChB,SAAQ,YAAY,WAAW,QAG1B,IAGF,yBAA0C,CAC/C,WAAY,cACZ,YAAa,OACb,UAAW,OACX,WAAY,2BCpEd,2BACE,WAAa,SAAQ,KAAK,MAAM,OAAQ,KAAiB,CACvD,SACA,SACA,SACA,SACA,SACA,WAIE,uBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,KAAM,UAAW,mBAAW,YACrB,EAAE,MAAM,OAEtB,aAAK,OAAO,EAAE,QAAU,WAAa,EAAE,QAAU,QAC/C,IAAM,2BAA2B,EAAE,qCAErC,gBAAoB,qBAAa,mBAAmB,CAAC,MAAO,iBAC5C,EACZ,cAAgB,MAClB,WAAY,YAAU,CAAC,OAAQ,CAAC,GAAI,MAAO,CAAC,KAAM,aAAc,QAAA,YAElE,iBAAqB,qBAAa,iBAAiB,EAAG,OAAO,GAC7D,qBAAa,2BAA2B,SAAU,CAAC,cAAe,OAElE,gBAAoB,SAAQ,WAAW,UAAU,MAAO,UAAU,gBACjD,UAAU,MAAM,0BACb,SAAQ,UAAU,IAAI,UAAU,QAAQ,iBACtC,SAAQ,UAAU,IAAI,YAAY,QAAQ,GAChE,WAAW,YAAa,UAAY,EAAI,EAAG,UAAU,EAAI,EAAG,SACjD,cAAe,SAAS,EAAE,QAGrC,QAAU,YACV,GAAI,cAAgB,MAClB,oBAAwB,qBAAa,uBAAuB,aAC5D,IAAM,YACJ,CAAC,OAAQ,CAAC,EAAG,aAAc,MAAO,CAAC,KAAM,iBAAkB,QAAA,WAC7D,SAAQ,YAAY,UAAU,QAC9B,SAAQ,YAAY,YAAY,QAElC,MAAO,KAGF,kBAAmC,CACxC,WAAY,OACZ,YAAa,OACb,UAAW,QACX,WAAY,0BCvDd,2BACE,iBAAmB,SAAQ,KAAK,MAAM,aAAc,KAAe,CACjE,SACA,SACA,SACA,QACA,SACA,QACA,QACA,SACA,WAIE,6BAKJ,IAAO,iBAAS,OAAQ,OAAS,MAC1B,GAAK,QACL,UAAW,YAAc,MAEhC,aAAK,OACD,UAAY,EACZ,IAAM,sDAAsD,aAEhE,cAAkB,EAAE,MAAM,eACL,aAAe,OAAU,EAAE,MAAM,GAAK,EAAE,MAAM,cAC/C,aAAe,OAAU,EAAE,MAAM,GAAK,EAAE,MAAM,cAC9C,aAAe,OAAU,EAAE,MAAM,GAAK,EAAE,MAAM,gBAE7C,YAAc,sBACf,WAAa,sBACb,WAAc,WAAY,uBAEzB,aAAe,OAChC,CAAC,UAAW,aAAc,YAAa,aACvC,CAAC,UAAW,YAAa,aAAc,iBAE/B,SAAQ,WAAW,YAAa,iBAE9B,SAAQ,UAAU,IAAI,EAAE,YAC1B,MAAM,iBAEd,GAAI,YAAW,GAAI,YAAW,aAAK,eAAe,EAAE,QAAQ,yBAEvC,GAAI,YAAW,GAAI,YAAW,aAAa,wBAEhE,GAAI,YAAW,GAAI,YAAW,aAAK,eAAe,cAAc,cAEtD,SAAQ,UAAU,IAAI,IAAI,QAAQ,gBAC3B,aAAe,OAAS,EAAI,EACjD,MAAA,kBACI,IAAK,UAAW,aAAc,cAAe,EAAE,MAAM,OAAS,EAC9D,iBAAkB,gBAAiB,YAAY,OAAQ,OAEpD,IAGF,wBAAyC,CAC9C,WAAY,aACZ,YAAa,OACb,UAAW,QACX,WAAY,mCC7Dd,2BACE,oBACI,SAAQ,KAAK,MAAM,sBAAuB,KAAiB,CACzD,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIR,gCAKE,IAAO,OAAQ,MAAO,kBAAW,MAE1B,EAAG,QAAU,WACR,SAAQ,UAAU,IAAI,EAAE,QAAQ,YAC3B,SAAQ,UAAU,IAAI,OAAO,QAAQ,IAE/C,QAAS,UAAW,UAAK,iBAAmB,iBAEhC,WAAa,KAAO,CAAC,EAAG,GAAK,mBAE/B,qBAAa,kBACzB,EAAe,MAAQ,OAAoB,MAAO,QAClD,WAA0C,MAAK,gBAChD,iBAEiB,SAAS,yBACV,SAAS,mBACd,SAAS,QAAQ,aACf,SAAS,QAAQ,gBAChB,SAAS,QAAQ,eACnB,SAAS,QAAQ,oBACV,SAAS,6BACV,SAAS,2BACV,SAAS,yBACV,SAAS,0BACP,SAAS,0BACR,SAAS,sBACd,SAAS,QAAQ,OAAS,OAAS,EAAI,EAEzD,GAAI,SAAS,aAAe,eAC1B,KAAM,IAAI,OACN,mEACG,SAAS,2CAGlB,QAAY,SAAQ,WAAW,SAAS,SAAU,iBACpC,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,MAAA,qBACI,IAAK,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,SAAU,aACnD,YAAa,OAAQ,SAAU,UAAW,QAAS,UACnD,eAAgB,cAAe,aAAc,YAAa,cAC1D,eAAgB,OACb,IAGF,iCAAkD,CACvD,WAAY,sBACZ,YAAa,OACb,UAAW,QACX,WAAY,yCCxFgB,gBAE1B,yBAAyB,MAAO,uBAAuB,mBCFpB,wBAAwB,KCEzD,2BAKJ,IAAO,OAAQ,MAAO,kBAAW,MAC1B,cAAS,QACT,KAAO,gBAEI,OAAM,MAAM,gBACb,OAAM,MAAM,aAClB,IACX,MAAI,KAAM,GAER,cAAK,OACD,CAAE,WAAY,IAAM,IACpB,IAAM,iCAAiC,CAAG,WAAY,OAClD,cACR,KAAO,UAAY,IAAM,GAE3B,SAAS,OAAO,KAAM,EAAG,GAElB,UAAQ,CAAC,OAAQ,CAAC,EAAG,QAAQ,QAAA,SAAS,MAAO,CAAC,MAAO,YAGvD,sBAAuC,CAC5C,WAAY,WACZ,YAAa,OACb,WAAY,aC5Bd,qBACE,IAAO,OAAQ,MAAO,MAAO,OAAQ,kBAAW,SACpC,SAAQ,WAAW,MAAO,eACtB,SAAQ,mBAAmB,KAC3C,MAAA,SAAQ,KAAK,OACN,IAGF,gBAAiC,CACtC,WAAY,KACZ,YAAa,OACb,WAAY,yBCRd,2BACE,kBAAoB,SAAQ,KAAK,MAAM,cAAe,KAAiB,CACrE,SACA,SACA,SACA,SACA,SACA,WAIE,8BAEJ,IAAO,OAAQ,kBAAW,MACnB,cAAS,WAEJ,SAAQ,WAAW,OAAM,MAAO,OAAM,eAClC,SAAQ,UAAU,IAAI,OAAM,QAAQ,SACtC,SAAQ,UAAU,IAAI,IAAI,QAAQ,8CAEM,OAAM,MAE5D,MAAA,mBACI,QAAS,MAAO,YAAa,WAAY,YAAa,OACnD,IAGF,yBAA0C,CAC/C,WAAY,cACZ,YAAa,OACb,WAAY,eACZ,UAAW,sBCrC4B,wBAAwB,8BCEnC,mBAE1B,yBAAyB,SAAU,sCCEvC,2BACE,cAAgB,SAAQ,KAAK,MACzB,eAAgB,KAChB,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,WAGnE,8BAKE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,iBAAmB,OACnB,EAAG,WAAM,SAAU,OAAQ,eAAS,WAC/B,SAAQ,UAAU,IAAI,EAAE,QAAQ,UAC7B,SAAQ,UAAU,IAAI,MAAK,QAAQ,cAC/B,SAAQ,UAAU,IAAI,SAAS,QAAQ,YACzC,QAAU,KAAO,SAAQ,UAAU,IAAI,OAAO,QAAQ,GAAK,UAC5D,SAAS,KAAO,SAAQ,UAAU,IAAI,QAAM,QAAQ,GAAK,MAE7D,SAAQ,WAAW,EAAE,MAAO,EAAE,OAE1C,GAAI,aAAK,cAAc,EAAE,SAAW,EAClC,MAAO,KAGT,UAAc,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAEhD,MAAA,eACI,IAAK,OAAQ,WAAY,SAAU,QAAS,gBAAiB,OAC1D,IAGF,yBAA2C,CAChD,WAAY,eACZ,YAAa,OACb,UAAW,QACX,WAAY,gCC7Bd,2BACE,gBAAkB,SAAQ,KAAK,MAAM,YAAa,KAAiB,CACjE,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIJ,4BAKE,IAAO,OAAQ,MAAO,kBAAW,MAC1B,EAAG,OAAQ,KAAM,wBAA0B,QAEhD,QACA,UACA,UACA,WACA,gBACA,uBACA,gBACE,eAEa,qBAAa,kBACzB,EAAe,MAAQ,OAAoB,MAAO,QAAS,UAC5D,MAAK,iCAGL,kBAAkB,aACtB,GAAI,iBAAmB,KACrB,KAAM,IAAI,OACN,GAAG,iFAIT,QAAY,SAAQ,UAAU,IAAI,EAAE,QAAQ,YAC3B,SAAQ,UAAU,IAAI,OAAO,QAAQ,kBAE/B,SAAS,mBAEnB,EACb,GAAI,MAAQ,MACV,aAAiB,SAAQ,UAAU,IAAI,KAAK,QAC5C,GAAI,SAAS,MAAM,SAAW,EAC5B,KAAM,IAAI,OACN,sDACQ,SAAS,MAAM,WAE7B,GAAI,SAAS,MAAM,KAAO,eACxB,KAAM,IAAI,OACN,2BAA2B,SAAS,wDACI,mBAE9C,OAAS,SAAS,GAGpB,iBAAqB,SAAS,yBACV,SAAS,mBACd,SAAS,QAAQ,aACf,SAAS,QAAQ,gBAChB,SAAS,QAAQ,eACnB,SAAS,QAAQ,oBACV,SAAS,6BACV,SAAS,2BACV,SAAS,yBACV,SAAS,0BACP,SAAS,qBACb,SAAS,QAAQ,OAAS,OAAS,EAAI,YACvC,SAAS,mBACV,SAAS,iBACV,SAAS,QAEzB,GAAI,aAAe,OACjB,KAAM,IAAI,OACN,yDACG,mCAGT,QAAY,SAAQ,WAAW,SAAS,SAAU,iBACpC,SAAQ,UAAU,IAAI,IAAI,QAAQ,4BACf,wBAA0B,KACvD,EACA,SAAQ,UAAU,IAAI,uBAAuB,QAAQ,GAEzD,MAAA,iBACI,IAAK,UAAW,SAAU,QAAS,SAAU,aAAc,YAC3D,OAAQ,OAAQ,SAAU,UAAW,QAAS,UAAW,eACzD,cAAe,aAAc,YAAa,cAAe,eACzD,gBAAiB,yBAA0B,gBAAkB,EAAG,OAE7D,IAGF,uBAAwC,CAC7C,WAAY,YACZ,YAAa,OACb,UAAW,QACX,WAAY,uCCvHd,2BACE,yBACI,SAAQ,KAAK,MAAM,qBAAsB,KAAiB,CACxD,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIR,oCAKE,IAAO,OAAQ,MAAO,kBAAW,MAC1B,EAAG,OAAQ,KAAM,wBAA0B,QAEhD,QACA,UACA,UACA,WACA,gBACA,uBACA,gBACE,eAEa,qBAAa,kBACzB,EAAe,MAAQ,OAAoB,MAAO,QAAS,UAC5D,MAAK,gBAAiB,oBAGtB,kBAAkB,aACtB,GAAI,iBAAmB,KACrB,KAAM,IAAI,OACN,GAAG,0FAIT,QAAY,SAAQ,UAAU,IAAI,EAAE,QAAQ,YAC3B,SAAQ,UAAU,IAAI,OAAO,QAAQ,kBAE/B,SAAS,mBAEnB,EACb,GAAI,MAAQ,MACV,aAAiB,SAAQ,UAAU,IAAI,KAAK,QAC5C,GAAI,SAAS,MAAM,SAAW,EAC5B,KAAM,IAAI,OACN,+DACQ,SAAS,MAAM,WAE7B,GAAI,SAAS,MAAM,KAAO,eACxB,KAAM,IAAI,OACN,oCAAoC,SAAS,wDACL,mBAE9C,OAAS,SAAS,GAGpB,iBAAqB,SAAS,yBACV,SAAS,mBACd,SAAS,QAAQ,aACf,SAAS,QAAQ,gBAChB,SAAS,QAAQ,eACnB,SAAS,QAAQ,oBACV,SAAS,6BACV,SAAS,2BACV,SAAS,yBACV,SAAS,0BACP,SAAS,qBACb,SAAS,QAAQ,OAAS,OAAS,EAAI,YACvC,SAAS,mBACV,SAAS,iBACV,SAAS,QAEzB,GAAI,aAAe,OACjB,KAAM,IAAI,OACN,kEACG,mCAGT,QAAY,SAAQ,WAAW,SAAS,SAAU,iBACpC,SAAQ,UAAU,IAAI,IAAI,QAAQ,4BACf,wBAA0B,KACvD,EACA,SAAQ,UAAU,IAAI,uBAAuB,QAAQ,GAEzD,MAAA,0BACI,IAAK,UAAW,SAAU,QAAS,SAAU,aAAc,YAC3D,OAAQ,OAAQ,SAAU,UAAW,QAAS,UAAW,eACzD,cAAe,aAAc,YAAa,cAAe,eACzD,gBAAiB,yBAA0B,gBAAkB,EAAG,OAE7D,IAGF,gCAAiD,CACtD,WAAY,qBACZ,YAAa,OACb,UAAW,QACX,WAAY,mCC7Hd,2BACE,aAAe,SAAQ,KAAK,MAAM,SAAU,KAAe,CACzD,SACA,SACA,SACA,SACA,SACA,SACA,QACA,WAIJ,yBAEE,IAAO,iBAAS,QAAU,MACnB,OAAQ,SAAW,iDAGtB,uBAAY,mBAAmB,OAAQ,aAE/B,SAAQ,WAAW,YAAa,OAAO,OACnD,GAAI,YAAc,EAChB,MAAO,KAGT,iBAAqB,QAAQ,gBACX,aAAa,aAAa,OAAS,SAEvC,SAAQ,UAAU,IAAI,OAAO,YAC/B,MAAM,eACE,SAAQ,UAAU,IAAI,QAAQ,kBAChC,YAAY,gBAET,GAAI,YAAW,GAAI,YAAW,SAAS,cAE9C,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,MAAA,cACI,IAAK,SAAS,OAAO,OAAQ,UAAW,UAAW,UAAW,UAC9D,aAAc,OAEX,IAGF,oBAAqC,CAC1C,WAAY,SACZ,YAAa,OACb,UAAW,QACX,WAAY,sBC/Cd,2BACE,WAAa,SAAQ,KAAK,MAAM,SAAU,KAAe,CACvD,SACA,SACA,QACA,SACA,SACA,SACA,QACA,WAIJ,yBAGE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,EAAG,SAAW,QACd,KAAM,WAAa,iBAEP,aAAK,eAAe,KAAM,EAAE,OAAO,aACpC,qBAAa,aAAa,yBACxC,EAAa,QAAmB,WAAY,oBAE/B,UAAQ,CACvB,OAAQ,CAAC,GACT,MAAO,CACL,MAAO,CACL,UAAU,UAAW,UAAU,UAAW,UAAU,QACpD,UAAU,YAGd,QAAA,uBAEkB,aAAK,cAAc,QAAQ,oBAC1B,UAAQ,CAC3B,OAAQ,CAAC,EAAG,SACZ,MAAO,CAAC,MAAO,CAAC,UAAU,UAAW,YAAc,UAAU,YAC7D,QAAA,8BAEyB,CACzB,UAAU,UAAW,UAAU,UAAW,YAAc,UAAU,UAClE,UAAU,eAGA,SAAQ,WAAW,mBAAoB,EAAE,OACrD,GAAI,aAAK,cAAc,EAAE,SAAW,EAClC,MAAO,KAET,gBAAoB,SAAS,MAAM,OAAS,QAE9B,SAAQ,UAAU,IAAI,SAAS,YACjC,MAAM,eAEE,SAAQ,UAAU,IAAI,aAAa,kBACrC,YAAY,SAEhB,SAAQ,UAAU,IAAI,IAAI,QAAQ,iBAE1B,GAAI,YACtB,GAAI,YAAW,aAAK,eAAe,SAAS,QAAQ,wBAChC,GAAI,YACxB,GAAI,YAAW,aAAK,eAAe,qBAAqB,QAE5D,MAAA,YACI,IAAK,SAAS,EAAE,OAAQ,cAAe,YAAa,UACpD,UAAU,UAAW,gBAAiB,OAG1C,IAAI,MAAQ,UAAU,YACf,IAGF,oBAAqC,CAC1C,WAAY,SACZ,YAAa,OACb,UAAW,QACX,WAAY,kCCtFgB,kBAE1B,yBAAyB,QAAS,uBAAuB,+BCF/B,uBAE1B,yBAAyB,aAAc,uBAAuB,kBCElE,8BACE,UAAW,SAAQ,KAAK,MAAM,UAAW,KAAiB,CACxD,SACA,SACA,WAIE,0BAIJ,IAAO,QAAS,GAAI,OAAQ,OAAQ,kBAAW,SAEnC,SAAQ,UAAU,IAAI,EAAE,QAAQ,OAChC,SAAQ,WAAW,EAAE,MAAO,EAAE,OAE1C,GAAI,aAAK,cAAc,EAAE,SAAW,GAClC,UAAc,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,UAAS,IAAK,MAAO,OAGvB,MAAO,KAGF,qBAAsC,CAC3C,WAAY,UACZ,YAAa,OACb,UAAA,WACA,WAAY,mCClCgB,eAE1B,yBAAyB,KAAM,uBAAuB,+BCD5B,oBAE1B,yBAAyB,UAAW,uBAAuB,mBCHxB,wBAAwB,4BCAjC,qBAE1B,yBAAyB,WAAY,uBAAuB,gBCKhE,2BACE,QAAU,SAAQ,KAAK,MAAM,IAAK,KAAe,CAAC,2BAGpD,qBAEE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,sBAAwB,UAAY,OACpC,GAAK,WACA,SAAQ,UAAU,IAAI,EAAE,QAAQ,WAC9B,WACF,GAEL,WAAY,KAAM,aAAc,oBACnC,wBAAwB,EAAG,KAAM,UAErC,GAAI,oBACF,iBAAqB,SAAQ,UAAU,IAAI,WAAW,QAAQ,GAC9D,OAAQ,WACR,QAAU,aAGZ,cAAkB,OAAM,MAAM,OAC9B,qBAAa,2BAA2B,MAAO,KAAM,WACrD,0BACI,qBAAa,0BAA0B,OAAM,MAAO,iBACrC,aAAK,cAAc,iBAE1B,SAAQ,WAAW,SAAU,EAAE,OAC3C,GAAI,aAAK,cAAc,OAAM,SAAW,GACtC,UAAc,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,QAAQ,QAAS,WAAY,OAQ/B,GALI,oBAEF,SAAQ,YAAY,WAAW,QAG7B,UAEF,aAAiB,qBAAa,qBAAqB,IAAI,MAAO,cAC9D,IAAI,MAAQ,SAGd,MAAO,KAGF,eAAgC,CACrC,WAAY,IACZ,YAAa,OACb,UAAW,QACX,WAAY,8BC3DgB,kBAE1B,yBAAyB,QAAS,oCCOtC,2BACE,YAAc,SAAQ,KAAK,MAAM,QAAS,KAAiB,CACzD,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIJ,wBAEE,IAAO,OAAQ,MAAO,kBAAW,OAEvB,OAAO,MACL,SAAQ,UAAU,IAAI,EAAE,QAAQ,IAErC,WAAY,QAAS,UAAK,iBAAmB,eACnC,qBAAa,kBAC1B,EAAE,MAAO,WAAY,QAAS,EAAmB,MAAK,8BAErC,SAAS,yBACV,SAAS,mBACd,SAAS,QAAQ,aACf,SAAS,QAAQ,gBAChB,SAAS,QAAQ,eACnB,SAAS,QAAQ,oBACV,SAAS,6BACV,SAAS,2BACV,SAAS,yBACV,SAAS,0BACP,SAAS,0BACR,SAAS,YAEhC,GAAI,SAAS,aAAe,eAC1B,KAAM,IAAI,OACN,6CACG,SAAS,2CAGlB,QAAY,SAAQ,WAAW,SAAS,SAAU,iBACpC,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAEhD,MAAA,aACI,IAAK,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,aAAc,YACvD,OAAQ,SAAU,UAAW,QAAS,eAAgB,cACtD,aAAc,YAAa,cAAe,eAAgB,OACvD,IAGF,mBAAoC,CACzC,WAAY,QACZ,YAAa,OACb,UAAW,QACX,WAAY,mBCpEd,2BACE,SACI,SAAQ,KAAK,MAAM,KAAM,KAAe,CAAC,2BAGzC,qBAGJ,IAAO,iBAAS,OAAQ,OAAS,MAC1B,KAAM,UAAY,OAClB,GAAK,WACA,SAAQ,UAAU,IAAI,EAAE,QAAQ,WAC9B,WACF,GAEL,WAAY,KAAM,aAAc,oBACnC,wBAAwB,EAAG,KAAM,wBAEjB,KACpB,GAAI,oBACF,iBAAqB,SAAQ,UAAU,IAAI,WAAW,QAAQ,GAC1D,eAAiB,KAGnB,QAAQ,WACR,QAAU,aACV,cAAgB,qBAAa,iBACzB,cAAc,OAAQ,OAAM,MAAM,SAI1C,qBAAa,2BACT,OAAQ,cAAe,OAAM,MAAM,QACvC,0BACI,qBAAa,0BAA0B,OAAM,MAAO,0BACrC,aAAK,cAAc,yBACpB,OACd,OAAM,QAAU,WAClB,aACI,OAAK,CAAC,QAAA,SAAS,OAAQ,CAAC,EAAG,QAAQ,MAAO,CAAC,MAAO,aACtD,QAAU,SAAQ,UAAU,IAAI,YAAY,QAAQ,IAGtD,QAAY,SAAQ,WAAW,SAAU,WACzC,GAAI,aAAK,cAAc,OAAM,SAAW,GACtC,UAAc,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,SAAS,QAAS,WAAY,OAQhC,GALI,oBAEF,SAAQ,YAAY,WAAW,QAG7B,UAEF,aAAiB,qBAAa,qBAAqB,IAAI,MAAO,cAC9D,IAAI,MAAQ,SAGd,MAAI,QAAM,QAAU,WAClB,SAAQ,YAAY,YAAY,QAG3B,IAGF,gBAAiC,CACtC,WAAY,KACZ,YAAa,OACb,UAAW,QACX,WAAY,eCxEd,2BACE,QAAU,SAAQ,KAAK,MAAM,IAAK,KAAe,CAAC,2BAGpD,oBAEE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,KAAM,UAAY,OAClB,GAAK,WACA,SAAQ,UAAU,IAAI,EAAE,QAAQ,WAC9B,WACF,GAEL,WAAY,KAAM,aAAc,oBACnC,wBAAwB,EAAG,KAAM,UAErC,GAAI,oBACF,iBAAqB,SAAQ,UAAU,IAAI,WAAW,QAAQ,GAC1D,eAAiB,KAGnB,QAAQ,WACR,QAAU,cAId,cAAkB,OAAM,MAAM,OAE9B,qBAAa,2BAA2B,MAAO,KAAM,WACrD,0BACI,qBAAa,0BAA0B,OAAM,MAAO,iBACrC,aAAK,cAAc,iBAE1B,SAAQ,WAAW,SAAU,OAAM,OAC/C,GAAI,aAAK,cAAc,OAAM,SAAW,GACtC,UAAc,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,QAAQ,QAAS,WAAY,OAQ/B,GALI,oBAEF,SAAQ,YAAY,WAAW,QAG7B,UAEF,aAAiB,qBAAa,qBAAqB,IAAI,MAAO,cAC9D,IAAI,MAAQ,SAGd,MAAO,KAGF,eAAgC,CACrC,WAAY,IACZ,YAAa,OACb,UAAW,QACX,WAAY,8BC/DgB,kBAE1B,yBAAyB,QAAS,iDCAR,mBAE1B,yBAAyB,SAAU,oCCJA,wBAAwB,KCWzD,+CAEJ,WAAe,GAAI,YAAW,SAAQ,KAAK,OAAO,OAAQ,UAAW,oBAC5C,OAAO,gBACX,OAAO,mBACJ,OAAO,iBACT,OAAO,GAE7B,MAAA,UAAQ,KAAK,MAAM,WACZ,CAAC,iBAAkB,aAAc,gBAAiB,eChB3D,cAIA,2BACE,UAAW,SAAQ,KAAK,MACpB,oBACA,SACA,CACE,SACA,SACA,SACA,SACA,WAIR,0BAKE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,aAAc,cAAe,gBAAkB,OAC/C,MAAO,QAAU,eAER,SAAQ,UAAU,IAAI,MAAM,QAAQ,YACnC,SAAQ,UAAU,IAAI,OAAO,QAAQ,aAGlD,UAAS,QAAS,SAAU,cAAe,aAAc,iBAEtD,iBAAkB,aAAc,gBAAiB,eACpD,kBAAkB,SAAS,WAG/B,SAAQ,KAAK,MAAM,iBACnB,SAAQ,KAAK,MAAM,eAEnB,0BACI,SAAQ,WAAW,CAAC,cAAe,QAAS,kBAEhD,MAAO,uBAGF,+BAAgD,CACrD,WAAY,oBACZ,YAAa,OACb,UAAW,QACX,sBC5CF,2BACE,UAAW,SAAQ,KAAK,MACpB,oBACA,SACA,CACE,SACA,SACA,SACA,SACA,SACA,SAIR,oCAKE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,aAAc,cAAe,eAAgB,oBAChD,OACG,MAAO,QAAU,eAER,SAAQ,UAAU,IAAI,MAAM,QAAQ,YACnC,SAAQ,UAAU,IAAI,OAAO,QAAQ,aAEpC,UACd,QAAS,SAAU,cAAe,aAAc,eAChD,qBAEG,iBAAkB,aAAc,gBAAiB,eACpD,kBAAkB,SAAS,WAG/B,SAAQ,KAAK,MAAM,iBAEnB,0BACI,SAAQ,WAAW,CAAC,cAAe,QAAS,qCAErB,SAAQ,WAAW,GAAI,QAAS,eAE3D,MAAO,CAAC,sBAAuB,oBAG1B,+BAAgD,CACrD,WAAY,oBACZ,YAAa,OACb,UAAW,QACX,WAAY,gCCjDd,2BACE,UAAW,SAAQ,KAAK,MACpB,oBACA,SACA,CACE,SACA,SACA,SACA,SACA,SACA,WAIR,2BAKE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,aAAc,cAAe,eAAgB,cAAgB,OAC7D,MAAO,QAAU,eAER,SAAQ,UAAU,IAAI,MAAM,QAAQ,YACnC,SAAQ,UAAU,IAAI,OAAO,QAAQ,aAEpC,UACd,QAAS,SAAU,cAAe,aAAc,eAChD,eAEG,iBAAkB,aAAc,gBAAiB,eACpD,kBAAkB,SAAS,WAI/B,SAAQ,KAAK,MAAM,eAEnB,0BACI,SAAQ,WAAW,CAAC,cAAe,QAAS,uCAE5C,SAAQ,WAAW,CAAC,cAAe,UAAW,iBAElD,MAAO,CAAC,sBAAuB,sBAG1B,+BAAgD,CACrD,WAAY,oBACZ,YAAa,OACb,UAAW,QACX,WAAY,qCC1DgB,mBAE1B,yBAAyB,SAAU,wBAAuB,mBCI9D,2BACE,WAAa,SAAQ,KAAK,MAAM,OAAQ,KAAiB,CACvD,SACA,SACA,SACA,SACA,WAIJ,uBAEE,IAAO,OAAQ,iBAAS,OAAS,MAC1B,SAAW,QACX,MAAO,QAAS,UAAY,UAEvB,SAAQ,WAAW,CAAC,GAAG,QAAQ,MAAO,OAAQ,eAC5C,SAAQ,UAAU,IAAI,IAAI,QAAQ,eAE5B,SAAQ,UAAU,IAAI,QAAQ,kBAChC,YAAY,GAE9B,MAAA,YAAW,UAAW,MAAO,QAAS,SAAU,OAEzC,IAGF,kBAAmC,CACxC,WAAY,OACZ,YAAa,OACb,UAAW,QACX,WAAY,SCnCd,yBACE,IAAO,QAAS,GAAI,kBAAW,SACnB,SAAQ,WAAW,EAAE,MAAO,EAAE,eAC1B,SAAQ,mBAAmB,KAC3C,MAAA,SAAQ,KAAK,GACN,IAGF,oBAAqC,CAC1C,WAAY,SACZ,YAAa,OACb,WAAY,WCTR,qBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,MAAQ,MAEf,GAAI,OAAO,SAAW,EACpB,MAAO,aACH,CAAC,OAAQ,CAAC,MAAO,OAAO,IAAK,QAAA,SAAS,MAAO,CAAC,IAAK,QAGzD,UAAc,OAAO,GAAG,YACV,OAAO,GAAG,MAExB,OAAO,QAAQ,IACb,aAAK,kBACD,MAAO,EAAE,MACT,yDACJ,aAAK,OACD,QAAU,EAAE,MACZ,IAAM,2DAGZ,oBAAwB,OAAO,IAC3B,GAAK,YAAW,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,SAAS,MAAO,CAAC,IAAK,SAE/D,MAAO,UAAO,CAAC,OAAQ,gBAAiB,QAAA,SAAS,MAAO,CAAC,QAGpD,gBAAiC,CACtC,WAAY,KACZ,YAAa,OACb,WAAY,iBC3Bd,2BACE,UAAY,SAAQ,KAAK,MAAM,MAAO,KAAiB,CACrD,SACA,QACA,SACA,SACA,QACA,QACA,SACA,WAIJ,oBAEE,IAAO,QAAS,GAAI,iBAAS,OAAQ,SAAU,gBAAkB,cAEhD,SAAS,IACtB,QAAU,GAAE,GAAqB,EAAE,MAAM,GAAK,GAAE,QACxC,SAAQ,UAAU,IAAI,EAAE,QAAQ,OAChC,SAAQ,WAAW,SAAU,EAAE,aAC7B,SAAQ,UAAU,IAAI,IAAI,QAAQ,eAC5B,GAAI,YAAW,GAAI,YAAW,EAAE,OAAO,wBAEnC,SAAS,IAAI,UAAY,SAAS,qBACjC,SAAS,IAAI,UAAY,SAAS,qBAEvD,GAAI,YAAW,GAAI,YAAW,iBAAiB,0BAE/C,GAAI,YAAW,GAAI,YAAW,kBAAkB,QAEpD,MAAA,WACI,IAAK,YAAa,EAAE,MAAM,OAAQ,SAAS,EAAE,OAAQ,iBACrD,kBAAmB,cAAe,OAC/B,IAGF,iBAAkC,CACvC,WAAY,MACZ,YAAa,OACb,WAAY,KACZ,UAAW,iCClDiB,cAE1B,yBAAyB,IAAK,mCCElC,2BACE,UAAY,SAAQ,KAAK,MAAM,MAAO,KAAiB,CACrD,SACA,SACA,WAIJ,sBACE,IAAO,OAAQ,kBAAW,MACnB,EAAG,OAAS,WACP,SAAQ,UAAU,IAAI,EAAE,QAAQ,aAC1B,SAAQ,UAAU,IAAI,MAAM,QAAQ,OAE1C,SAAQ,WAAW,EAAE,MAAO,iBAC1B,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,MAAA,WAAU,IAAK,UAAW,OACnB,IAGF,iBAAkC,CACvC,WAAY,MACZ,YAAa,OACb,UAAW,QACX,WAAY,iBClBd,2BACE,SAAW,SAAQ,KAAK,MAAM,KAAM,KAAe,CACjD,SACA,SACA,SACA,WAIJ,qBAKE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,KAAM,UAAY,OAClB,GAAK,WACA,SAAQ,UAAU,IAAI,EAAE,QAAQ,WAC9B,WACF,GAEL,WAAY,KAAM,aAAc,oBACnC,wBAAwB,EAAG,KAAM,wBAEjB,KACpB,GAAI,oBACF,iBAAqB,SAAQ,UAAU,IAAI,WAAW,QAAQ,GAC1D,eAAiB,KAGnB,QAAQ,WACR,QAAU,aACV,cAAgB,qBAAa,iBACzB,cAAc,OAAQ,OAAM,MAAM,SAI1C,qBAAa,2BACT,OAAQ,cAAe,OAAM,MAAM,QACvC,0BACI,qBAAa,0BAA0B,OAAM,MAAO,0BACrC,aAAK,cAAc,iBAE1B,SAAQ,WAAW,SAAU,OAAM,OAC/C,GAAI,aAAK,cAAc,OAAM,SAAW,GACtC,UAAc,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,SAAS,QAAS,WAAY,SAAS,IAAI,OAAQ,OAQrD,GALI,oBAEF,SAAQ,YAAY,WAAW,QAG7B,UAEF,aAAiB,qBAAa,qBAAqB,IAAI,MAAO,cAC9D,IAAI,MAAQ,SAGd,MAAO,KAGF,gBAAiC,CACtC,WAAY,KACZ,YAAa,OACb,UAAW,QACX,WAAY,cCzEV,OACE,IAAO,iBAAS,OAAS,MAClB,MAAO,KAAM,WAAM,OAAS,aACpB,UAAa,MAAO,KAAM,MAAM,WAEnC,SAAQ,WAAW,CAAC,OAAO,QAAS,eAChC,SAAQ,mBAAmB,KAC3C,MAAA,SAAQ,IAAI,QACL,kBAG4B,CACvC,WAAY,MACZ,YAAa,OACb,WAAY,gCChBgB,kBAE1B,yBAAyB,QAAS,qCCJE,wBAAwB,mBCAvB,wBAAwB,0BCSjE,2BACE,mBAAqB,SAAQ,KAAK,MAAM,eAAgB,KAAe,CACrE,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIJ,+BAKE,IAAO,iBAAS,OAAQ,OAAS,MAE1B,QAAU,QACV,aAAc,iBAAkB,MAAQ,2BACjB,4CAEoB,OAAO,eACxC,CAAC,MAAO,UAAW,SAAU,mBAElC,SAAQ,UAAU,IAAI,OAAO,mBAErC,MAAM,QAAU,WAClB,YACI,OAAK,CAAC,QAAA,SAAS,OAAQ,CAAC,EAAG,QAAS,MAAO,CAAC,MAAO,aACvD,MAAQ,SAAQ,UAAU,IAAI,WAAW,SAE3C,QAAY,MAAM,OAEN,SAAQ,WAAW,SAAU,WACzC,GAAI,aAAK,cAAc,OAAO,SAAW,EACvC,MAAO,KAET,UAAc,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAEhD,MAAA,oBACI,IAAK,MAAO,UAAW,SAAU,YAAa,UAAW,SACzD,aAAe,EAAI,EAAG,iBAAmB,EAAI,EAAG,OAEhD,YAAc,MAChB,SAAQ,YAAY,WAAW,QAG1B,IAGF,0BAA2C,CAChD,WAAY,eACZ,YAAa,OACb,UAAW,QACX,WAAY,6BC3Dd,2BACE,YAAc,SAAQ,KAAK,MAAM,QAAS,KAAM,CAC9C,SACA,QACA,SACA,QACA,SACA,WAIE,yBAGJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,QACL,MAAQ,WAEF,aAAK,eAAe,KAAM,EAAE,OAEzC,GAAI,EAAE,MAAM,SAAW,EACrB,MAAO,WAAS,CAAC,OAAQ,CAAC,GAAI,QAAA,WAGhC,QAAY,SAAQ,WAAW,EAAE,MAAO,EAAE,WAC9B,SAAQ,UAAU,IAAI,EAAE,QAAQ,SAC9B,SAAQ,UAAU,IAAI,IAAI,QAAQ,aAE9B,GAAI,YAAW,GAAI,YAAW,MAAM,sBAChC,GAAI,YAAW,GAAI,YAAW,EAAE,OAAO,QAE7D,MAAA,aACI,IAAK,UAAW,KAAK,OAAQ,cAAe,EAAE,MAAM,OAAQ,OAEzD,UAAQ,CAAC,OAAQ,CAAC,EAAG,KAAM,MAAO,CAAC,MAAO,EAAE,OAAQ,QAAA,WAGtD,mBAAoC,CACzC,WAAY,QACZ,YAAa,OACb,WAAY,UACZ,UAAW,oBC1Cb,2BACE,WAAa,SAAQ,KAAK,MAAM,iBAAkB,KAAiB,CACjE,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,WAIE,iCAKJ,IAAO,OAAQ,iBAAS,OAAS,MAC1B,cAAS,QACT,QAAS,UAAW,QAAU,UAEzB,SAAQ,WAAW,OAAM,MAAO,OAAM,eAClC,SAAQ,UAAU,IAAI,OAAM,QAAQ,SACtC,SAAQ,UAAU,IAAI,IAAI,QAAQ,8CAEM,OAAM,wBAGxD,qBAAa,eAAe,OAAQ,YAAa,wBAEjC,YAAc,mBACT,gBAEN,MAAO,YAAc,SACpC,CAAC,UAAW,UAAW,UAAW,YAAc,EAAI,kBACpD,CAAC,GAAG,UAAW,4BACD,GAAI,YAAW,GAAI,YAAW,aAAY,QAE5D,MAAA,YACI,QAAS,MAAO,YAAa,WAAY,YAAa,QAAS,QAC/D,QAAS,UAAW,YAAW,OAAQ,OACpC,IAGF,4BAA6C,CAClD,WAAY,iBACZ,YAAa,OACb,WAAY,kBACZ,UAAW,sBC5D4B,wBAAwB,qBCSjE,2BACE,cAAgB,SAAQ,KAAK,MAAM,UAAW,KAAe,CAC3D,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,WAIJ,0BAIE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,QAAS,SAAW,QACpB,OAAS,UAEJ,SAAQ,WAAW,MAAO,QAAQ,OAC9C,GAAI,aAAK,cAAc,SAAW,EAChC,MAAO,KAGT,IAAO,UAAW,WAAY,UAAW,QAAS,YAC9C,wBAAa,gBAAgB,QAAS,QAAS,mBAE/B,SAAQ,UAAU,IAAI,QAAQ,kBAChC,YAAY,eAEV,SAAQ,UAAU,IAAI,QAAQ,kBAChC,YAAY,gBAET,GAAI,YAAW,GAAI,YAAW,SAAS,cAE9C,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,MAAA,eACI,UAAW,UAAW,SAAS,QAAQ,OAAQ,UAAW,WAC1D,UAAW,aAAc,WAAY,OAElC,IAGF,qBAAsC,CAC3C,WAAY,UACZ,YAAa,OACb,UAAW,QACX,WAAY,uBCrDd,2BACE,WAAa,SAAQ,KAAK,MAAM,WAAY,KAAM,CAChD,SACA,SACA,SACA,SACA,WAIJ,uBACE,IAAO,OAAQ,kBAAW,MACnB,UAAW,EAAG,GAAK,mBAEN,SAAQ,UAAU,IAAI,UAAU,QAAQ,OAChD,SAAQ,UAAU,IAAI,EAAE,QAAQ,OAChC,SAAQ,UAAU,IAAI,EAAE,QAAQ,OAChC,SAAQ,WAAW,EAAE,MAAO,EAAE,aAC5B,SAAQ,UAAU,IAAI,IAAI,QAAQ,SAElC,UAAU,MAAM,aAChB,EAAE,MAAM,cAEP,QAAU,GAAK,MAAQ,GAAK,QAAU,EACjD,EACA,aAAK,cAAc,EAAE,MAAM,MAAM,IAErC,MAAA,YAAW,YAAa,IAAK,IAAK,OAAQ,OACnC,IAGF,kBAAmC,CACxC,WAAY,OACZ,YAAa,OACb,WAAY,QACZ,UAAW,mBCrCb,2BACE,UAAW,SAAQ,KAAK,MAAM,QAAS,KAAiB,CAAC,SAAU,WAGrE,wBAEE,IAAO,iBAAS,QAAS,IAAM,SACnB,SAAQ,UAAU,IAAI,EAAE,QAAQ,OAChC,SAAQ,WAAW,EAAE,MAAO,EAAE,aAC5B,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAGhD,MAAI,cAAK,cAAc,IAAI,SAAW,GAItC,UAAS,IAAK,OACP,IAGF,mBAAoC,CACzC,WAAY,UACZ,YAAa,OACb,UAAW,QACX,WAAY,qBC5ByB,wBAAwB,KCGzD,uBAEJ,IAAO,QAAS,GAAI,OAAQ,MAAO,MAAO,kBAAW,oBAE7B,mBAAW,iBAAiB,EAAG,MAAO,kBAE1C,mBAAW,iBAAiB,EAAE,MAAO,OAAQ,aACnD,SAAQ,SAAS,EAAE,YACrB,SAAQ,WAAW,MAAO,EAAE,gBACvB,aAAK,eAAe,EAAE,eACvB,SAAQ,UAAU,IAAI,IAAI,QAE1C,GAAI,aACF,eAAmB,mBAAW,kBAAkB,OAAQ,UAExD,GAAI,EAAE,QAAU,SACd,QAAQ,YACH,MACI,MAAM,WAAY,WAAa,aAAK,cAAc,aAE3D,aAAgB,SAAQ,mBAAmB,KAC3C,SAAQ,IACH,MACI,SAAS,WAAY,WAAa,aAAK,cAAc,SAGhE,MAAO,KAGT,GAAI,EAAE,QAAU,UACd,QAAY,UAAa,MAAO,OAAQ,MAAO,EAAE,MAAO,EAAE,OAC1D,MAAA,SAAQ,YAAc,IACf,IAGT,YAAgB,SAAQ,mBAAmB,UAC9B,EAAE,MAAM,OACrB,GAAI,OAAS,EACX,SACI,MAAqB,SAAS,GAAI,QAAS,OAC3C,eACK,OAAS,EAClB,SACI,MAAqB,SAAS,GAAI,SAAS,GAAI,QAC/C,OAAoC,eAC/B,OAAS,EAClB,SACI,MAAqB,SAAS,GAAI,SAAS,GAAI,SAAS,GAAI,QAC5D,OACA,YAEJ,QACI,UAAa,MAAO,OAAQ,MAAO,EAAE,MAAO,EAAE,OAClD,QAAQ,IAAI,KAGd,MAAO,KAGT,oDAIE,cAAgB,SACD,MAAM,UACN,MAAM,QACR,OAAS,KAAK,GAC3B,UAAa,OAAQ,EAAI,KAAM,KAC7B,YAAgB,EAAI,QAAU,OAC9B,QAAQ,IAAI,MAAM,SAAS,QAAS,QAAU,KAAK,IAAK,WACxD,WAAa,KAAK,IAItB,8DAIE,cAAgB,SACD,MAAM,UACN,MAAM,UACN,MAAM,QACR,OAAS,KAAK,QACd,OAAS,KAAK,GAC3B,UAAa,OAAQ,EAAI,KAAM,IAC7B,UAAa,OAAQ,EAAI,KAAM,KAC7B,YAAgB,EAAI,SAAW,EAAI,SAAW,OAC9C,QAAQ,IAAI,MAAM,SAAS,QAAS,QAAU,KAAK,IAAK,WACxD,WAAa,KAAK,IAKxB,uEAKE,cAAgB,SACD,MAAM,UACN,MAAM,UACN,MAAM,QACR,OAAS,KAAK,QACd,OAAS,KAAK,QACd,OAAS,KAAK,UACZ,MAAM,GAErB,UAAa,OAAQ,EAAI,KAAM,IAC7B,UAAa,OAAQ,EAAI,KAAM,IAC7B,UAAa,OAAQ,EAAI,KAAM,KAC7B,YAAgB,EAAI,SAAW,EAAI,SAAW,EAAI,SAAW,OAC7D,QAAQ,IAAI,MAAM,SAAS,QAAS,QAAU,KAAK,IAAK,WACxD,WAAa,KAAK,IAMnB,iBAAkC,CACvC,WAAY,MACZ,YAAa,OACb,WAAY,mBCvHd,2BACE,UAAW,SAAQ,KAAK,MAAM,QAAS,KAAiB,CACtD,SACA,SACA,SACA,WAIJ,wBAGE,IAAO,iBAAS,QAAS,QAAS,OAAQ,MAAQ,SACtC,SAAQ,UAAU,IAAI,OAAO,QAAQ,OACrC,SAAQ,WAAW,OAAO,MAAO,OAAO,aACtC,SAAQ,UAAU,IAAI,IAAI,QAAQ,YAE/B,OAAO,MAAM,WAChB,aAAK,cAAc,OAAO,OAAS,SAGjD,MAAI,cAAK,cAAc,IAAI,SAAW,GAItC,UAAS,IAAK,MAAO,SAAU,OACxB,IAGF,mBAAoC,CACzC,WAAY,QACZ,YAAa,OACb,UAAW,QACX,WAAY,UCjCR,uBAEJ,IAAO,OAAQ,MAAO,kBAAW,MAC1B,GAAK,QACL,gBAAiB,MAAQ,YAElB,aAAK,eAAe,KAAM,EAAE,OAAO,cAE9B,qBAAa,iBAAiB,EAAG,gBAAiB,YACvD,GAAI,OAAM,EAAE,MAAM,QAAQ,KAAK,QAChC,EAAE,MAAM,QACrB,MAAO,YAAW,IAAI,IACpB,eAAmB,CAAC,GAAG,MACvB,WAAW,OAAS,EACpB,WACI,QAAM,CAAC,OAAQ,CAAC,GAAI,MAAO,CAAC,MAAO,KAAM,YAAa,QAAA,WAC1D,MAAA,OAAM,QAAU,EACT,SAIJ,kBAAmC,CACxC,WAAY,OACZ,YAAa,OACb,WAAY,qBC5B0B,wBAAwB,oBCDtB,wBAAwB,gCCDpC,4BAE1B,yBAAyB,kBAAmB,0CCShD,2BACE,iBAAmB,SAAQ,KAAK,MAAM,aAAc,KAAe,CACjE,SACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,SACA,WAIE,6BAKJ,IAAO,iBAAS,OAAQ,OAAS,MAC1B,GAAK,QAEP,MAAO,IAAK,SAAW,MACxB,SAAW,MACb,SAAU,GAAI,OAAM,MAAM,SAG5B,IAAO,UAAW,QAAS,aAAc,YAAa,gBAAkB,mBAEnD,qBAAa,WAAW,WAAW,cACxD,GAAI,aAAa,OAAS,EACxB,KAAM,IAAI,OAAM,8CAGlB,GAAI,eAAiB,GAAK,cAAgB,EACxC,KAAM,IAAI,OACN,iEAGN,GAAI,eAAiB,GAAK,iBAAmB,EAC3C,KAAM,IAAI,OACN,oEAGN,wBAA4B,EAAE,MAAM,OAAS,MAAM,kBAGhC,qBAAa,WAAW,WAAW,sBACrC,EAAE,MAAM,QACzB,WAAW,QAAQ,OACjB,MAAM,MAAQ,EACd,IAAI,MAAQ,EACZ,SAAS,OAAO,KAAM,EAAG,KAG3B,cAAkB,UAAQ,CAAC,OAAQ,CAAC,GAAI,MAAO,CAAC,MAAO,UAAW,QAAA,YAGhE,sBACA,kBACA,2BAEE,qBAAa,WAAW,kBACpB,UAAU,MAAO,aAAc,oBAAqB,MAAO,IAC3D,QAAS,UAAW,QAAS,cACrC,MAAQ,gBACR,IAAM,cACN,QAAU,kBAEV,eAAmB,qBAAa,WAAW,WAAW,gBAEtD,WAAW,QAAQ,OACjB,IAAI,MAAQ,MAAM,MAAQ,EAC1B,QAAQ,MAAQ,IAIlB,SAAa,qBAAa,WAAW,gBAAgB,MAAO,IAAK,kBAEhD,KAAK,OAAO,UAAa,WAAW,QAAQ,QAAU,eAEpD,QAAQ,MAAM,GAAK,IAAM,GAC5C,GAAI,YACF,YAAgB,QAAM,CAAC,OAAQ,CAAC,GAAI,MAAO,CAAC,MAAO,MAAO,QAAA,WAC1D,MAAO,WAAQ,CAAC,OAAQ,CAAC,EAAG,SAAU,MAAO,CAAC,MAAO,UAAW,QAAA,WAGlE,QAAY,SAAQ,WAAW,SAAU,WACzC,GAAI,CAAC,SAAS,KAAK,MAAQ,OAAS,IAClC,QAAY,SAAQ,UAAU,IAAI,UAAU,QAAQ,iBAC9B,GAAI,YACtB,GAAI,YAAW,aAAK,eAAe,UAAU,QAAQ,mBACtC,GAAI,YAAW,GAAI,YAAW,OAAO,iBACvC,GAAI,YAAW,GAAI,YAAW,KAAK,qBAC/B,GAAI,YAAW,GAAI,YAAW,SAAS,yBAEnC,GAAI,YAAW,GAAI,YAAW,UAAU,wBAE7D,GAAI,YAAW,GAAI,YAAW,aAAK,eAAe,WAAW,cACnD,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAEhD,iBACI,IAAK,cAAe,UAAU,MAAM,OAAQ,WAAY,SACxD,aAAc,iBAAkB,gBAAiB,SAAS,OAC1D,OAGN,MAAO,WAAQ,CAAC,OAAQ,CAAC,EAAG,KAAM,MAAO,CAAC,MAAO,UAAW,QAAA,WAGvD,wBAAyC,CAC9C,WAAY,aACZ,YAAa,OACb,UAAW,QACX,WAAY,uCC9HgB,cAE1B,yBAAyB,IAAK,iCCKlC,2BACE,QAAU,SAAQ,KAAK,MAAM,IAAK,KAAe,CAAC,2BAGpD,qBAEE,IAAO,iBAAS,OAAQ,OAAS,MAC1B,KAAM,UAAY,OAClB,GAAK,WACA,SAAQ,UAAU,IAAI,EAAE,QAAQ,WAC9B,WACF,GAEL,WAAY,KAAM,aAAc,oBACnC,wBAAwB,EAAG,KAAM,wBAEjB,KACpB,GAAI,oBACF,iBAAqB,SAAQ,UAAU,IAAI,WAAW,QAAQ,GAC1D,eAAiB,KAGnB,QAAQ,WACR,QAAU,aACV,cAAgB,qBAAa,iBACzB,cAAc,OAAQ,OAAM,MAAM,SAI1C,qBAAa,2BACT,MAAO,cAAe,OAAM,MAAM,QACtC,0BACI,qBAAa,0BAA0B,OAAM,MAAO,0BACrC,aAAK,cAAc,iBAE1B,SAAQ,WAAW,SAAU,OAAM,OAC/C,GAAI,aAAK,cAAc,OAAM,SAAW,GACtC,UAAc,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,QAAQ,QAAS,WAAY,OAQ/B,GALI,oBAEF,SAAQ,YAAY,WAAW,QAG7B,UAEF,aAAiB,qBAAa,qBAAqB,IAAI,MAAO,cAC9D,IAAI,MAAQ,SAGd,MAAO,KAGF,eAAgC,CACrC,WAAY,IACZ,YAAa,OACb,UAAW,QACX,WAAY,mBCjE0B,wBAAwB,eCQhE,2BACE,SAAW,SAAQ,KAAK,MAAM,KAAM,KAAiB,CACnD,SACA,QACA,SACA,QACA,SACA,WAIJ,qBAEE,IAAO,OAAQ,iBAAS,OAAS,MAC1B,GAAK,WACA,SAAQ,UAAU,IAAI,EAAE,QAAQ,IACrC,MAAQ,eAEY,GAAI,OAAM,EAAE,MAAM,QAC7C,UAAa,EAAG,EAAI,SAAS,OAAQ,IACnC,SAAS,GAAK,EAAE,MAAM,GAAK,KAAK,GAElC,gBAAoB,GAAI,YAAW,GAAI,YAAW,EAAE,OAAO,sBACrC,GAAI,YAAW,GAAI,YAAW,UAAU,YAElD,SAAQ,WAAW,SAAU,EAAE,aAC7B,SAAQ,UAAU,IAAI,IAAI,QAAQ,GAChD,MAAA,UACI,IAAK,YAAa,EAAE,MAAM,OAAQ,cAAe,SAAS,OAC1D,SAAS,IAAI,OAAQ,OAClB,IAGF,gBAAiC,CACtC,WAAY,KACZ,YAAa,OACb,UAAW,QACX,WAAY,gBCrCd,2BACE,SAAW,SAAQ,KAAK,MAAM,KAAM,KAAiB,CACnD,SACA,QACA,SACA,SACA,SACA,OACA,SACA,WAIG,UAE6B,EAAE,OAAQ,iBAAS,UAC7C,IAAO,GAAK,QACL,EAAG,QAAU,UAER,SAAQ,UAAU,IAAI,EAAE,QAAQ,eACxB,GAAI,YAAW,GAAI,YAAW,EAAE,OAAO,oBACvC,EAAE,MAAM,QAC5B,YAAY,YAAY,OAAS,GAAK,EACtC,cAAkB,SAAQ,WAAW,YAAa,EAAE,mBAChC,SAAQ,UAAU,IAAI,UAAU,QAAQ,cACzC,SAAQ,WAAW,YAAa,sBAC9B,SAAQ,UAAU,IAAI,WAAW,QAAQ,GAE9D,MAAA,UACI,IAAK,YAAa,EAAE,MAAM,OAAQ,SAAS,EAAE,OAAQ,EAAG,OACxD,YAAa,cAEV,CAAC,UAAW,yBAGW,CACtC,WAAY,KACZ,YAAa,OACb,UAAW,QACX,WAAY,OC3Cd,uBAGE,IAAO,OAAQ,iBAAS,OAAS,MAC1B,OAAS,QACX,MAAQ,MAET,KAAO,GACT,OAAQ,MAAM,MAAM,QAGtB,eAAmB,MAAM,MAAM,WAClB,MAAM,MAAM,gBACE,GAAI,OAAM,KAAO,YAC7B,EACf,UAAa,EAAG,EAAI,KAAM,IACpB,IAAM,MACR,UAAS,YAAc,MAAM,MAAM,IAGvC,SAA2B,GAAI,OAAM,kBACvB,GAAI,OAAM,MAAM,KAAK,QACtB,MAAM,MAAM,QACzB,KAAK,MAAQ,EACb,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,MAAM,MAAQ,EACd,KAAK,GAAK,QAAM,CAAC,OAAQ,CAAC,EAAG,OAAQ,MAAO,CAAC,MAAO,MAAO,QAAA,WAE7D,MAAO,MAAK,IAAI,EAAE,OAAQ,SAAY,EAAC,OAAQ,MAAO,MAAO,YAGxD,kBAAmC,CACxC,WAAY,OACZ,YAAa,OACb,WAAY,SCpCd,0BACE,IAAO,QAAS,GAAI,kBAAW,SACnB,SAAQ,WAAW,EAAE,MAAO,EAAE,eAC1B,SAAQ,mBAAmB,KAC3C,MAAA,SAAQ,KAAK,GACN,IAGF,qBAAsC,CAC3C,WAAY,UACZ,YAAa,OACb,WAAY,2BC2EwB,CACpC,WACA,WACA,YACA,cACA,eACA,mBACA,YACA,mBACA,cACA,cACA,2BACA,WACA,qBACA,cACA,oBACA,6BACA,aACA,WACA,kBACA,YACA,qBACA,aACA,gBACA,kBACA,qBACA,mBACA,4BACA,gBACA,gBACA,eACA,oBACA,gBACA,iBACA,YACA,iBACA,WACA,kBACA,WACA,eACA,eACA,YACA,WACA,eACA,gBACA,WACA,2BACA,2BACA,2BACA,gBACA,cACA,gBACA,YACA,aACA,WACA,aACA,YACA,aACA,eACA,YACA,aACA,eACA,sBACA,eACA,wBACA,aACA,iBACA,cACA,eACA,WACA,aACA,eACA,cACA,YACA,cACA,yBACA,oBACA,WACA,WACA,YACA,YACA,YACA,iBACA,cACA,kBAGF,uBAA2B,gBACzB,eAAe,cChLjB,SAAY,MAMZ,KAAI,aAIA,wBAAyB,SAAY,YAAY,SAAS,GAAI,YAAW,CACvE,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAI,EAAG,EAAK,GAAI,EAAI,EAAG,EACpD,EAAG,EAAI,EAAK,GAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,OAOvD,KAAI,aAAa,+BAAgC,UAG/C,GAAI,KAAI,IAAI,WACV,MAAO,GAGT,IAGE,MAAA,IAAI,kBAAiB,MAAM,YAAY,GAAI,mBAAkB,IAGtD,YAAY,SAAS,GAAI,YAAW,CACzC,EAAG,GAAI,IAAK,IAAK,EAAG,EAAI,EAAI,EAAG,EAAG,EAAG,EAAI,GAAI,EAAK,EAAI,EAAG,EAAG,EAAI,EAAG,EACnE,EAAG,EAAI,EAAK,EAAK,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAI,IAAK,GAAI,EAAG,EAAG,GAAI,eAGlE,MAAO,MCnCX,oCAAoC,YAAA,8DCrBF,i2GCwBV,YAAA,yCAxBxB,aAqCiC,eAK/B,kBACE,QADiB,KAAA,KAAA,KAHX,KAAA,iBAAmB,EAKzB,KAAK,KAAK,KAAK,OACf,KAAK,UAAY,GAAI,aAAY,KAAM,YAGzC,0BAEE,WAAe,GACf,MAAA,MAAK,KAAK,OAAQ,OAAQ,MAAO,OAC1B,OAGT,aACE,MAAO,MAAK,UAAU,kBAGlB,SACJ,UAAc,aAAK,MACnB,IACA,aAAiB,aAAK,MAAQ,MAC9B,MAAO,CAAC,UAGV,gCAGE,OAAW,KAAK,mBAChB,GAAI,QAAU,UACZ,gBAAoB,OACpB,KAAK,UAAU,IACX,OAAQ,CAAC,GAAI,YAAa,MAAO,MAAO,aAAc,OAC1D,OAGF,SAAa,aAAK,cAAc,gBACf,KAAO,aAAK,gBAAgB,oBACxB,KAAK,KAAK,QAAQ,UAEvC,KAAK,UAAU,IAAI,OAAQ,CAAC,GAAI,aAAc,MAAO,QAErD,KAAK,KAAK,KAAK,eAAe,GAAI,KAAM,cAEpC,QAAU,MACZ,KAAK,KAAK,OAAO,IACb,GAAI,YACC,OAAmC,OACnC,OAAmC,WAAY,UACpD,mBAIF,cACJ,MAAO,MAAK,SAAS,QAGvB,iBACE,IAAO,aAAc,MAAO,MAAO,aAC/B,KAAK,UAAU,IAAI,QACvB,GAAI,QAAU,SACZ,MAAO,aAET,UAAc,KAAK,KAAK,OAAO,MAC3B,aACA,aAAe,aAAK,cAAc,OAAS,aAAK,gBAAgB,QACpE,MAAO,sBAAqB,MAAM,OAAQ,OAG5C,oBACE,SAAa,KAAK,UAAU,IAAI,QAChC,KAAK,KAAK,MAAM,KAAK,cACrB,KAAK,KAAK,KAAK,YAAY,KAAK,IAChC,KAAK,UAAU,OAAO,QAGxB,iBACE,MAAO,IAKT,wBACE,MAAO,MAAK,UAAU,IAAI,QAAQ,aAGpC,UACE,KAAK,KAAK,KAAK,UACf,KAAK,KAAO,KAGd,SACE,MAAO,CAAC,WAAY,IAStB,qCAEE,WACA,GAAI,cAAgB,KAClB,OAAS,KAAK,MAAM,KAAmB,MAAO,YAE9C,OAAS,GACT,OAAW,KAAK,mBAChB,KAAK,UAAU,IAAI,OAAQ,CAAC,GAAI,aAAc,MAAO,QACrD,SAAa,aAAK,cAAc,OAChC,KAAK,KAAK,KAAK,eAAe,GAAI,KAAM,cAE1C,MAAO,CAAC,OAAQ,MAAO,OAGzB,oBAAoB,MAAO,MAAO,SAEhC,YAAe,KAAK,KAAK,OAAO,QACzB,cAAgB,KAAK,UAAU,IAAI,aAC7B,aAAK,cAAc,OAChC,OAAQ,WACD,UACH,MAAO,IAAI,cAAa,QAAQ,aAAc,UAC3C,QACH,MAAO,IAAI,YAAW,QAAQ,aAAc,UACzC,OACH,MAAO,IAAI,YAAW,QAAQ,aAAc,cAE5C,KAAM,IAAI,OAAM,iBAAiB,YAKzC,yCAEE,MAAO,oBACL,cAAK,MAAM,KAAM,CAAC,YAAa,gBAAgB,KAAK,WAC7C,SAAS,IACZ,QAAQ,IAAI,EAAE,uCAAuC,SAEvD,SAAS,cAAc,KAAK,SAC1B,YAAY,YAAY,OAAQ,SAAS,KAAK,SAC5C,SAAS,OAAO,gBAIf,IAUX,8EAGE,GAAI,UAAY,KAGd,MAAO,UAGT,SAA2B,yBAO3B,MANI,gBAAiB,iBACnB,KAAO,uCACE,eACT,MAAO,+BAGL,aAAe,MACb,YAAY,OAAS,KAChB,YAAY,MAIhB,iBAAmB,KAU5B,sBACE,oCAA0C,KAAM,SAAQ,IAAI,CAC1D,MAAM,SAAS,yBACf,MAAM,SAAS,kCAGjB,MAAO,IAAI,SAAQ,mBACjB,kBAAyC,GAOzC,cAAc,WAAa,gBACzB,GAAI,KAAK,SAAS,eAChB,aAAiB,wBACJ,GAAI,MAAK,CAAC,UAAW,CAAC,KAAM,2BACzC,MAAO,KAAI,gBAAgB,MAG7B,MAAI,MAAK,SAAS,SACT,oBACH,cAA0B,iBAC1B,gBAAkB,KAAO,eAAiB,QAEzC,OAAS,MAMd,aACF,eAAc,gBACV,0BAA0B,oBACtB,cAA0B,iBAC1B,gBAAkB,KAAO,eAAiB,MAEpD,SAEI,kBAAoB,eAAiB,UAAY,KACnD,MAAO,gCAAA,QAAwB,eAC/B,KAAK,oBAAsB,GAAI,MAC3B,CAAC,uCACA,gCAAA,QAAwB,YACzB,CAAC,KAAM,qBAGX,KAAO,kBAAA,QAAY,eAGrB,mBAA+B,KAE/B,KAAK,KAAO,CACV,KAAM,KAAK,MAAM,OAAQ,KAAM,IAC/B,eAAgB,KAAK,MACjB,kBAAmB,KACnB,CACE,SACA,SACA,WAEN,YAAa,KAAK,MAAM,eAAgB,eAAgB,CAAC,WACzD,QAAS,KAAK,MAAM,UAAW,eAAgB,KAEjD,gBAAkB,GAClB,KAAK,qBAAuB,KAC1B,YAAc,GACd,YAAc,GACd,QAAQ,CAAC,QAEX,KAAK,QAAU,KACb,GAAI,YAEF,OAEF,GAAI,YAGF,OAEF,YAAc,GACd,cACI,kMAEJ,OAAO,CAAC,QAAS,eAKvB,6CAEE,OAAQ,WACD,UACH,MAAO,IAAI,cAAa,aACrB,QACH,MAAO,IAAI,YAAW,aACnB,OACH,MAAO,IAAI,YAAW,iBAEtB,KAAM,IAAI,OAAM,iBAAiB,UAIvC,oBAAwB,CACtB,yBAA0B,8BAC1B,iDAIqB,oBACM,iBACyB,eACpC,eACA,GAcZ,2CAAuD,IAI3D,GAHA,gBACI,qGAEA,YACF,KAAM,IAAI,OACN,kIAGN,SAAW,KACX,YAAc,iBA4BV,uDAEiB,IACrB,GAAI,YACF,KAAM,IAAI,OACN,mIAKN,GAAI,MAAO,kBAAoB,SAC7B,eAAiB,qBAEjB,YAAc,gBACd,iBACI,gBAAgB,OAAO,MAAQ,YAAY,OAAS,MACxD,GAAI,aAAa,OAAS,EACxB,KAAM,IAAI,OACN,2DACG,aAAa,KAAK,qKAM7B,YAAc,iBClahB,cAAgB,sBCuBM,EACtB,gBAAgB,OAAQ,UACtB,IAAO,MAAQ,KAAM,QACrB,MAAO,IAAI,aAAY,OACtB,eE9BH,IAAA,+bCEO,qBACL,oBAEoB,IAUpB,GARA,IAAI,YAEJ,OAAO,MAAM,GAAG,QAAQ,EAAG,EAAG,cAC5B,SAAa,OAAO,SACpB,IAAI,OAAO,KAAK,EAAG,KAAK,GACxB,IAAI,OAAO,EAAG,KAGZ,UACF,SAAa,OAAO,OAAO,OAAS,MACzB,OAAO,GAClB,GAAI,CAAC,MAAQ,CAAC,GACZ,OAGF,IAAI,OAAO,KAAK,EAAG,KAAK,GACxB,IAAI,OAAO,GAAG,EAAG,GAAG,GAGtB,IAAI,SC1BN,IAAA,obCAA,IAAA,iBAYE,0BACE,GAAI,CAAC,cAAc,QAAU,CAAC,cAAc,QAC1C,KAAM,IAAI,OAAM,wFAAwF,KAAK,UAAU,CAAE,MAAO,YAGlI,KAAK,OAAS,MACd,KAAK,QAAU,UAGN,SAAkB,MAAO,MAAK,UAC9B,UAAmB,MAAO,MAAK,QAEnC,UACL,MAAO,IAAI,YAAW,EAAI,KAAK,MAAO,EAAI,KAAK,UCpB5C,kBAAkB,YACvB,MAAO,kBAAqB,SAAU,OAAO,MAAM,SAAW,IAGzD,4BACL,MAAO,UAAS,OAAQ,GAGnB,4BACL,MAAO,UAAS,OAAQ,GAGnB,4BACL,MAAO,UAAS,OAAQ,GAGnB,4BACL,MAAO,UAAS,OAAQ,GAGnB,sBACL,MAAO,KAAM,IAAM,EAGd,sBACL,MAAO,KAAM,IAAM,EAGd,yBAA2C,GAChD,MAAU,KAAK,IAAI,GAAI,MACvB,MAAO,MAAK,MAAM,IAAM,GAAK,EAGxB,2BACL,MAAO,MAAO,IAAI,OAAS,IAAI,OAG1B,oCAAqC,MAAO,mBACjD,WAAc,UAAY,KAAK,IAAI,OAAQ,OAC3C,MAAO,IAAI,YAAW,KAAK,MAAM,MAAQ,QAAQ,KAAK,MAAM,OAAS,SAGhE,6BACL,MAAO,KAAI,OAAO,WAAa,KAAI,IAAI,IAAK,GAAI,OAAM,EAAG,IACtD,IAAI,GAAI,OAAM,IAAI,OAAQ,IAAI,SAG5B,iCACL,MAAO,OAAM,KAAK,KAAK,GAAG,IAAI,OAAU,MAAS,EAAI,OAGhD,4BACL,MAAO,CAAC,CAAC,KAAO,MAAQ,UAAY,MAAQ,WAAa,CAAC,MAAM,MAAQ,MAAQ,EAG3E,iCACL,MAAO,eAAc,MAAQ,GAAK,KAAO,KAAO,EC7DlD,IAAA,YASE,iBACE,KAAK,GAAK,EACV,KAAK,GAAK,KAGR,KAAc,MAAO,MAAK,MAC1B,KAAc,MAAO,MAAK,GAEvB,QACL,MAAO,IAAI,OAAM,KAAK,EAAI,GAAG,EAAG,KAAK,EAAI,GAAG,GAGvC,QACL,MAAO,IAAI,OAAM,KAAK,EAAI,GAAG,EAAG,KAAK,EAAI,GAAG,GAGvC,QACL,MAAO,IAAI,OAAM,KAAK,EAAI,GAAG,EAAG,KAAK,EAAI,GAAG,GAGvC,QACL,MAAO,IAAI,OAAM,KAAK,EAAI,GAAG,EAAG,KAAK,EAAI,GAAG,GAGvC,MACL,MAAO,IAAI,OAAM,KAAK,IAAI,KAAK,GAAI,KAAK,IAAI,KAAK,IAG5C,YACL,MAAO,MAAK,KAAK,KAAK,IAAI,KAAK,EAAG,GAAK,KAAK,IAAI,KAAK,EAAG,IAGnD,QACL,MAAO,IAAI,OAAM,KAAK,MAAM,KAAK,GAAI,KAAK,MAAM,KAAK,MC1CzD,gBAQgB,cACZ,MAAO,CAAC,CAAC,MAAQ,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,QAAQ,MAAM,qBAGrD,qDAA8E,IAC1F,GAAI,CAAC,IAAI,OAAO,KACd,KAAM,IAAI,OAAM,GAAG,yBAAyB,KAAK,UAAU,6DAG7D,GAAI,CAAC,yBAA4B,KAAI,MAAQ,GAAK,IAAI,OAAS,GAC7D,KAAM,IAAI,OAAM,GAAG,mBAAmB,IAAI,sBAAsB,IAAI,oCASxE,yCAA2E,IACzE,QAAa,MAAQ,UAEN,CAAC,IAAI,KAAM,IAAI,IAAK,IAAI,MAAO,IAAI,QAAQ,MAAM,sBACjD,CAAC,IAAI,EAAG,IAAI,EAAG,IAAI,MAAO,IAAI,QAAQ,MAAM,eAE3D,GAAI,CAAC,QAAU,CAAC,OACd,KAAM,IAAI,OAAM,2EAA2E,KAAK,UAAU,QAG5G,sBAA8B,OAC1B,CAAC,IAAI,EAAG,IAAI,EAAG,IAAI,MAAO,IAAI,QAC9B,CAAC,IAAI,KAAM,IAAI,IAAK,IAAI,MAAQ,IAAI,KAAM,IAAI,OAAS,IAAI,KAE/D,IAAI,iBAAiB,CAAE,EAAG,EAAG,MAAO,QAAU,kBAAmB,yBAEjE,KAAK,GAAK,EACV,KAAK,GAAK,EACV,KAAK,OAAS,MACd,KAAK,QAAU,UAGN,KAAc,MAAO,MAAK,MAC1B,KAAc,MAAO,MAAK,MAC1B,SAAkB,MAAO,MAAK,UAC9B,UAAmB,MAAO,MAAK,WAC/B,QAAiB,MAAO,MAAK,KAC7B,OAAgB,MAAO,MAAK,KAC5B,SAAkB,MAAO,MAAK,EAAI,KAAK,SACvC,UAAmB,MAAO,MAAK,EAAI,KAAK,UACxC,QAAiB,MAAO,MAAK,MAAQ,KAAK,UAC1C,WAAmB,MAAO,IAAI,OAAM,KAAK,KAAM,KAAK,QACpD,YAAoB,MAAO,IAAI,OAAM,KAAK,MAAO,KAAK,QACtD,cAAsB,MAAO,IAAI,OAAM,KAAK,KAAM,KAAK,WACvD,eAAuB,MAAO,IAAI,OAAM,KAAK,MAAO,KAAK,QAE7D,QACL,sBAA8B,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,QAC7D,IAAI,KAAO,KAAK,MAAM,MACzB,MAAO,IAAI,KAAI,CAAE,EAAG,EAAG,MAAO,SAGzB,QACL,sBAA8B,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,QAC7D,IAAI,KAAO,KAAK,MAAM,MACzB,MAAO,IAAI,KAAI,CAAE,EAAG,EAAG,MAAO,SAGzB,WACL,IAAM,EAAG,EAAG,MAAO,QAAW,UACjB,KAAK,IAAI,MAAQ,QAC9B,MAAI,OAAQ,QACV,IAAM,KAAO,EACb,OAAS,MAEX,AAAI,OAAS,OACX,IAAM,KAAO,EACb,QAAU,MAGL,GAAI,KAAI,CAAE,EAAG,EAAG,MAAO,SAGzB,WACL,WAAe,aAAa,GAAM,EAAkB,MAAQ,SAC7C,aAAa,GAAM,EAAkB,OAAS,EAC7D,MAAO,IAAI,KAAI,CACb,EAAG,KAAK,EAAI,OACZ,EAAG,KAAK,EAAI,OACZ,MAAO,KAAK,MAAQ,OACpB,OAAQ,KAAK,OAAS,SAInB,eACL,sBAA4B,CAC1B,KAAK,EAAK,KAAO,EACjB,KAAK,EAAK,KAAO,EACjB,KAAK,MAAQ,KACb,KAAK,OAAS,MAEhB,MAAO,IAAI,KAAI,CAAE,EAAG,EAAG,MAAO,SAGzB,uCACL,IAAQ,EAAG,EAAG,MAAO,QAAW,cACf,KAAK,IAAI,EAAG,YACZ,KAAK,IAAI,EAAG,YAEZ,MAAQ,mBACP,OAAS,sBACN,KAAK,IAAI,SAAU,SAAW,wBAC7B,KAAK,IAAI,UAAW,UAAY,UAEtD,MAAQ,IAAI,KAAI,CAAE,EAAG,SAAU,EAAG,SAAU,MAAO,aAAc,OAAQ,gBAAiB,QAGrF,aACL,IAAQ,MAAO,QAAW,OAChB,KAAK,EAAI,KACT,KAAK,EAAI,GAEnB,MAAO,IAAI,KAAI,CAAE,EAAG,EAAG,MAAO,SAGzB,qCACL,MAAU,KAAK,MAAQ,IACb,KAAK,OAAS,KAEf,KACA,MACC,MACA,IAEF,KAAK,OACL,KAAK,OACJ,KAAK,SACL,KAAK,OAEd,MAAI,IAAK,YACP,KAAM,CAAC,GAAK,WAAa,EACzB,GAAK,YAEP,AAAI,GAAK,aACP,KAAM,CAAC,GAAK,YAAc,EAC1B,GAAK,aAEP,AAAI,EAAI,GACN,KAAM,EAAI,EACV,EAAI,GAEN,AAAI,EAAI,GACN,KAAM,EAAI,EACV,EAAI,GAGC,CAAE,GAAI,IAAK,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAGvC,kBACL,MAAO,IAAI,KAAI,CACb,KAAM,KAAK,KAAQ,OAAO,KAAO,KAAK,MACtC,IAAK,KAAK,IAAO,OAAO,IAAM,KAAK,OACnC,MAAO,KAAK,MAAS,OAAO,MAAQ,KAAK,MACzC,OAAQ,KAAK,OAAU,OAAO,OAAS,KAAK,SAC3C,WAAW,UC5KlB,yBASiC,KAC/B,0DAAyG,IACvG,MAAM,CAAE,KAAM,IAAK,MAAO,QAAU,2BCXxC,IAAA,sBAWE,8DAOE,KAAK,WAAa,GAAI,YAAW,UAAU,MAAO,UAAU,QAC5D,KAAK,OAAS,MACd,KAAK,YAAc,WACnB,KAAK,WAAa,UAClB,KAAK,KAAO,GAAI,KAAI,aAAa,QAAQ,KAAK,eAGrC,SAAkB,MAAO,MAAK,UAC9B,cAAuB,MAAO,MAAK,eACnC,aAAsB,MAAO,MAAK,cAClC,OAAa,MAAO,MAAK,QACzB,aAA0B,MAAO,MAAK,cACtC,cAAuB,MAAO,MAAK,UAAU,SAC7C,eAAwB,MAAO,MAAK,UAAU,UAC9C,eAAqB,MAAO,IAAI,KAAI,KAAK,MAAM,QAAQ,KAAK,UAAU,WAE1E,sBACL,MAAO,IAAI,iBACT,KAAK,MACL,KAAK,WACL,KAAK,UACL,KAAK,YACL,CAAE,MAAO,WCxCf,2BAUmC,iBACjC,yCAKE,MAAM,MAAO,MAAO,GAAI,YAAa,WAGhC,sBACL,IAAQ,MAAO,YAAa,WAAc,MAAM,QAAQ,MAAO,QAC/D,MAAO,IAAI,eAAc,MAAO,YAAa,aCnB1C,aAAa,gBAAuC,IACzD,UAAc,KAAK,IAAI,EAAK,KAAK,IAAI,KAAK,MAAO,KAAK,OAAS,KAAK,IAAI,KAAK,KAAM,KAAK,cACzE,KAAK,IAAI,EAAK,KAAK,IAAI,KAAK,OAAQ,KAAK,QAAU,KAAK,IAAI,KAAK,IAAK,KAAK,mBACrE,MAAQ,OAE7B,MAAO,OACH,aAAgB,MAAK,KAAO,KAAK,KAAO,cACxC,aAAe,KAAK,IAAI,KAAK,KAAM,KAAK,MCPvC,iBAAiB,KACtB,OAAW,IAAI,IAAI,IAAM,GAAG,MACjB,IAAI,IAAI,IAAM,GAAG,QACf,GAAG,OAAO,UAAY,EAAI,KAAM,EAAI,KAAK,eACzC,GAAG,OAAO,UAAY,EAAI,KAAM,EAAI,KAAK,eACzC,GAAG,OAAO,UAAY,KAAM,EAAI,EAAI,KAAK,QACzC,GAAG,OAAO,UAAY,KAAM,EAAI,EAAI,KAAK,GAEtD,MAAO,IAAI,aAAY,KAAM,KAAM,KAAM,MCPpC,4BACL,gCAGiB,IAGjB,yBAA2B,OACxB,IAAI,kBAAsB,EAAE,MAAO,YACnC,KAAK,SAAY,GAAG,MAAQ,GAAG,OAC/B,IAAI,GAAK,EAAE,eAES,GAEvB,KAAM,qBAAqB,OAAS,IAClC,SAAa,qBAAqB,MAClC,KAAK,KAAK,MAEV,YAAgB,6BAEU,GAC1B,UAAa,EAAG,EAAI,QAAQ,OAAQ,KAClC,QAAY,QAAQ,WAEJ,MAAM,aACP,MAAM,KAErB,QAAQ,KAAK,IAAI,QAAS,OAAQ,QAGpC,qBAAuB,qBAAqB,OAC1C,OAAU,QAAQ,IAAM,cAI5B,MAAO,MCpCF,mBAAmB,WACxB,MAAO,AAAG,MAAK,KACb,WAAkB,cACJ,AAAG,KAAK,CAAC,GAAG,EAAE,MAAM,MAAM,EAAG,GAAI,GAAI,EAAG,iBACxC,AAAG,KAAK,CAAC,GAAG,EAAE,MAAM,MAAM,EAAG,GAAI,GAAI,EAAG,iBACxC,AAAG,KAAK,CAAC,GAAG,EAAE,MAAM,MAAM,EAAG,GAAI,GAAI,EAAG,mBACtC,AAAG,OAAO,CAAC,MAAO,MAAO,OAAQ,GAEjD,MAAO,AAAG,KAAI,EAAG,WCAd,qBACL,wBACyB,IAEzB,MAAO,AAAG,MAAK,KAEb,kBAAwB,UAAU,MAAM,MAAM,GAC9C,GAAI,SAAW,MACb,MAAO,WAGT,YAAgB,KAAK,IAAI,OAAS,qBACZ,KAAK,MAAM,QAAW,eAAgB,GAAM,gBAC9C,OAAS,MAAQ,EAAI,sBAEb,iBAC1B,uBAA2B,UAAU,MAAM,QAC3C,0BAAmB,aAAe,eAC3B,AAAG,KAAK,mBAAoB,EAAG,gCAGZ,oBAAoB,sCACjB,QAAW,oBAAoB,MAAM,kCAEvC,eAAiB,uBAC1C,oBAAoB,wBACpB,oBAEmB,CACrB,qBACA,UACA,qBAEC,OAAO,GAAK,CAAC,CAAC,GAEd,IAAI,GAAkB,AAAG,KAAK,EAAG,YACpC,MAAO,AAAG,QAAO,eAAgB,eC9C9B,sBAAsB,YAC3B,WAAc,WAAW,QACzB,UAAa,OAAM,OAAS,EAAG,EAAI,EAAG,KAClC,MAAU,KAAK,MAAM,KAAK,SAAY,GAAI,MAChC,OAAM,GAChB,OAAM,GAAK,OAAM,GACjB,OAAM,GAAK,EAEf,MAAO,QCDF,kBAAiB,GACtB,MAAO,GAAK,GAAI,KAAK,IAAI,CAAC,IAGrB,2BACL,MAAO,MAAK,IAAI,EAAK,GAAI,ICZ3B,IAAA,kBAS0B,KACxB,qDAAoG,IAClG,MAAM,CAAE,EAAG,EAAG,MAAO,QAAU,2BCD7B,KAAO,QACA,aACI,kBAZjB,MAwBE,wDAGiB,GAAI,OAAM,EAAG,IAE5B,IAAQ,MAAO,QAAW,QAC1B,KAAK,SAAW,GAAI,YAAW,MAAO,QACtC,KAAK,OAAS,MACd,KAAK,WAAa,8BAA8B,IAC9C,IAAM,GAAG,IAAI,GAAI,OAAM,MAAO,SAAS,IAAI,WAIpC,SAAiB,MAAO,IAAI,OAAM,KAAK,OAAO,EAAG,KAAK,OAAO,MAC7D,cAAuB,MAAO,MAAK,SAAS,SAC5C,eAAwB,MAAO,MAAK,SAAS,UAC7C,aAAuB,MAAO,MAAK,cACnC,qBACT,MAAO,MAAK,WAAW,IACrB,IAAM,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAI,OAAM,KAAK,WAAY,KAAK,eAI3D,sBACL,MAAO,IAAK,MAAK,YACf,KAAK,kBACL,CAAE,MAAO,SAIN,aACL,MAAO,IAAK,MAAK,YACf,KAAK,kBACL,KAAK,SACL,GAAI,OAAM,EAAG,IAIV,iBACL,MAAO,MAAK,QAAQ,GAAG,EAAG,GAAG,GAcxB,wBAE6D,IAElE,GAAI,WACF,QAAY,oBAAqB,eAC7B,UAAU,IAAI,QACd,GAAI,KAAI,WAEZ,MAAO,MAAK,QAAQ,IAAI,EAAG,IAAI,GAAG,MAAM,KAAM,SAGhD,IAAQ,iBAAkB,eAAkB,OAAO,OAAO,GAAI,CAAE,iBAAkB,GAAO,cAAe,IAAO,SAE/G,MAAI,kBACK,KAAK,YAGP,KAAK,aAAa,eAGnB,YAEN,YAAgB,KAAK,sEAEgC,oBACjC,IAAe,YAAY,IAAI,IAAI,2BAC/B,aAAY,eAAiB,YAAY,iBAAmB,OAEvE,KAAK,MAAM,eAAiB,mBAExB,eAAe,WAEtB,KAAK,MAAM,KAAK,IAAI,EAAG,SAAS,EAAK,KAAO,SAC5C,KAAK,MAAM,KAAK,IAAI,EAAG,SAAS,EAAK,KAAO,OAEtD,MAAO,IAAI,MAAK,EAAG,EAAG,KAAK,IAAI,KAAM,KAAK,WAAa,GAAI,KAAK,IAAI,KAAM,KAAK,YAAc,IAGvF,sBACN,QAAY,QAAQ,KAAK,WACzB,MAAO,KAAI,IAAI,IAAI,MAAQ,QAAS,IAAI,OAAS,SAGzC,2BACR,KAAM,IAAI,OAAM,4DC1HpB,IAAA,4BAKoC,eAExB,2BACR,QAAY,KAAK,UACjB,MAAO,CACL,IAAI,GACJ,IAAI,GACJ,eAAe,CAAC,IAAI,GAAI,IAAI,QCZlC,IAAA,6BAIqC,eAC5B,gBACL,MAAO,MAAK,UAAU,MAAM,EAAG,IAG1B,iBACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,kBACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,UACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,aACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,cACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,WACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAGxB,2BACR,MAAO,CACL,KAAK,aACL,KAAK,cACL,KAAK,YACL,IAAI,kBCtCV,IAAA,gBAWE,4BACE,KAAK,OAAS,MACd,KAAK,UAAY,YAGR,SAAkB,MAAO,MAAK,UAC9B,YAAqB,MAAO,MAAK,UAErC,sBAAiC,IACtC,MAAO,GAAG,KAAK,QAAQ,aAAe,KAAK,OAAM,KAAK,aAAe,OCpBzE,IAAA,wBAKgC,WAEhB,qCAGZ,GAFA,IAAI,iBAAiB,IAAK,QAEtB,CAAC,cAAc,IAAI,OACrB,KAAM,IAAI,OAAM,GAAG,qCAAqC,IAAI,yBAMhE,uBACE,MAAM,KACN,KAAK,OAAS,SAGL,SAAkB,MAAO,MAAK,SCtB3C,IAAA,6BAIE,+BACE,GAAI,CAAE,OAAO,QAAU,UACrB,KAAM,IAAI,OAAM,sEAGlB,GAAI,CAAC,MAAM,QAAQ,cAAgB,YAAY,KAAK,MAAQ,CAAE,gBAAgB,gBAC5E,KAAM,IAAI,OAAM,4FAGlB,KAAK,OAAS,MACd,KAAK,aAAe,eAGX,SAAkB,MAAO,MAAK,UAC9B,eAAgC,MAAO,MAAK,aAEhD,SACL,MAAO,CACL,MAAO,KAAK,MACZ,YAAa,KAAK,YAAY,IAAI,GAAO,MAAM,KAAK,WAI1C,kBACZ,gBAAoB,OAAK,YAAY,IAAI,GAChC,GAAI,cAAa,IAE1B,MAAO,IAAI,wBAAuB,OAAK,MAAO,eC/BlD,IAAA,0BAKkC,kBAElB,uCAGZ,GAFA,WAAW,wBAAwB,IAAK,QAGtC,CAAC,mBAAmB,IAAI,QACrB,CAAC,mBAAmB,IAAI,YAE3B,KAAM,IAAI,OAAM,GAAG,uCAAuC,IAAI,eAAe,IAAI,6CAOrF,wCACE,MAAM,IAAK,OACX,KAAK,OAAS,MACd,KAAK,YAAc,cAGV,SAAkB,MAAO,MAAK,UAC9B,cAAuB,MAAO,MAAK,cCtBzC,6BAA6B,KAClC,MAAO,KAAI,oBAAwB,eAG9B,sDAOL,cAAkB,CAAE,WACpB,MAAO,QAAO,OAAO,GAAI,UAAW,WChB/B,4BAEL,IAAM,OAAQ,OAAO,OAAY,WAC/B,KAAM,IAAI,OAAM,0EAGD,WACf,KAAM,IAAI,OAAM,gEAGlB,MAAO,CACL,OAAQ,kBACR,yBACA,MAAO,iBACP,UACA,MAAO,iBACP,oBAAqB,IAAM,SAAS,cAAc,UAClD,mBAAoB,IAAM,SAAS,cAAc,OACjD,aACA,UCnBG,0BAA0B,IAE/B,mBAAqB,GAErB,GAAI,CAAC,GACH,IACE,GAAa,yBAEb,eAAiB,IAAI,WAIzB,aAAiB,GACb,mBACA,MAAO,IAAI,SAAgB,YACzB,GAAG,SAAS,SAAU,sBACpB,MAAO,KAAM,IAAI,KAAO,IAAI,cAIhC,WACA,KAAM,IAAI,OAAM,qEAAqE,mBAGzF,MAAO,CACL,UCxBG,2BAEL,IAAM,OAAS,OAAO,QAAa,OAAO,wBAC5B,OAAO,OAAY,OAAO,qCAEZ,WAC1B,GAAI,OACF,MAAO,IAAI,QAEb,KAAM,IAAI,OAAM,kGAGS,WACzB,GAAI,MACF,MAAO,IAAI,OAEb,KAAM,IAAI,OAAM,oFAGJ,OAAO,OAAY,WAC/B,KAAM,IAAI,OAAM,2EAGC,mBAEnB,MAAO,CACL,OAAQ,QAAU,QAClB,yBAA0B,OAAO,0BAA+B,QAChE,MAAO,OAAS,QAChB,UAAW,OAAO,WAAgB,QAClC,MAAO,OAAO,kBAAuB,QACrC,oBACA,mBACA,gBACG,YCrCA,sBACL,MAAO,OAAO,SAAW,UACpB,MAAO,WAAa,aACpB,MAAO,mBAAqB,aAC5B,MAAO,oBAAsB,aAC7B,MAAO,mBAAqB,aAC5B,MAAO,YAAc,aACrB,MAAO,2BAA6B,YCH3C,IAAA,SAAyB,2CAKzB,kBACE,GAAI,CAAC,YACH,KAAM,IAAI,OAAM,yEAElB,MAAO,aAGT,uBACE,YAAc,MAGhB,sBAGE,GAAI,aACF,MAAO,QAAO,oBAEhB,GAAI,oBACF,MAAO,QAAO,mBAIlB,4BAKE,GAJA,AAAK,aACH,aAGE,CAAC,YACH,KAAM,IAAI,OAAM,8EAGlB,IAAQ,OAAS,YAAY,OAAQ,MAAQ,YAAY,OAAU,MACnE,YAAY,OAAS,OACrB,YAAY,MAAQ,MACpB,YAAY,oBAAsB,MAAI,qBAAwB,KAAM,GAAI,SACxE,YAAY,mBAAqB,MAAI,oBAAuB,KAAM,GAAI,QAEtE,YAAY,UAAY,MAAI,WAAa,YAAY,UACrD,YAAY,MAAQ,MAAI,OAAS,YAAY,MAC7C,YAAY,MAAQ,MAAI,OAAS,YAAY,MAC7C,YAAY,SAAW,MAAI,UAAY,YAAY,SAG9C,SAAY,CACjB,OACA,OACA,WACA,iBACA,iBACA,gBACA,YACA,qBACA,4BAGF,aC9DO,sBAAsB,KAC3B,MAAI,CAAC,KAAI,YAAc,MAAO,MAAQ,SAC7B,SAAS,eAAe,KAE1B,ICHF,6BAA6B,WAElC,IAAQ,OAAQ,oDAA6B,KAAI,SAEjD,GAAI,oBAAqB,2BACvB,MAAO,WAGT,WAAe,aAAa,WAE5B,GAAI,CAAE,kBAAkB,SACtB,KAAM,IAAI,OAAM,kEAGlB,QAAY,OAAO,WAAW,MAC9B,GAAI,CAAC,IACH,KAAM,IAAI,OAAM,gDAGlB,MAAO,KClBF,IAAK,eAAL,2BACL,yBAAW,WACX,0BAAY,YACZ,4BAAc,cACd,6BAAe,iBAJL,qCAJZ,+BA4BE,oBAA6C,IAC3C,IAAQ,eAAgB,gBAAiB,UAAW,SAAU,UAAW,SAAY,QACrF,KAAK,eAAiB,gBAAkB,eAAe,SACvD,KAAK,gBAAkB,iBAAmB,qBAC1C,KAAK,UAAY,WAAa,yBAC9B,KAAK,SAAW,UAAY,GAC5B,KAAK,UAAY,WAAa,UAC9B,KAAK,QAAU,SAAW,kBAnC9B,MA4CE,gCAGmC,IAEjC,KAAK,KAAO,MAAO,OAAS,SACxB,CAAC,MACA,eAAgB,eAAgB,KAAK,KAAO,KACjD,KAAK,OAAS,OACd,KAAK,QAAU,GAAI,sBAAqB,SAG1C,kBACE,IAAQ,SAAY,KAAK,QACzB,MAAO,MAAK,KAAK,IAAI,GAAK,IAAI,YAAY,GAAG,OAAO,OAAO,SAAY,GAAK,GAAK,GAAK,GAAI,GAAM,EAAI,QAGtG,gBACE,IAAQ,SAAU,SAAY,KAAK,QACnC,MAAO,MAAK,KAAK,OAAS,SAAY,EAAI,QAG5C,6BACE,IAAQ,gBAAmB,KAAK,oBACZ,iBAAmB,eAAe,cAAgB,iBAAmB,eAAe,qBACrF,iBAAmB,eAAe,aAAe,iBAAmB,eAAe,4BAE/E,KAAK,aAAa,qBACjB,KAAK,kBAClB,YAAc,KAAK,OAAO,EAAI,eAAiB,KAAK,OAAO,IAC5D,WAAa,KAAK,OAAO,EAAI,gBAAkB,KAAK,OAAO,EAGrE,GAAI,YACF,IAAQ,MAAO,QAAW,gBACb,KAAK,IAAI,KAAK,IAAI,EAAG,MAAQ,gBAAiB,QAC9C,KAAK,IAAI,KAAK,IAAI,EAAG,OAAS,iBAAkB,GAC7D,MAAO,CAAE,EAAG,KAAM,EAAG,MAEvB,MAAO,CAAE,EAAG,GAGd,gBACE,WAAe,aAAa,eAChB,oBAAoB,SAExB,gBAAiB,UAAW,SAAU,UAAW,SAAY,KAAK,QAE1E,IAAI,KAAO,GAAG,cAAc,YAC5B,iBAAqB,KAAK,aAAa,gBACpB,KAAK,gBAExB,IAAI,UAAY,gBAChB,cAAkB,KAAK,aAAa,IAAK,QACzC,IAAI,SAAS,UAAU,EAAG,UAAU,EAAG,aAAc,YAErD,IAAI,UAAY,UAChB,KAAK,KAAK,QAAQ,eAChB,MAAU,QAAU,UAAU,IACpB,QAAU,UAAU,EAAM,GAAI,GAAK,SAC7C,IAAI,SAAS,SAAU,EAAG,OCxGhC,qBAiBE,oBAAuC,IACrC,IAAQ,SAAU,UAAW,MAAO,kBAAqB,QACzD,KAAK,SAAW,UAAY,qBAC5B,KAAK,UAAY,WAAa,EAC9B,KAAK,MAAQ,MAEb,4BAAgC,CAC9B,eAAgB,eAAe,YAC/B,gBAAiB,KAAK,UAExB,KAAK,iBAAmB,GAAI,sBAAqB,OAAO,OAAO,GAAI,wBAAyB,6BA3BhG,MAmCE,wBAE6B,IAE3B,KAAK,IAAM,GAAI,KAAI,KACnB,KAAK,QAAU,GAAI,gBAAe,SAGpC,gBACE,QAAY,oBAAoB,YAExB,SAAU,WAAc,KAAK,SAE7B,EAAG,EAAG,MAAO,QAAW,KAAK,IACrC,IAAI,YAAc,SAClB,IAAI,UAAY,UAChB,IAAI,WAAW,EAAG,EAAG,MAAO,QAE5B,IAAQ,OAAU,KAAK,QACvB,AAAI,OACF,GAAI,eAAc,CAAC,OAAQ,CAAE,EAAG,EAAK,UAAY,EAAI,GAAK,KAAK,QAAQ,kBAAkB,KAAK,aC/C7F,wBACL,sBAGA,oBAAwB,MAAM,QAAQ,YAAc,WAAa,CAAC,YAElE,gBAAgB,QAAQ,MACtB,UAAc,cAAe,eACzB,IAAI,MACH,oBAAoB,KAAO,IAAI,UAAU,MAAQ,WAE1C,cAAe,eACvB,IAAI,IACH,oBAAoB,KAAO,IAAI,UAAU,IAAM,GAAI,KAAI,WAE9C,MAAQ,GAAG,OAAM,SAAW,OAC1C,GAAI,SAAQ,IAAK,CAAE,QAAS,KAAK,aCtB9B,uBAAuB,OAE5B,IAAQ,MAAO,OAAU,KAAI,SAE7B,MAAQ,iBAAiB,QAAS,MAAM,UAClC,gBAAiB,QAAS,MAAM,YAAc,ECJ/C,0BAA0B,OAE/B,MAAO,IAAI,SAAQ,mBACjB,GAAI,gBAAiB,MAAI,SAAS,QAAU,cAAc,OACxD,MAAO,SAAQ,MAGjB,mBACE,GAAI,CAAC,EAAE,cAAe,OACtB,EAAE,cAAc,oBAAoB,OAAQ,QAC5C,EAAE,cAAc,oBAAoB,QAAS,SAC7C,QAAQ,GAGV,oBACE,GAAI,CAAC,EAAE,cAAe,OACtB,EAAE,cAAc,oBAAoB,OAAQ,QAC5C,EAAE,cAAc,oBAAoB,QAAS,SAC7C,OAAO,GAGT,MAAM,iBAAiB,OAAQ,QAC/B,MAAM,iBAAiB,QAAS,WCvB7B,uBAAuB,KAC5B,MAAO,IAAI,SAAQ,mBACjB,GAAI,CAAE,eAAe,OACnB,MAAO,QAAO,oDAGhB,WAAe,GAAI,YACnB,OAAO,OAAS,KACd,GAAI,MAAO,QAAO,QAAW,SAC3B,MAAO,QAAO,oEAGhB,QAAY,KAAI,SAAS,qBACzB,IAAI,OAAS,IAAM,QAAQ,KAC3B,IAAI,QAAU,OACd,IAAI,IAAM,OAAO,QAEnB,OAAO,QAAU,OACjB,OAAO,cAAc,OCjBlB,4BAA4B,QAEjC,IAAQ,MAAO,OAAU,KAAI,SAE7B,MAAI,kBAAiB,OACZ,GAAI,YAAW,OAAM,aAAc,OAAM,eAE9C,iBAAiB,OACZ,GAAI,YAAW,OAAM,WAAY,OAAM,aAEzC,GAAI,YAAW,OAAM,MAAO,OAAM,QCPpC,uBAAsB,CAAE,MAAO,SAEpC,IAAQ,qBAAwB,KAAI,gBACrB,sBACf,cAAO,MAAQ,MACf,OAAO,OAAS,OACT,OAGF,2CAEL,IAAQ,sBAAc,KAAI,SAE1B,GAAI,CAAE,iBAAiB,cAAc,CAAC,cAAc,OAClD,KAAM,IAAI,OAAM,8DAGlB,IAAQ,MAAO,QAAW,MAAQ,mBAAmB,cACtC,cAAa,CAAE,MAAO,SAErC,MAAI,iBAAiB,YACnB,oBAAoB,QAAQ,aAAa,MAAO,EAAG,GAEnD,oBAAoB,QAAQ,UAAU,MAAO,EAAG,EAAG,MAAO,QAErD,OC1BT,mCACE,kBAIA,iBAAqB,QAAU,KAAI,SAAS,iDAEP,UAAU,MAAM,MAAM,WAAW,WAAa,EAAI,eACnE,AAAG,KAAK,IAAM,UAAU,KAAK,OAAQ,MAAO,aAAa,SAC7E,YAAM,AAAG,iBAAQ,SAAS,YAAa,cAEvC,YAAY,UAEL,aChBF,wBAAwB,QAE7B,IAAQ,MAAO,OAAQ,OAAU,KAAI,SAErC,MAAO,kBAAiB,QACnB,iBAAiB,SACjB,iBAAiB,OCHjB,uBAAuB,6BAAuF,IAEnH,IAAQ,MAAO,QAAW,KAAI,SAE9B,GAAI,CAAE,kBAAiB,QAAS,iBAAiB,SAC/C,KAAM,IAAI,OAAM,4EAGlB,SAAa,mBAAmB,eAClB,UAAY,KAAK,IAAI,KAAK,OAAQ,KAAK,aACvC,OAAQ,KAAK,aACZ,OAAQ,KAAK,oBAEP,cAAa,CAAE,MAAO,UAAW,OAAQ,wBAC1C,iBAAiB,QAAS,OAAQ,sBAAsB,eAE7D,KAAK,IAAI,MAAQ,QAAU,KAC/B,aAAe,MAAQ,OAAS,OAAS,KACzC,aAAe,OAAS,MAAQ,OAAS,EACpD,2BAAoB,cAAc,UAAU,YAAa,GAAI,GAAI,MAAO,QAEjE,aC1BT,IAAA,eAmBE,qCAE+B,IAVvB,mBAAkD,GAClD,eAAiC,GAEjC,wBAA8B,GAE9B,sBAA+B,GAOrC,GAAI,CAAC,MAAM,QAAQ,QACjB,KAAM,IAAI,OAAM,4HAA4H,UAG9I,KAAK,mBAAqB,kBAC1B,KAAK,WAAa,OAAO,OAEzB,OAAO,QAAQ,eAEb,GAAI,WAAW,SACb,KAAK,cAAc,KAAO,OAC1B,KAAK,iBAAiB,KAAO,OAAM,MACnC,OAGF,GAAI,WAAW,SACb,cAAmB,OAAc,MAAM,GACvC,GAAI,YAAc,EAChB,KAAM,IAAI,OAAM,yCAAyC,sDAG3D,KAAK,cAAc,KAAO,OAC1B,KAAK,iBAAiB,KAAQ,OAAc,MAAM,MAAM,GACxD,OAGF,WAAgB,iBAAyB,MAAI,SAAS,OAAS,OAAQ,sBAAsB,QAC7F,KAAK,UAAU,KAAO,OACtB,KAAK,iBAAiB,KAAO,CAAC,OAAO,OAAQ,OAAO,MAAO,QAIpD,gBACT,MAAO,MAAK,iBAGH,YACT,MAAO,MAAK,aAGH,gBACT,MAAO,MAAK,UAAY,GAAK,KAAK,sBAGzB,aACT,MAAO,MAAK,cAGH,mBACT,MAAO,MAAK,oBAGH,aACT,MAAO,MAAK,cAGH,2BACT,MAAO,QAAM,KAAK,UAAW,EAAG,GAAG,IACjC,cAAiB,KAAK,2BAA2B,WAI9C,mBACL,MAAO,MAAK,SAAS,WAAa,KAAK,aAAa,UAG/C,6BACL,MAAO,MAAK,iBAAiB,UAGxB,yBACL,MAAO,MAAK,iBAAiB,UAAU,GAGlC,wBACL,MAAO,MAAK,iBAAiB,UAAU,GAGlC,qCACL,GAAI,MAAO,MAAK,WAAc,SAC5B,KAAM,IAAI,OAAM,yFAGlB,UAAc,KAAK,cAAc,iBAClB,KAAK,eAAe,UACnC,MAAO,2BAA0B,CAAE,MAAO,QAAU,KAAK,WAYpD,uCAA2D,IAEhE,YAAK,WAAa,UAEX,AAAG,KAAK,KAEb,iBAAqB,OAAM,KAAK,UAAW,EAAG,GAAG,IAAI,WACnD,WAAc,KAAK,SAAS,UAE5B,GAAI,iBAAoB,SAEtB,cAAgB,WAAW,QAAS,OAAQ,OAAM,aAElD,iBAAY,YAAY,UAAW,gBAEnC,AAAI,WAAU,MAAM,KAAO,WAAa,UAAU,MAAM,KAAO,YAC7D,WAAY,AAAG,MAAM,eAAe,UAAW,CAAC,UAAW,aAGtD,UAAU,KAAK,UAAW,UAAW,GAG9C,GAAI,iBAAiB,MAAI,SAAS,OAChC,MAAO,AAAG,iBAAQ,WAAW,cAAc,OAAO,UAAW,iBAG/D,KAAM,IAAI,OAAM,+BAA+B,qGAAqG,wBAIlI,AAAG,MAAM,aAAa,IAAI,GAAK,AAAG,KAAK,EAAG,aAAa,KAAK,KAAK,UAAW,UAAW,UAAW,GAGtH,MAAO,iBC3Ib,0BAAiC,QAC/B,GAAI,iBAAkB,UACpB,MAAO,QAGT,kBAAoB,MAAM,QAAQ,QAC5B,OACA,CAAC,QAEP,GAAI,CAAC,cAAc,OACjB,KAAM,IAAI,OAAM,4CAGlB,eAAmB,KAAiB,MAAM,QAAQ,QAAU,mBAAmB,OAAS,cAErE,cAAc,IAAI,cAErC,kBAAW,QAAQ,aACjB,GAAI,CAAC,eAAe,SAAU,CAAC,WAAW,SAAU,CAAC,WAAW,QAE9D,KAAI,OAAO,eAAc,IAAO,SACxB,GAAI,OAAM,eAAe,WAAW,sEAAsE,cAAc,MAG1H,GAAI,OAAM,eAAe,WAAW,iIAG5C,GAAI,WAAW,SAEb,cAAkB,OAAM,MAAM,GAC9B,GAAI,YAAc,EAChB,KAAM,IAAI,OAAM,eAAe,WAAW,iCAAiC,yDAMjF,KAAM,SAAQ,IACZ,WAAW,IAAI,QAAS,eAAe,SAAU,iBAAiB,UAG7D,GAAI,UAAS,WAAY,MAAM,QAAQ,SCvChD,4BACE,mBAIA,IAAQ,QAAW,KAAI,gBAEV,OAEb,GAAI,CAAE,kBAAiB,UACrB,aAAiB,KAAM,YAAW,QAElC,GAAI,SAAS,UAAY,EACvB,KAAM,IAAI,OAAM,8CAGlB,mBAAuB,SAAS,SAAS,GACzC,OAAS,yBAA0B,QAC/B,eACA,KAAM,qBAAoB,gBAGhC,QAAY,oBAAoB,cAClB,WAAW,IACvB,KAAO,cAAe,eAClB,IAAI,QAAQ,OAAO,MAAO,OAAO,QAAQ,IAAI,QAC7C,KAEH,IAAI,KAAO,IAAI,mBAAmB,OAAO,MAAO,OAAO,SAE1D,MAAO,OAAM,IAAI,EAAG,EAAG,EAAG,MAAO,WAC/B,YAAgB,cAAa,CAAE,MAAO,SACtC,2BAAoB,SACjB,aAAa,IAAI,aAAa,EAAG,EAAG,MAAO,QAAS,EAAG,GACnD,UClCX,kCACE,wBAIA,GAAI,CAAC,WAAW,cAAgB,CAAC,WAAW,aAC1C,KAAM,IAAI,OAAM,6DAGlB,GAAI,WAAW,cAAgB,YAAY,MAAM,GAAK,EACpD,KAAM,IAAI,OAAM,oDAGlB,MAAO,AAAG,MAAK,KACb,oCAA2C,YAAY,MAAM,MAAM,WAAW,aAAe,EAAI,SAEnF,WAAW,IACvB,KAAO,cAAe,eAClB,IAAI,QAAQ,SAAU,WAAW,IACjC,KAEH,IAAI,KAAO,IAAI,mBAAmB,SAAU,wBAE3B,MAAM,IAAI,EAAG,EAAG,EAAG,MAAO,UAC5C,AAAG,QAAQ,YAAY,KAAK,UAAW,SAAU,aAAc,CAAC,EAAG,EAAG,GAAI,CAAC,OAAQ,MAAO,eAG5F,MAAO,eCzCX,4BACE,WAIA,WAAc,KAAI,SAAS,UACf,KAAM,QAAM,IAAK,OAC7B,GAAI,CAAE,KAAI,OAAS,KACjB,KAAM,IAAI,OAAM,qBAAqB,IAAI,WAAW,IAAI,yBAAyB,IAAI,OAEvF,MAAO,KCTT,0BAAiC,KAC/B,QAAY,KAAM,cAAa,UAClB,KAAO,KAAK,OAEzB,GAAI,CAAC,KAAK,KAAK,WAAW,UACxB,KAAM,IAAI,OAAM,wEAAwE,KAAK,kBAAkB,IAAI,OAErH,MAAO,eAAc,MCRvB,yBAAmC,KACjC,MAAQ,MAAM,cAAa,MAAM,OCDnC,+BAAsC,KACpC,MAAO,IAAI,cAAa,KAAO,MAAM,cAAa,MAAM,eCHnD,sBAAsB,sBAC3B,4BAAgC,GAAG,yCAEnC,GAAI,CAAC,IACH,MAAO,CACL,aAAc,GACd,YAAa,yBAIjB,GAAI,MAAQ,IACV,MAAO,CACL,aAAc,IACd,YAAa,IAAI,2BAGrB,aAAiB,IAAI,WAAW,WAAa,UAAY,IAAI,WAAW,YAAc,WAAa,GACnG,IAAM,IAAI,QAAQ,SAAU,IAE5B,UAAc,IAAI,MAAM,KAAK,OAAO,GAAK,gBAEpB,IAAI,SAAS,SAC9B,MAAM,MAAM,OAAS,GACrB,qCAEe,SAAY,KAAI,SAAS,SAAW,MAAM,MAAM,EAAG,MAAM,OAAS,GAAK,OAAO,KAAK,KACtG,oBAAe,IAAI,WAAW,KAAO,IAAI,eAAiB,aAEnD,CACL,aACA,YAAa,eAAiB,IAAM,IAAI,eAAiB,GAAG,gBAAgB,gBCzBhF,6BACE,sBAGA,IAAQ,YAAa,cAAiB,aAAa,IAAK,2BACzC,KAAM,WAAuC,aAE5D,MAAO,AAAG,YAAG,YAAY,SAAU,cCT9B,yBAAyB,oCAA0E,IACxG,IAAQ,MAAO,QAAW,mBACtB,mBAAmB,WACnB,UACJ,cAAM,MAAQ,MACd,OAAM,OAAS,OACR,CAAE,MAAO,QCTlB,IAAA,oBAYE,mBAAsB,iBAHZ,aAAkC,OAClC,oBAAiC,MAKhC,UAAmC,MAAO,MAAK,WAC/C,iBAAkC,MAAO,MAAK,kBAC9C,YAAsB,MAAO,CAAC,CAAC,KAAK,OAExC,4BACL,IAAQ,IAAK,SAAY,KAAK,qBAAqB,WACnD,MAAO,KAAI,SAGN,wCACL,IAAQ,IAAK,SAAY,KAAK,qBAAqB,WACnD,IAAI,SAAS,UACb,IAAI,SAAW,OAGV,eACL,MAAO,MAAK,eAAe,IAAI,EAAG,aAAiB,EACjD,KAAM,UACN,OAAQ,KAAK,iBAAiB,cAI3B,qBACL,MAAO,MAAK,eAAe,OAAO,OAAS,MAAM,iBAAqB,WAGjE,kBACL,MAAO,MAAK,eAAe,OAAO,OAAS,CAAE,OAAM,iBAAqB,YAGnE,WACL,KAAK,kBAAkB,QAAQ,EAAG,KAAM,WACtC,KAAK,sBAAsB,KAAM,OAAO,cAIrC,SACL,KAAK,qBAAqB,QAAQ,EAAG,KAAM,qBACzC,WAAe,AAAG,QAAO,UAAS,YAClC,UAAS,UACT,KAAK,sBAAsB,KAAM,UAI9B,yBAAoC,IACzC,KAAK,eAAe,QAAQ,QAC1B,GAAI,kBAAoB,MAAM,OAAO,WACnC,KAAM,IAAI,OAAM,mDAAmD,MAAM,QAE3E,MAAM,OAAO,YAEf,KAAK,QAAU,OAGV,kBACL,MAAO,IAAI,cACT,KAAK,eACF,IAAI,EAAG,UAAa,MAAM,KAAK,OAAO,aACtC,OAAO,YAAe,KAAK,OAAO,YAI5B,oBACX,GAAI,uBAAwB,eAC1B,KAAK,eAAe,cACpB,OAGF,KAAM,MAAK,YAAY,mBAGZ,kBACX,GAAI,KAAO,MAAO,MAAQ,SACxB,KAAM,IAAI,OAAM,GAAG,KAAK,0CAG1B,cAAkB,KAAM,eAAc,IAAK,KAAK,uBAChD,KAAK,kBAAkB,gBAGZ,wBACX,GAAI,UAAY,MAAO,WAAa,SAClC,KAAM,IAAI,OAAM,GAAG,KAAK,iDAG1B,IAAQ,UAAa,KAAI,UAEjB,YAAa,cAAiB,aAAa,SAAU,KAAK,4CAErC,WAAyB,QAAQ,IAC5D,UAAU,IAAI,WAAY,SAAS,WAAU,KAAK,KAAO,IAAI,uBAE3C,AAAG,WAAG,qBAAqB,+BAC9B,KAAK,MAAO,MAAM,UAAS,cAAc,sBACxC,KAAM,cAAY,SAAU,cAE9C,KAAK,kBAAkB,WAGlB,6BACL,IACE,cACA,QACE,KAAK,2BAA2B,WAEpC,KAAK,eAAiB,cACtB,KAAK,QAAU,OAGV,wBACL,IACE,cACA,QACE,KAAK,cAAc,SAEvB,KAAK,eAAiB,cACtB,KAAK,QAAU,OAGT,gCACN,GAAI,CAAC,KAAK,OACR,KAAM,IAAI,OAAM,qDAGlB,WAAe,UAAU,MAAM,KAAK,OAAO,iBACzC,GAAI,CAAC,IAAI,QAAQ,eAAe,UAC9B,KAAM,IAAI,OAAM,wDAAwD,sBAAqB,aAG/F,MAAO,CAAE,IAAK,IAAI,QAAS,iBAAS,QAAS,IAAI,QAAQ,YACxD,CAAE,QAAS,KAAK,UAEX,IAAK,SAAY,OACzB,GAAI,CAAC,KAAO,CAAC,SAAW,CAAE,KAAI,kBAAuB,SACnD,KAAM,IAAI,OAAM,8DAA8D,aAGhF,MAAO,CAAE,IAAK,WCpJX,gCACL,iBAIA,MAAO,AAAG,MAAK,KACb,QAAU,AAAG,gBAAgB,EAAG,OAAO,iBAAkB,OAAO,iBAAkB,OAAQ,QAC1F,WAAM,AAAG,KAAI,IAAK,OAAO,MAClB,MCNJ,qBACL,gCAEwB,IAExB,MAAO,AAAG,MAAK,KACb,SAAa,AAAG,KACd,aACI,AAAG,KACH,AAAG,OAAO,EAAI,iBAAiB,MAAqB,QAAS,CAAC,EAAG,GAAI,QACrE,iBAAiB,MAAM,MAEvB,uBAAuB,EAAG,iBAAiB,MAA8B,CAAC,EAAG,UAEtE,uBAAuB,KAAM,iBAAiB,MAAO,CAAC,EAAG,QAE1D,AAAG,KAAK,AAAG,KAAI,KAAM,YACpB,uBAAuB,IAAK,iBAAiB,MAAO,CAAC,EAAG,IAErE,MAAO,AAAG,MAAK,AAAG,KAAI,KAAM,AAAG,KAAI,KAAM,UAItC,qDAGmB,eACD,IAEvB,MAAO,AAAG,MAAK,KACb,SAAa,AAAG,KACd,aACI,AAAG,KACH,AAAG,OAAO,EAAI,iBAAiB,MAAqB,QAAS,YAAc,CAAC,EAAG,GAAK,CAAC,EAAG,GAAI,QAC5F,iBAAiB,MAAM,MAEvB,uBAAuB,EAAG,iBAAiB,MAA8B,YAAc,CAAC,EAAG,GAAK,CAAC,EAAG,UAE7F,uBAAuB,KAAM,iBAAiB,MAAO,CAAC,EAAG,QAE1D,AAAG,KAAK,AAAG,KAAI,KAAM,YACpB,uBAAuB,IAAK,iBAAiB,MAAO,CAAC,EAAG,QAEzD,AAAG,KAAK,AAAG,KAAI,KAAM,AAAG,KAAI,KAAM,aACjC,uBAAuB,IAAK,iBAAiB,MAAO,CAAC,EAAG,IAErE,MAAO,AAAG,MAAK,AAAG,KAAI,KAAM,AAAG,KAAI,KAAM,AAAG,KAAI,KAAM,WChDnD,mBACL,iBAE4B,gBACR,IAEpB,MAAO,AAAG,MAAK,KACb,QAAY,AAAG,KACb,AAAG,OAAO,EAAG,OAAO,QAAS,CAAC,EAAG,GAAI,SACrC,OAAO,MAGT,MAAO,UAAW,AAAG,KAAK,KAAO,MCd9B,oCAAoC,yBACzC,OAAO,KAAK,WAAW,QAAQ,OAC7B,AAAK,cAAc,KAAK,IAAM,GAAG,eAAiB,OAChD,UAAU,MAAM,YCDf,kCACL,8BAIA,MAAO,0DAOL,YAAgB,AAAG,SACjB,eAAe,WAAa,YAAc,WAAa,YACvD,CAAC,WAAY,WAAY,WAAY,mBAE1B,AAAG,SAAS,eAAe,cAExC,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,sBAGX,CAAE,QAAS,OCtBf,gCACL,8BAIA,MAAO,+CAML,eAAmB,AAAG,SAAS,eAAe,WAAa,aAAc,CAAC,WAAY,sBACtE,AAAG,SAAS,eAAe,cAE3C,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,sBAGX,CACL,QAAS,WACT,KAAM,UC1BZ,IAAA,0BAoBE,oDACS,uCACA,uCACA,iBCnBJ,2CACL,8BAIA,MAAO,+CACL,qBAAyB,AAAG,SAAS,eAAe,EAAI,EAAI,YAAa,CAAC,EAAG,EAAG,WAAY,qBACnE,AAAG,SAAS,eAAe,WAAa,aAAc,CAAC,EAAG,EAAG,WAAY,mBACrF,AAAG,SAAS,eAAe,cAExC,qBAAc,KACZ,CAAE,UAAW,GAAG,iCAChB,CAAE,UAAW,GAAG,iCAChB,CAAE,UAAW,GAAG,sBAGX,GAAI,qBACT,iBACA,iBACA,OAMC,4DAIL,MAAO,kBACL,qBAAyB,mBAAgC,GAAG,0BAA2B,oBAC9D,mBAAgC,GAAG,0BAA2B,QAC1E,mBAAgC,GAAG,cAAe,GAE/D,MAAO,IAAI,qBACT,iBACA,iBACA,OCtCC,mCAAmC,yBAExC,MAAO,6CACL,WAAe,UAAU,cAEzB,GAAI,CAAC,SAAS,OAAQ,WACpB,KAAM,IAAI,OAAM,sBAAsB,+BAA+B,4BAA4B,UAGnG,qBAAc,KACZ,CAAE,aAAc,UAAW,YAAc,eAGpC,QChBJ,+BAA+B,SACpC,qBAAuB,QAEvB,oCACE,QAAY,iBAAiB,MAAM,EAAG,YACtC,wBAAmB,iBAAiB,MAAM,YACnC,IAGT,+BACE,MAAO,kBAGT,MAAO,CACL,eACA,qBCPG,2BAA2B,8BAEhC,sBAA0B,yBAAyB,eAAgB,0CAChC,kCAAkC,eAAgB,eAErF,mFAAyH,IAEvH,UAAc,aACV,kBAAkB,WAAY,YAAa,EAAG,GAAG,sBACjD,2BAA2B,WAAY,YAAa,GAAG,4BAC7C,2BAA2B,YAAa,YAAa,GAAG,6BACxD,2BAA2B,YAAa,YAAa,GAAG,sBAEtE,MAAO,CAAE,MAAO,MAAO,cAGzB,mFAAyH,IAEvH,IAAQ,MAAO,MAAO,cAAU,yBAAyB,WAAY,YAAa,aAAc,oBAClF,2BAA2B,YAAa,YAAa,GAAG,sBAEtE,MAAO,CAAE,MAAO,MAAO,aAAO,OAGhC,MAAO,CACL,yBACA,0BC7BG,uBAAuB,SAE5B,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,UAGxB,0BACE,kBAAkB,eAAgB,sBAEvB,yBAAyB,EAAG,GAAI,SAAU,WAC1C,yBAAyB,GAAI,GAAI,iBACjC,yBAAyB,GAAI,IAAK,iBAClC,yBAAyB,IAAK,IAAK,UAElD,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CAAE,OAAQ,OAAQ,OAAQ,SCzB/B,+BAA+B,oBACpC,MAAO,kBACL,YAAgB,mBAAgC,GAAG,iBAAkB,QACxD,mBAAgC,GAAG,cAAe,GAE/D,MAAO,CAAE,QAAS,OCLf,2BAA2B,yBAEhC,uBAA2B,0BAA0B,UAAW,iCAEtC,sBAAsB,+CACb,+BAA+B,oBAElE,sDAA0E,IACxE,UAAc,aACV,kBAAkB,GAAG,gBACrB,2BAA2B,GAAG,sBACpB,2BAA2B,GAAG,uBAC9B,2BAA2B,GAAG,gBAE5C,MAAO,CAAE,MAAO,MAAO,cAGzB,sDAA0E,IACxE,UAAc,aACV,kBAAkB,GAAG,gBACrB,2BAA2B,GAAG,sBACpB,2BAA2B,GAAG,uBAC9B,2BAA2B,GAAG,sBAC9B,2BAA2B,GAAG,gBAE5C,MAAO,CAAE,MAAO,MAAO,aAAO,OAGhC,MAAO,CACL,yBACA,0BC5BG,oCACL,WAGA,kBAAsC,IAGpC,0BACE,kBAAkB,UAAW,sBAElB,CACb,OAAQ,yBAAyB,SAAU,IAC3C,OAAQ,yBAAyB,UACjC,OAAQ,yBAAyB,UACjC,OAAQ,yBAAyB,WAGnC,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eCzBnB,IAAA,kCAU0C,eAExC,cACE,MAAM,wBAGD,qBAEL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,sDAGlB,MAAO,AAAG,MAAK,KACb,gBAAoB,AAAG,KAAK,OAAM,cAAc,IAAK,IAAO,mBAC5C,CAAC,QAAS,QAAS,oBAChB,UAAU,YAAa,SAAS,IAAI,AAAG,OAAO,UAEvD,YAAY,WAAY,OAAO,OAAQ,IACjD,WAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,SAE/B,WAIE,iBACX,MAAO,MAAK,aAAa,KAAM,YAAW,SAGlC,sBACR,MAAO,+BAGC,sCACR,MAAO,4BAA2B,WAG1B,uBACR,MAAO,eAAc,WChDlB,6BACL,UAGA,MAAO,AAAG,MAAK,IACb,AAAG,KACD,AAAG,OAAO,EAAG,OAAO,SACpB,OAAO,OCRN,wBAAuB,gCAE5B,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,yBAEF,uBAAuB,eAAgB,kBAEpD,gBAAgB,WAAY,YAAa,MAEpD,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CAAE,KCjBP,qCACL,WAGA,kBAAsC,sBAEX,0BAA0B,UAAW,eAEhE,iCACE,YAAgB,mBAAgC,GAAG,iBAAkB,QACxD,mBAAgC,GAAG,cAAe,GAC/D,MAAO,CAAE,QAAS,MAGpB,WAAe,CACb,GAAI,gBAAgB,OAGtB,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eCvBZ,4BAA4B,WAEjC,wBAA+C,iBACN,GAEzC,cAAO,KAAK,WAAW,QAAQ,MAC7B,QAAY,IAAI,WAAW,MAAQ,cAAgB,oBACnD,IAAI,KAAO,UAAU,OAGhB,CAAE,oBAAqB,eCZhC,IAAA,2BAkBU,eAIR,wCACE,MAAM,OACN,KAAK,sBAAwB,wBAGpB,wBACT,MAAO,MAAK,sBAOP,eAEL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,GAAG,KAAK,uCAG1B,MAAO,AAAG,MAAK,KACb,uBAA2B,iBAAiB,UACxC,KAAK,qBAAqB,aAAa,QACvC,OACJ,MAAO,qBAAoB,mBAAmB,KAAK,mBAAmB,MAAM,GAAI,IAAK,OAAO,MAIzF,yBAAoC,IACzC,KAAK,qBAAqB,QAAQ,kBAClC,MAAM,QAAQ,kBAGT,8BACL,IAAQ,OAAQ,eAAkB,KAAK,wBAAwB,SAC/D,KAAK,QAAU,OACf,KAAK,eAAiB,cAGjB,iCACL,MAAO,gBAAc,QAAS,KAAK,0BAA2B,KAAK,4BAG3D,sCAER,IAAQ,oBAAqB,eAAkB,mBAAmB,WAElE,YAAK,qBAAqB,kBAAkB,qBAErC,4BAA2B,eAG1B,uBAER,QAAY,KAAK,+BACJ,KAAK,gDACY,KAAO,IAAQ,6BAEb,QAAQ,MAAM,EAAG,QAAQ,OAAS,wCACxC,QAAQ,MAAM,QAAQ,OAAS,sBAEzD,YAAK,qBAAqB,eAAe,yBAClC,KAAK,wBAAwB,qBCrF3B,uBAAyB,CAAC,UAAW,QAAS,MAAO,QAAS,UAAW,YAAa,6BAAnG,MAWE,2BACE,GAAI,cAAc,SAAW,EAC3B,KAAM,IAAI,OAAM,8EAA8E,cAAc,UAG9G,uBAAuB,QAAQ,mBAC7B,KAAK,YAAc,cAAc,OAIrC,gBACE,MAAO,wBACJ,IAAI,YAAe,EAAE,WAAY,YAAa,KAAK,eACnD,KAAK,SAAY,GAAG,YAAc,GAAG,eCxB5C,+BAQuC,eAErC,iCAAyD,GAAI,uBAC3D,MAAM,oBAAqB,sBAGtB,qBACL,MAAO,AAAG,MAAK,IAAM,AAAG,QAAQ,KAAK,OAAO,eAGjC,iBACX,MAAO,MAAK,aAAa,KAAM,YAAW,cAG/B,4BACX,aAAiB,KAAM,YAAW,YACtB,KAAM,MAAK,aAAa,8BACR,KAAM,SAAQ,IAAI,AAAG,QAAQ,KAAK,IAAI,UAChE,SAAa,KAAM,GAAE,OACrB,SAAE,UACK,QAET,IAAI,UAEJ,uBAA2B,oBACxB,IAAI,cAAgB,GAAI,iBAAgB,eAE3C,MAAO,UAAS,aACZ,mBACA,mBAAmB,GAGf,sBACR,MAAO,wBAGC,0BACR,MAAO,KAGC,2BACR,MAAO,KC3CJ,+BAA+B,KACpC,MAAO,KAAI,sBAA0B,iBAGhC,0DAOL,cAAkB,CAAE,aACpB,MAAO,QAAO,OAAO,GAAI,UAAW,WCT/B,6BACL,wCAEgB,oBAGhB,yBAA6B,MAAM,QAAQ,iBAAmB,gBAAkB,CAAC,iBAEjF,qBAAqB,QAAQ,IAC3B,SAAa,YAAa,iBACtB,EACC,sBAAsB,GAAK,EAAE,YAAc,OAChD,GAAI,CAAC,KACH,KAAM,IAAI,OAAM,mHAGlB,WAAe,KAAK,iCACK,OAAO,OAAO,OAAQ,MAAK,YAAc,sBAEnD,oBAAoB,GAC/B,EAAE,UAAU,IAAI,WACf,iBAAmB,GAAI,OAAM,EAAG,iBAEf,GAAI,eACxB,iBAAiB,IAAI,OAAQ,GAAG,MAAK,eAAe,OAAM,MAAK,iBAC/D,QAEF,cAAc,KAAK,aCtBhB,6BAA6B,KAClC,MAAO,qBAAoB,MACtB,IAAI,oBAAwB,gBAC5B,IAAI,6BAAiC,gBACrC,IAAI,sBAA0B,eAG9B,+DAQL,IAAQ,WAAe,UAAU,oBACf,mBAAmB,QAAwB,MAAM,EAAG,MAAM,QAE/D,UAAU,SACf,WAAc,UAAU,sBACZ,GAAI,eAAc,UAAU,UAAU,MAAO,KAAK,QAAQ,UAAU,WAAY,qBAElF,CAChB,UACA,mBACA,aAGF,MAAO,QAAO,OAAO,GAAI,UAAW,WC1CtC,IAAA,+BAyBE,oBAAiD,IAC/C,IAAQ,UAAY,GAAM,WAAa,GAAM,UAAW,UAAW,UAAW,YAAe,QAC7F,KAAK,UAAY,UACjB,KAAK,WAAa,WAClB,KAAK,UAAY,WAAa,EAC9B,KAAK,UAAY,WAAa,EAC9B,KAAK,UAAY,WAAa,uBAC9B,KAAK,WAAa,YAAc,2CAhCpC,MAwCE,kCAEuC,IAErC,KAAK,cAAgB,cACrB,KAAK,QAAU,GAAI,0BAAyB,SAG9C,gBACE,QAAY,oBAAoB,YAExB,UAAW,WAAY,UAAW,UAAW,UAAW,YAAe,KAAK,QAcpF,GAZA,AAAI,WAAa,KAAK,wBAAyB,kBAC7C,KAAI,YAAc,UAClB,IAAI,UAAY,UAChB,YAAY,IAAK,KAAK,cAAc,iBACpC,YAAY,IAAK,KAAK,cAAc,kBACpC,YAAY,IAAK,KAAK,cAAc,mBACpC,YAAY,IAAK,KAAK,cAAc,WACpC,YAAY,IAAK,KAAK,cAAc,aAAc,IAClD,YAAY,IAAK,KAAK,cAAc,cAAe,IACnD,YAAY,IAAK,KAAK,cAAc,WAAY,KAG9C,YACF,IAAI,YAAc,WAClB,IAAI,UAAY,WAEhB,cAAkB,KAChB,IAAI,YACJ,IAAI,IAAI,GAAG,EAAG,GAAG,EAAG,UAAW,EAAG,EAAI,KAAK,IAC3C,IAAI,QAEN,KAAK,cAAc,UAAU,QAAQ,cAOpC,oDAIL,uBAA2B,MAAM,QAAQ,eAAiB,cAAgB,CAAC,eAC3E,mBAAmB,QAAQ,IACzB,cAAkB,YAAa,eAC3B,EACC,oBAAoB,GAAK,EAAE,UAAY,OAC5C,GAAI,CAAC,UACH,KAAM,IAAI,OAAM,gIAGlB,GAAI,mBAAkB,WAAW,KAAK,aCzF1C,4BAA2B,8BAEzB,sBAA0B,yBAAyB,eAAgB,0CAChC,kCAAkC,eAAgB,eAErF,0EAEE,oBAAwB,2BAA2B,WAAY,YAAa,GAAG,gDACvD,2BAA2B,YAAa,YAAa,GAAG,+CACzD,kBAAkB,WAAY,YAAa,EAAG,GAAG,+BAExE,MAAO,CAAE,gBAAiB,gBAAiB,gBAG7C,uDAEE,oBAAwB,2BAA2B,SAAU,SAAU,GAAG,gDAClD,2BAA2B,SAAU,SAAU,GAAG,gDAClD,2BAA2B,SAAU,SAAU,GAAG,gCAE1E,MAAO,CAAE,gBAAiB,gBAAiB,iBAG7C,MAAO,CACL,kBACA,2BACA,4BACA,wBAKG,+CAEL,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,UAGxB,kBACA,2BACA,4BACA,wBACE,mBAAkB,eAAgB,kCAEX,kBAAkB,EAAG,GAAI,EAAG,mDAClB,4BAA4B,GAAI,GAAI,6DACpC,4BAA4B,GAAI,IAAK,2CAEvD,CACjB,QAAS,mBACT,kBAAmB,6BACnB,kBAAmB,0CAGD,GACpB,OAAM,cAAe,EAAG,GAAG,QAAQ,MACjC,YAAY,cAAc,OAAS,uBAAuB,IAAK,0BAA0B,SAG3F,8BAAkC,4BAA4B,IAAK,IAAK,sDACvC,2BAA2B,IAAK,IAAK,sCAEpD,CAChB,gBAAiB,0BACjB,eAAgB,0BAGlB,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CAAE,WAAY,YAAa,YCtEvC,4BAA2B,yBAEzB,uBAA2B,0BAA0B,UAAW,iCAEtC,sBAAsB,+CACb,+BAA+B,oBAElE,mDAEE,oBAAwB,2BAA2B,GAAG,gDAC9B,2BAA2B,GAAG,+CAC/B,kBAAkB,GAAG,+BAE5C,MAAO,CAAE,gBAAiB,gBAAiB,gBAG7C,8CAEE,oBAAwB,2BAA2B,GAAG,gDAC9B,2BAA2B,GAAG,gDAC9B,2BAA2B,GAAG,gCAEtD,MAAO,CAAE,gBAAiB,gBAAiB,iBAG7C,MAAO,CACL,kBACA,2BACA,4BACA,wBAIG,8DAKL,kBAAsC,IAGpC,kBACA,2BACA,4BACA,wBACE,mBAAkB,UAAW,kCAEN,kBAAkB,mDACR,4BAA4B,6DAC5B,4BAA4B,2CAE9C,CACjB,QAAS,mBACT,kBAAmB,6BACnB,kBAAmB,0CAGD,GACpB,OAAM,cAAe,EAAG,GAAG,QAAQ,MACjC,YAAY,cAAc,OAAS,uBAAuB,0BAA0B,SAGtF,8BAAkC,4BAA4B,sDAC7B,2BAA2B,sCAE1C,CAChB,gBAAiB,0BACjB,eAAgB,0BAGlB,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,CAAE,WAAY,YAAa,WAAa,eCzE3D,cAAc,iBACZ,MAAO,AAAG,MAAI,AAAG,OAAO,EAAG,OAAO,QAAS,OAAQ,QAAS,OAAO,MAGrE,iDAAiG,IAC/F,QAAU,gBAAkB,AAAG,KAAK,GAAK,EACzC,WAAM,uBAAuB,IAAK,OAAO,gBAAiB,CAAC,EAAG,IAC9D,IAAM,uBAAuB,AAAG,KAAK,KAAO,OAAO,gBAAiB,CAAC,EAAG,IACxE,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,AAAG,KAAI,IAAK,KAAK,EAAI,OAAO,eAAgB,CAAC,EAAG,KAC/C,IAGT,6BACE,QAAU,uBAAuB,AAAG,KAAK,GAAI,OAAO,gBAAiB,CAAC,EAAG,IACzE,WAAM,uBAAuB,AAAG,KAAK,KAAM,OAAO,gBAAiB,CAAC,EAAG,IACvE,IAAM,uBAAuB,AAAG,KAAK,KAAM,OAAO,gBAAiB,CAAC,EAAG,IACvE,IAAM,AAAG,KAAI,IAAK,GACX,IA7BT,8BAgCkC,eAIhC,2BACE,MAAM,gBACN,KAAK,eAAiB,cAGjB,qBAEL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,8CAGlB,MAAO,AAAG,MAAK,KACb,gBAAoB,AAAG,KAAK,OAAM,cAAc,IAAK,IAAO,mBAC5C,CAAC,QAAS,QAAS,oBAChB,UAAU,YAAa,SAAS,IAAI,AAAG,OAAO,UAEvD,AAAG,KAAK,KAAK,WAAY,OAAO,WAAW,QAAS,CAAC,EAAG,KAClE,WAAM,eAAe,IAAK,OAAO,WAAW,kBAAmB,IAC/D,IAAM,eAAe,IAAK,OAAO,WAAW,mBAE5C,OAAM,KAAK,eAAgB,EAAG,GAAG,QAAQ,MACvC,IAAM,UAAU,IAAK,OAAO,YAAY,cAAc,UAGxD,IAAM,eAAe,IAAK,OAAO,UAAU,iBAC3C,IAAM,AAAG,KAAK,uBAAuB,IAAK,OAAO,UAAU,eAAgB,CAAC,EAAG,KACxE,WAIE,iBACX,MAAO,MAAK,aAAa,KAAM,YAAW,SAGlC,sBACR,MAAO,sBAGC,sCACR,MAAO,6BAA2B,UAAW,KAAK,gBAG1C,uBACR,MAAO,gBAAc,QAAS,KAAK,kBC9EhC,wBAAuB,SAE5B,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,yBAEF,uBAAuB,eAAgB,mBAEnD,gBAAgB,IAAK,EAAG,iBACrB,gBAAgB,IAAK,EAAG,aAEvC,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CAAE,GAAI,CAAE,IAAK,UClBlB,qCACL,WAGA,kBAAsC,sBAEX,0BAA0B,UAAW,eAEhE,iCACE,YAAgB,mBAAgC,GAAG,iBAAkB,QACxD,mBAAgC,GAAG,cAAe,GAC/D,MAAO,CAAE,QAAS,MAGpB,WAAe,CACb,GAAI,CACF,IAAK,gBAAgB,UACrB,OAAQ,gBAAgB,eAI5B,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eClBZ,IAAK,OAAL,mBACL,eAAS,SACT,aAAO,SAFG,qBCVZ,IAAA,0BAWkC,eAIhC,iCAAiD,GAAI,cAAa,IAChE,MAAM,gBACN,KAAK,sBAAwB,wBAGpB,wBACT,MAAO,MAAK,sBAGP,eAEL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,GAAG,KAAK,uCAG1B,MAAO,AAAG,MAAK,KACb,uBAA2B,iBAAiB,UACxC,KAAK,qBAAqB,aAAa,QACvC,cAEW,AAAG,QAAQ,mBAAoB,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,SAAS,KAAK,mBAAmB,MAAM,GAAI,QAC7F,oBAAoB,OAAQ,OAAO,GAAG,KAAK,cACxC,oBAAoB,OAAQ,OAAO,GAAG,QACrD,MAAO,CAAE,IAAK,UAIX,qBACL,MAAO,AAAG,MAAK,KACb,IAAQ,IAAK,QAAW,KAAK,OAAO,QACpC,MAAO,CAAE,IAAK,OAAQ,AAAG,QAAQ,gBAIxB,iBACX,MAAO,MAAK,aAAa,KAAM,YAAW,cAG/B,6BACX,aAAiB,KAAM,YAAW,YACtB,KAAM,MAAK,aAAa,eAEvB,AAAG,QAAQ,IAAI,aACZ,AAAG,QAAQ,IAAI,4BACH,KAAK,IAAI,eAAmB,EACtD,UACA,aAAc,QAAQ,yBAGG,KAAM,SAAQ,IACvC,oBAAoB,IAAI,OAAS,UAAW,iBAC1C,QAAa,MAAM,WAAU,QAAQ,YACnB,MAAM,cAAa,QAAQ,UAC9B,SAAW,UACX,OAAS,OAAO,KAAO,OAAO,yBACnB,OAAS,SAAY,EAAI,SAEnD,iBAAU,UACV,aAAa,UACN,CAAE,IAAK,OAAQ,sBAG1B,WAAI,IAAI,UACR,IAAI,OAAO,UAEJ,SAAS,aAAe,mBAAiD,mBAAmB,GAG3F,sBACR,MAAO,mBAGF,yBAAoC,IACzC,KAAK,qBAAqB,QAAQ,kBAClC,MAAM,QAAQ,kBAGT,8BACL,IAAQ,OAAQ,eAAkB,KAAK,wBAAwB,SAC/D,KAAK,QAAU,OACf,KAAK,eAAiB,cAGjB,iCACL,MAAO,gBAAc,SAGb,sCAER,IAAQ,oBAAqB,eAAkB,mBAAmB,WAElE,YAAK,qBAAqB,kBAAkB,qBAErC,4BAA2B,eAG1B,uBAER,yBAA8B,IAAM,EAAI,EAAM,KAAM,EAAI,2BAExB,QAAQ,MAAM,EAAG,QAAQ,OAAS,wCACxC,QAAQ,MAAM,QAAQ,OAAS,sBAEzD,YAAK,qBAAqB,eAAe,yBAClC,KAAK,wBAAwB,qBCzHxC,IAAA,mCAYU,eAED,iDAEL,oBAAwB,mBAAmB,IAAI,EAAG,MAAO,WACvD,WAAc,UAAY,KAAK,IAAI,OAAQ,OAC3C,MAAO,CACL,MAAO,MAAQ,OACf,OAAQ,OAAS,oBAIH,gBAAgB,OAElC,MAAO,AAAG,MAAK,KACb,4BAAgC,eAC9B,AAAG,MAAM,CAAC,AAAG,KAAK,CAAC,IAAK,MAAO,WAAY,AAAG,KAAK,CAAC,IAAK,MAAO,YAAa,GAAG,KAAK,EAAG,KAAK,mBAE5E,kBACjB,IAAQ,MAAO,QAAW,gBAAgB,UAC1C,MAAO,MAAK,MAAO,QAAU,KAAK,IAAI,MAAQ,QAAU,EAAI,eAE1C,UAAsB,YAAW,SAAU,OAAU,EAAI,eACzD,UAAsB,YAAW,SAAU,OAAU,EAAI,mBAErD,OACrB,IAAI,AAAG,KAAK,CAAC,UAAW,KAAM,UAAW,YACzC,IAAI,AAAG,MAAM,MAAM,KAAK,MAAM,WAAY,cACzC,wBACE,YAAY,UACZ,YAAY,cAGf,IAAI,AAAG,MAAM,MAAM,KAAK,MAAM,WAAY,cACzC,wBACE,gBAAgB,UAAU,MAC1B,gBAAgB,UAAU,WAIhC,MAAO,mBAIJ,qBACL,MAAO,AAAG,MAAK,KACb,QAAY,KAAK,OAAO,QACxB,MAAO,MAAK,YACV,IACA,OAAM,UACN,OAAM,gBAAgB,IAAI,kBAAsB,EAAE,OAAQ,iBAKnD,iBACX,MAAO,MAAK,aAAa,KAAM,YAAW,cAG/B,yBACX,aAAiB,KAAM,YAAW,wBACV,AAAG,KACzB,IAAM,AAAG,QAAQ,KAAK,aAAa,8BAGX,KAAM,SAAQ,IAAI,gBAAgB,IAC1D,iCACE,mBAAuB,MAAM,KAAK,KAAM,gBAAe,gBACvC,eAAe,OAAO,OAAU,QAAO,YACvC,eAAe,OAAO,OAAU,CAAC,QAAO,IAExD,MAAO,IAAI,iBACT,MAAM,IAAI,KAAK,GAAG,IAAI,OAAU,GAAI,OAAM,QAAQ,GAAc,QAAQ,KACxE,CACE,OAAQ,SAAS,eAAe,UAChC,MAAQ,SAAS,cAAc,eAMvC,uBAAgB,QAAQ,GAAK,EAAE,WAExB,SAAS,aAAe,kBAAyC,kBAAkB,GAGlF,2BACR,MAAO,OCnGX,+BAIuC,uBAErC,iCAAyD,GAAI,uBAC3D,MAAM,oBAAqB,sBAGnB,sBACR,MAAO,yBAGC,0BACR,MAAO,OCTJ,wCACL,WAGA,kBAAsC,IAGpC,0BACE,kBAAkB,UAAW,sBAElB,CACb,OAAQ,yBAAyB,SAAU,IAC3C,OAAQ,yBAAyB,UACjC,OAAQ,yBAAyB,WAGnC,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eClBZ,2BAA2B,SAEhC,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,UAGxB,0BACE,kBAAkB,eAAgB,sBAEvB,yBAAyB,EAAG,GAAI,SAAU,WAC1C,yBAAyB,GAAI,GAAI,iBACjC,yBAAyB,GAAI,IAAK,UAEjD,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CAAE,OAAQ,OAAQ,SC7B9B,IAAA,sCAU8C,eAE5C,cACE,MAAM,4BAGD,qBAEL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,0DAGlB,MAAO,AAAG,MAAK,KACb,gBAAoB,AAAG,KAAK,OAAM,cAAc,IAAK,IAAO,mBAC5C,CAAC,QAAS,QAAS,oBAChB,UAAU,YAAa,SAAS,IAAI,AAAG,OAAO,UAEvD,YAAY,WAAY,OAAO,OAAQ,IACjD,WAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,AAAG,QAAQ,IAAK,CAAC,GAAI,IAAK,CAAC,EAAG,GAAI,SAEjC,WAIE,iBACX,MAAO,MAAK,aAAa,KAAM,YAAW,SAGlC,sBACR,MAAO,oCAGC,sCACR,MAAO,gCAA+B,WAG9B,uBACR,MAAO,mBAAkB,WCnD7B,mCAI2C,uBAEzC,iCAA6D,GAAI,2BAC/D,MAAM,wBAAyB,sBAGvB,sBACR,MAAO,8BAGC,0BACR,MAAO,OCfX,6BAKqC,qBCD9B,gBAAe,UACpB,MAAO,AAAG,MAAI,AAAG,IAAI,EAAG,OAAO,SAAU,OAAO,QCClD,oBACE,kCAI4B,QAE5B,IAAQ,QAAS,MAAS,OAAO,SAEvB,AAAG,OAAO,EAAG,QAAS,QAAS,SACzC,WAAM,AAAG,KAAI,IAAK,MAClB,IAAM,OAAM,IAAK,OAAO,OACjB,SAAW,AAAG,KAAK,KAAO,IAG5B,yBACL,MAAO,YAAU,EAAG,OAAQ,CAAC,EAAG,GAAI,IAG/B,8BACL,MAAO,YAAU,EAAG,OAAQ,CAAC,EAAG,GAAI,IAG/B,4BACL,MAAO,YAAU,EAAG,OAAQ,CAAC,EAAG,GAAI,GAAM,SCxB5C,4BAA2B,8BAEzB,oEACE,YAAgB,eAAe,uBACjB,QAAQ,OAAU,YAAa,WAAa,YAE1D,GAAI,QAAQ,OACV,KAAM,IAAI,OAAM,+BAA+B,0BAA0B,QAAQ,uBAAuB,2BAA2B,cAGrI,MAAO,AAAG,MACR,IAAM,AAAG,UACP,AAAG,SAAS,QAAS,CAAC,WAAY,MAAO,WAAY,aACrD,CAAC,EAAG,EAAG,EAAG,KAKhB,+EAOE,YAAgB,oBAAoB,gBAAiB,WAAY,iBACpD,AAAG,SAAS,eAAe,aAExC,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,sBAGX,CAAE,QAAS,MAGpB,0DAEE,YAAgB,AAAG,SAAS,eAAe,oBAC5B,AAAG,SAAS,eAAe,aAE1C,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,wBAGX,CACL,QACA,QAIJ,oFAOE,UAAa,kBAAkB,gBAAiB,WAAY,WAAY,GAAG,4BAC7D,wBAAwB,WAAY,GAAG,sBAErD,MAAO,CAAE,WAAM,cAGjB,8FAKoB,IAGlB,UAAc,uBAAwB,QAAS,GAAM,GAAK,gBAAiB,WAAY,WAAY,GAAG,6BACxF,uBAAuB,gBAAiB,WAAY,WAAY,GAAG,sBAEjF,MAAO,CAAE,MAAO,cAGlB,MAAO,CACL,uBACA,4BAKG,iCAEL,IACE,eACA,qBACE,sBAAsB,uBAEY,IAGpC,uBACA,4BACE,mBAAkB,eAAgB,2BAElB,uBAAuB,KAAM,GAAI,EAAG,wBACvC,2BAA2B,KAAM,GAAI,EAAG,qBACxC,2BAA2B,KAAM,GAAI,EAAG,qBACxC,2BAA2B,KAAM,GAAI,EAAG,wBAErC,2BAA2B,MAAO,GAAI,EAAG,cAAe,aAC3D,2BAA2B,MAAO,GAAI,EAAG,qBACzC,2BAA2B,MAAO,GAAI,EAAG,qBACzC,2BAA2B,MAAO,GAAI,EAAG,yBAErC,2BAA2B,OAAQ,IAAK,EAAG,eAAgB,cAC9D,2BAA2B,OAAQ,IAAK,EAAG,uBAC3C,2BAA2B,OAAQ,IAAK,EAAG,0BAExC,2BAA2B,OAAQ,IAAK,EAAG,eAAgB,cAC9D,2BAA2B,OAAQ,IAAK,EAAG,uBAC3C,2BAA2B,OAAQ,IAAK,EAAG,8BACpC,2BAA2B,OAAQ,IAAK,EAAG,uBAEzD,AAAG,KACZ,IAAM,AAAG,UAAU,AAAG,SAAS,eAAe,IAAM,KAAM,CAAC,IAAK,MAAO,CAAC,EAAG,KAI7E,GAFA,cAAc,KAAK,CAAE,UAAW,OAE5B,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,WAAe,CACb,YACA,SACA,SACA,SACA,YACA,SACA,SACA,SACA,aACA,UACA,UACA,aACA,UACA,UACA,iBACA,IAGF,MAAO,CAAE,OAAQ,eCnJnB,4BAA2B,yBAEzB,uBAA2B,0BAA0B,UAAW,eAEhE,yCAEE,YAAgB,mBAAgC,GAAG,uBAAwB,UAC5D,mBAAgC,GAAG,sBAAuB,GAEzE,MAAO,CAAE,QAAS,QAGpB,wCAEE,YAAgB,mBAAgC,GAAG,sBAAuB,QAC7D,mBAAgC,GAAG,mBAAoB,UACtD,wBAAwB,QAEtC,MAAO,CAAE,KAAM,CAAE,QAAS,MAAQ,cAGpC,4CACE,MAAO,CACL,MAAO,uBAAuB,GAAG,gBACjC,MAAO,uBAAuB,GAAG,iBAIrC,MAAO,CACL,uBACA,4BAKG,gDAIL,kBAAsC,IAGpC,uBACA,4BACE,mBAAkB,UAAW,2BAEb,uBAAuB,wBAC1B,2BAA2B,qBAC3B,2BAA2B,qBAC3B,2BAA2B,wBAExB,2BAA2B,wBAC9B,2BAA2B,qBAC3B,2BAA2B,qBAC3B,2BAA2B,yBAEvB,2BAA2B,0BAC9B,2BAA2B,uBAC3B,2BAA2B,0BAExB,2BAA2B,0BAC9B,2BAA2B,uBAC3B,2BAA2B,8BACpB,2BAA2B,uBAEzC,UAAU,GAGrB,GAFA,cAAc,KAAK,CAAE,aAAc,KAAM,UAAW,OAEhD,CAAC,WAAW,IACd,KAAM,IAAI,OAAM,yDAAyD,MAG3E,WAAe,CACb,YACA,SACA,SACA,SACA,YACA,SACA,SACA,SACA,aACA,UACA,UACA,aACA,UACA,UACA,iBACA,IAGF,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eC9FZ,kBAAkB,UACvB,QAAU,MAAK,EAAG,OAAO,OACzB,WAAM,WAAW,IAAK,OAAO,OAC7B,IAAM,AAAG,KAAI,IAAK,GAClB,IAAM,AAAG,KAAK,KACP,IAGF,gCACL,QAAU,SAAS,EAAG,OAAO,OAC7B,IAAM,WAAW,IAAK,OAAO,OAE7B,WAAa,AAAG,QAAQ,EAAG,EAAG,EAAG,gBACnB,AAAG,MAAkB,OAAO,aAC5B,OAAO,MAAM,KAAO,IAAI,MAAM,iBACtB,OAAO,MAAM,KAAO,IAAI,MAAM,IAAM,OAAO,MAAM,KAAO,IAAI,MAAM,GAExF,GAAI,eACF,cAAkB,CAAC,GAAG,IAAI,OAC1B,UAAU,GAAK,EACf,WAAe,AAAG,MAAkB,WACpC,IAAM,AAAG,OAAO,CAAC,IAAK,QAAS,GAE/B,cAAkB,CAAC,GAAG,IAAI,OAC1B,UAAU,GAAK,EACf,WAAe,AAAG,MAAkB,WACpC,IAAM,AAAG,OAAO,CAAC,IAAK,QAAS,GAGjC,cAAS,MAAQ,AAAG,OAAO,CAAC,OAAQ,QAAQ,GAAK,OACjD,IAAM,AAAG,KAAI,OAAQ,KAErB,IAAM,AAAG,KAAK,KACP,ICtCT,IAAA,gCAYwC,eAEtC,cACE,MAAM,sBAGD,qBAEL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,oDAGlB,MAAO,AAAG,MAAK,KAEb,gBAAoB,AAAG,KAAK,OAAM,cAAc,IAAK,IAAO,mBAE5C,CAAC,QAAS,QAAS,oBAChB,UAAU,YAAa,SAAS,IAAI,AAAG,OAAO,UAEvD,SAAS,WAAY,OAAO,aACtC,IAAM,AAAG,QAAQ,IAAK,EAAG,EAAG,SAE5B,IAAM,SAAS,IAAK,OAAO,UAC3B,IAAM,SAAS,IAAK,OAAO,UAC3B,IAAM,SAAS,IAAK,OAAO,UAE3B,IAAM,aAAa,IAAK,OAAO,aAC/B,IAAM,SAAS,IAAK,OAAO,UAC3B,IAAM,SAAS,IAAK,OAAO,UAC3B,IAAM,SAAS,IAAK,OAAO,UAE3B,IAAM,aAAa,IAAK,OAAO,cAC/B,IAAM,SAAS,IAAK,OAAO,WAC3B,IAAM,SAAS,IAAK,OAAO,WAE3B,IAAM,aAAa,IAAK,OAAO,cAC/B,IAAM,SAAS,IAAK,OAAO,WAC3B,IAAM,SAAS,IAAK,OAAO,WAC3B,IAAM,aAAa,IAAK,OAAO,kBAE/B,cAAkB,IAAI,KAAK,CAAC,EAAG,mBACR,AAAG,OAAO,UAAW,OAAO,IAEnD,MAAO,uBAIE,iBACX,MAAO,MAAK,aAAa,KAAM,YAAW,cAG/B,+BACX,aAAiB,KAAM,YAAW,8BAEJ,AAAG,KAC/B,IAAM,AAAG,QAAQ,KAAK,aAAa,oCAGL,KAAM,SAAQ,IAAI,sBAAsB,IACtE,GAAK,EAAE,SAGT,6BAAsB,QAAQ,GAAK,EAAE,WAE9B,SAAS,aACZ,wBACA,wBAAwB,GAGpB,sBACR,MAAO,yBAGC,sCACR,MAAO,6BAA2B,WAG1B,uBACR,MAAO,gBAAc,WCxFlB,kCAAkC,SACvC,QAAY,GAAI,oBAChB,WAAI,eAAe,SACZ,ICHF,kCAGL,sBAIA,cAAkB,CAAE,YACpB,MAAO,QAAO,OAAO,GAAI,UAAW,WCR/B,mBAAmB,KACxB,MAAO,OAAO,KAAI,KAAW,SAGxB,sCAOL,cAAkB,CAAE,KACpB,MAAO,QAAO,OAAO,GAAI,UAAW,WCR/B,sBAAsB,KAC3B,MAAQ,KAAI,SAAc,OAAO,MAAQ,IAAI,SAAc,OAAO,SAC7D,mBAAmB,IAAI,mBAGvB,8DAQL,cAAkB,CAAE,OAAQ,mBAC5B,MAAO,QAAO,OAAO,GAAI,UAAW,WCjBtC,4BAA2B,8BAEzB,8DAEE,YAAgB,AAAG,SAAS,eAAe,EAAI,EAAI,aAAc,CAAC,EAAG,EAAG,YAAa,qBAC5D,AAAG,SAAS,eAAe,gCAC1B,AAAG,SAAS,eAAe,8BAC7B,AAAG,SAAS,eAAe,kCACvB,AAAG,SAAS,eAAe,cAEvD,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,iCAChB,CAAE,UAAW,GAAG,kCAChB,CAAE,UAAW,GAAG,gCAChB,CAAE,UAAW,GAAG,qCAGX,CACL,QACA,iBACA,kBACA,gBACA,qBAIJ,2FAQE,YAAgB,AAAG,SACjB,eAAe,WAAa,YAAc,WAAa,YACvD,CAAC,WAAY,WAAY,WAAY,mBAE1B,AAAG,SAAS,eAAe,cAExC,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,gBAAgB,gBAAkB,oBAAsB,WAGnE,CAAE,QAAS,MAGpB,oFAOE,IACE,QACA,MACE,kBAAkB,WAAY,YAAa,WAAY,aAAc,IAEzE,MAAO,CACL,QACA,kBAAmB,MAIvB,oEAME,mBAAuB,2BAA2B,WAAY,GAAG,8CAC1C,2BAA2B,WAAY,YAAa,EAAG,GAAG,+BAEjF,MAAO,CAAE,eAAgB,gBAG3B,oCAEE,WAAe,2BAA2B,EAAG,GAAI,EAAG,6BAErC,sBAAsB,GAAI,GAAI,6BAC9B,sBAAsB,GAAI,IAAK,6BAC/B,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,8BAC/B,sBAAsB,IAAK,IAAK,+BAChC,sBAAsB,IAAK,IAAK,+BAChC,sBAAsB,IAAK,KAAM,+BACjC,sBAAsB,KAAM,KAAM,uBAElD,MAAO,CACL,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,SAIJ,wCACE,WAAe,2BAA2B,KAAM,IAAK,EAAG,kCACzC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,GAAI,EAAG,kCACvC,2BAA2B,GAAI,IAAK,EAAG,oDAErB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,EAAG,EAAG,6EACtB,kBAAkB,KAAM,GAAI,EAAG,6EACtC,kBAAkB,KAAM,GAAI,EAAG,6EACxB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,GAAI,EAAG,6EACvB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,GAAI,EAAG,6EACvB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,GAAI,EAAG,6EACvB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,GAAI,EAAG,oEAEhC,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mBAGnB,MAAO,CACL,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBAIJ,MAAO,CACL,yBACA,8BAKG,kCAEL,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,UAGxB,yBACA,8BACE,mBAAkB,eAAgB,2BAElB,4CACK,yCACP,AAAG,SACnB,eAAe,KAAO,GACtB,CAAC,EAAG,KAAM,iBAES,CACnB,WAKF,GAFA,cAAc,KAAK,CAAE,UAAW,2BAE5B,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,OAAQ,CACN,YACA,iBACA,cAEF,eC/NJ,4BAA2B,yBAEzB,uBAA2B,0BAA0B,UAAW,eAEhE,6DAEE,YAAgB,mBAAgC,GAAG,iBAAiB,wBAAyB,EAAG,GAAG,0CACzE,mBAAgC,GAAG,iBAAiB,sCAAuC,EAAG,GAAG,kCAE3H,MAAO,CAAE,QAAS,mBAGpB,oCAEE,iBAAqB,oBAAoB,0BACb,sBAAsB,0CAChB,GAAG,wDACH,GAAG,sCAErB,mBAAgC,GAAG,wCAAyC,EAAG,GAAG,sDACzE,mBAAgC,GAAG,sCAAuC,EAAG,GAAG,gEAC/E,mBAAgC,GAAG,qCAAsC,EAAG,GAAG,+DACjF,mBAAgC,GAAG,4CAA6C,EAAG,GAAG,iEAClF,mBAAgC,GAAG,gDAAiD,EAAG,GAAG,iDAEtH,MAAO,CACL,eAAgB,CACd,QACA,iBACA,kBACA,gBACA,qBAEF,eAAgB,2BAA2B,cAAe,IAAK,4BAInE,oCACE,MAAO,CACL,OAAQ,2BAA2B,cAAe,EAAG,sBACrD,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,QAAS,sBAAsB,IAC/B,QAAS,sBAAsB,IAC/B,QAAS,sBAAsB,IAC/B,QAAS,sBAAsB,KAInC,gDACE,YAAgB,mBAAgC,GAAG,iBAAkB,EAAG,GAAG,6BAC9D,mBAAgC,GAAG,gBAAiB,EAAG,GAAG,qBAEvE,MAAO,CAAE,QAAS,MAGpB,wCAEE,2BAA+B,kBAC7B,2BAA2B,2BAC3B,kCAAkC,8CAEZ,kBACtB,2BAA2B,qBAC3B,kCAAkC,uBAGpC,MAAO,CAAE,uBAAwB,iBAGnC,wCACE,MAAO,CACL,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,IAI/C,MAAO,CACL,yBACA,8BAIG,iDAIL,kBAAsC,IAGpC,yBACA,8BACE,mBAAkB,UAAW,yBAEf,UAAU,oBAG5B,GAFA,cAAc,KAAK,CAAE,aAAc,mBAAoB,UAAW,2BAE9D,CAAC,WAAW,WACd,KAAM,IAAI,OAAM,yEAAyE,aAG3F,WAAe,CACb,YAAa,2BACb,iBAAkB,+BAClB,aAAc,CACZ,YAIJ,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eCpIZ,4BACL,kBAIA,MAAO,AAAG,MAAK,KAEb,QAAU,AAAG,OAAO,EAAG,OAAO,QAAS,QAAS,QAChD,WAAM,AAAG,KAAI,IAAK,OAAO,mBAClB,AAAG,YAAY,IAAK,EAAG,KCRlC,IAAM,SAAU,qBAEhB,8CAKE,MAAO,AAAG,MAAK,KAEb,QAAU,AAAG,gBAAgB,EAAG,OAAO,QAAS,QAAS,QACzD,WAAM,AAAG,UACP,IACA,OAAO,gBACP,OAAO,oBACP,OAAO,kBACP,OAAO,iBACP,UAEK,AAAG,YAAY,IAAK,EAAG,KAKlC,yCACE,MAAO,CAAC,EAAG,EAAG,EAAG,IAAI,KAAK,KAAO,MAAQ,UAAY,CAAC,EAAG,GAAK,CAAC,EAAG,GAG7D,+BACL,MAAO,AAAG,MAAK,KAEb,eACU,mBAAmB,EAAG,OAAO,OAAQ,CAAC,EAAG,mBAE5B,CACrB,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,QACP,OAAO,QACP,OAAO,QACP,OAAO,SAaT,GAVA,eAAe,QAAQ,YACrB,aAAiB,EAAI,uBACQ,sBAAsB,UACnD,IAAM,mBAAmB,IAAK,MAAM,eAAgB,sBACpD,IAAM,mBAAmB,IAAK,MAAM,eAAgB,CAAC,EAAG,IACxD,AAAI,WAAa,IACf,QAAS,OAIT,SAAW,KACb,KAAM,IAAI,OAAM,iDAGlB,MAAO,CACL,IACA,UCpEC,4BACL,wDAOA,aAAiB,MAAM,MAAM,cACV,KAAK,IACtB,cACA,qBAGiB,OAChB,IAAI,kBAAsB,EAAE,MAAO,YACnC,OAAO,GAAK,EAAE,MAAQ,gBACtB,KAAK,SAAY,GAAG,MAAQ,GAAG,oBAEb,GAAe,GAAK,aAAe,EAAI,WAEjC,GAE3B,kBAAW,QAAQ,IACjB,GAAI,SAAS,QAAU,WACrB,OAEF,kBAAsB,EAAE,MAExB,UAAa,SAAS,OAAS,EAAG,GAAK,EAAG,EAAE,GAC1C,SAAY,IAAI,MAAO,EAAE,SAAU,SAAS,IAC5C,GAAI,OAAQ,EACV,SAGF,GADA,EAAE,OAAS,aAAa,MACpB,EAAE,OAAS,eACb,MAIJ,AAAI,gBAAkB,EAAE,OACtB,SAAS,KAAK,EAAE,YAIb,SAGT,wBACE,cAAkB,MAAM,kBACV,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACtC,OAAQ,OAAU,OAAQ,aAC1B,OAAQ,OAAU,OAAQ,OACzC,GAAI,OAAS,GAAK,OAAS,EACzB,MAAO,GAET,qBAAyB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAErC,KAAK,IAAI,iBAAmB,iBAAkB,GAC9C,KAAK,IAAI,iBAAmB,iBAAkB,GAClD,MAAO,kBAAoB,OAAQ,MAAQ,kBCnE7C,2CAA2C,GACzC,QAAY,AAAG,QAAQ,AAAG,UAAU,EAAG,CAAC,EAAG,WAE7B,CACZ,AAAG,IAAI,IAAI,GAAI,IAAI,IACnB,AAAG,IAAI,IAAI,GAAI,IAAI,aAGL,CACd,AAAG,KAAI,IAAI,GAAI,AAAG,IAAI,MAAM,GAAI,AAAG,OAAO,KAC1C,AAAG,KAAI,IAAI,GAAI,AAAG,IAAI,MAAM,GAAI,AAAG,OAAO,MAG5C,MAAO,CACL,MACA,SAIJ,iCACE,IACE,MACA,SACE,kCAAkC,QAE1B,AAAG,QAAQ,AAAG,UAAU,GAAI,CAAC,EAAG,cAE3B,AAAG,IAAI,AAAG,IAAI,AAAG,IAAI,AAAG,IAAI,IAAI,GAAI,AAAG,OAAO,KAAM,MAAM,IAAK,AAAG,OAAO,aACzE,AAAG,KAAI,AAAG,IAAI,AAAG,IAAI,IAAI,GAAI,AAAG,OAAO,KAAM,MAAM,IAAK,QAAQ,aAEhE,AAAG,IAAI,AAAG,IAAI,AAAG,IAAI,AAAG,IAAI,IAAI,GAAI,AAAG,OAAO,KAAM,MAAM,IAAK,AAAG,OAAO,aACzE,AAAG,KAAI,AAAG,IAAI,AAAG,IAAI,IAAI,GAAI,AAAG,OAAO,KAAM,MAAM,IAAK,QAAQ,IAEjF,MAAO,AAAG,WACR,AAAG,MAAM,CACP,AAAG,IAAI,SAAU,UACjB,AAAG,IAAI,SAAU,UACjB,AAAG,KAAI,SAAU,UACjB,AAAG,KAAI,SAAU,YAEnB,CAAC,EAAG,IAID,6DAKL,MAAO,AAAG,MAAK,KAEb,cAAkB,eAAe,MAAM,SAE3B,iBACV,AAAG,QAAQ,AAAG,KAAK,OAAO,UAAW,CAAC,UAAW,EAAG,IAAK,CAAC,GAAI,IAC9D,AAAG,QAAQ,eAAgB,CAAC,GAAI,KAElC,MAAQ,AAAG,QACT,MACA,CAAC,UAAY,MAAM,MAAM,GAAK,UAAY,IAG5C,qBAAyB,AAAG,QAAQ,AAAG,MAAM,iBAAkB,CAAC,EAAG,EAAG,GAAI,CAAC,GAAI,GAAI,aACtE,AAAG,MAAM,iBAAkB,CAAC,EAAG,EAAG,GAAI,CAAC,GAAI,GAAI,IAE5D,OAAS,AAAG,QACV,OACA,CAAC,UAAW,OAAO,MAAM,KAG3B,iBAAqB,AAAG,QAAQ,qBACV,AAAG,QAAQ,QAEjC,MAAO,CACL,MAAO,aACP,OAAQ,iBC1EP,4BACL,UAGA,MAAO,AAAG,MAAK,KAEb,cAAkB,EAAE,MAAM,yBAEI,AAAG,QAC/B,UAAU,EAAG,OAAO,wBACpB,CAAC,UAAW,GAAI,EAAG,oBAEG,AAAG,QACzB,UAAU,EAAG,OAAO,iBACpB,CAAC,UAAW,GAAI,IAGlB,MAAO,CACL,sBACA,mBCnBC,yBACL,iBAIA,MAAO,AAAG,MAAK,KAEb,UAAc,mBAAmB,EAAG,OAAO,OAAQ,CAAC,EAAG,UACzC,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,WAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,OAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,mBAEpC,mBAAmB,OAAQ,OAAO,gCAClC,mBAAmB,EAAG,OAAO,gCAC7B,mBAAmB,MAAO,OAAO,gCACjC,mBAAmB,MAAO,OAAO,gCACjC,mBAAmB,MAAO,OAAO,gCACjC,mBAAmB,MAAO,OAAO,gCAEjC,AAAG,OAAO,CAC/B,eAAe,sBACf,eAAe,sBACf,eAAe,sBACf,eAAe,sBACf,eAAe,sBACf,eAAe,uBACd,oBAEsB,AAAG,OAAO,CACjC,eAAe,gBACf,eAAe,gBACf,eAAe,gBACf,eAAe,gBACf,eAAe,gBACf,eAAe,iBACd,GAEH,MAAO,CACL,eACA,oBCjDN,IAAA,4BAWE,aAAc,cAAe,YAAuC,IAL1D,WAAgB,wBASxB,GAHA,KAAK,eAAiB,eAAiB,GACvC,KAAK,YAAc,YAAc,IAE7B,MAAO,MAAK,gBAAmB,UAAY,KAAK,gBAAkB,GAAK,KAAK,gBAAkB,EAChG,KAAM,IAAI,OAAM,GAAG,KAAK,iEAG1B,GAAI,MAAO,MAAK,aAAgB,SAC9B,KAAM,IAAI,OAAM,GAAG,KAAK,iDAIxB,iBAA0B,MAAO,MAAK,kBACtC,cAAuB,MAAO,MAAK,cCzBzC,4BAgBoC,eAElC,cACE,MAAM,kBAGD,qBAEL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,gDAGlB,MAAO,AAAG,MAAK,KAEb,gBAAoB,AAAG,KAAK,OAAM,cAAc,IAAK,IAAQ,aAEnD,AAAG,IAAI,AAAG,IAAI,YAAa,AAAG,OAAO,sBAAwB,AAAG,OAAO,aAChE,YAAY,EAAG,OAAO,cAGrC,eACA,kBACE,gBAAgB,SAAS,IAAK,SAAS,OAAQ,OAAO,kBAE1D,MAAO,aAAY,eAAgB,iBAAkB,OAAO,qBAInD,iBACX,MAAO,MAAK,aAAa,KAAM,YAAW,cAG/B,4BAEuB,IAGlC,IAAQ,WAAY,eAAkB,GAAI,uBAAsB,kBAE/C,KAAM,YAAW,SAGhC,aACA,gBACE,KAAK,aAAa,gBAIR,OAAO,UACN,QAAQ,GACvB,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,OAAO,GAAG,UACV,QAAQ,GAAG,UAIb,eAAmB,MAAM,KAAK,KAAM,QAAO,qBAEtB,WACL,mBACd,MACA,WACA,WACA,aACA,4BAGmB,SAAS,2BAA2B,aACvC,SAAS,eACd,UAAY,aAAa,WACzB,UAAY,aAAa,iBAEpB,MAAM,oBACR,QACb,IAAI,MACH,gBAAsB,CACpB,KAAK,IAAI,EAAG,UAAU,KAAK,IAC3B,KAAK,IAAI,EAAK,UAAU,KAAK,KAC7B,IAAI,KAAO,IAAM,mBACG,CACpB,KAAK,IAAI,EAAG,UAAU,KAAK,IAC3B,KAAK,IAAI,EAAK,UAAU,KAAK,KAC7B,IAAI,KAAO,IAAM,MACnB,MAAO,IAAI,eACT,WAAW,KACX,GAAI,MACF,KACA,IACA,MAAQ,KACR,OAAS,KAEX,CACE,OAAQ,SAAS,eAAe,GAChC,MAAO,SAAS,cAAc,OAKtC,aAAM,UACN,OAAO,UAEA,QAGC,sBACR,MAAO,wBAGC,sCACR,MAAO,8BAA2B,WAG1B,uBACR,MAAO,iBAAc,WC9HlB,8BAA8B,SACnC,QAAY,GAAI,gBAChB,WAAI,eAAe,SACZ,IAGF,yCACL,MAAO,sBAAqB,SAZ9B,kCAgBsC,kBCdzB,cAAgB,eAEF,CACzB,GAAI,OAAM,QAAU,SACpB,GAAI,OAAM,QAAS,SACnB,GAAI,OAAM,QAAS,SACnB,GAAI,OAAM,OAAQ,SAClB,GAAI,OAAM,QAAS,gCAGgB,CACnC,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,8BAGsC,CAAC,QAAS,QAAS,4BAE7C,sDACe,mCCV3C,UAAW,KAAc,MAAO,MAAQ,SAEvC,iCACL,GAAI,CAAC,QACH,KAAM,IAAI,OAAM,mBAAmB,WAGrC,GAAI,MAAO,SAAO,oBAAuB,UACvC,KAAM,IAAI,OAAM,wDAAwD,QAAO,sBAGjF,GAAI,CAAC,UAAS,QAAO,eAAiB,QAAO,aAAe,GAAK,QAAO,aAAe,EACrF,KAAM,IAAI,OAAM,gEAAgE,QAAO,gBAGzF,GACE,CAAC,MAAM,QAAQ,QAAO,UACnB,CAAC,QAAO,QAAQ,QAChB,CAAC,QAAO,QAAQ,MAAM,GAAY,MAAO,IAAM,UAGlD,KAAM,IAAI,OAAM,kEAAkE,KAAK,UAAU,QAAO,YAG1G,GACE,CAAC,MAAM,QAAQ,QAAO,UACnB,CAAC,QAAO,QAAQ,QAChB,CAAC,QAAO,QAAQ,IAAI,GAAY,GAAK,IAAI,MAAM,GAAY,UAAS,EAAE,IAAM,UAAS,EAAE,IAG1F,KAAM,IAAI,OAAM,wEAAwE,KAAK,UAAU,QAAO,YAGhH,GAAI,QAAO,SACT,EAAC,MAAM,QAAQ,QAAO,UACnB,QAAO,QAAQ,SAAW,GAC1B,CAAC,QAAO,QAAQ,MAAM,YAGzB,KAAM,IAAI,OAAM,8EAA8E,KAAK,UAAU,QAAO,YClDjH,eAAe,GACpB,MAAO,AAAG,MAAK,KACb,SAAY,AAAG,IAAI,EAAG,AAAG,OAAO,qBAChC,MAAO,AAAG,MAAI,AAAG,KAAK,AAAG,IAAI,EAAG,OAAO,QCApC,2BAA2B,UAChC,MAAO,AAAG,MAAK,KACb,QAAU,AAAG,IAAI,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAEjD,WAAM,AAAG,OAAO,IAAK,OAAO,KAAK,QAAS,CAAC,EAAG,GAAI,SAClD,IAAM,AAAG,IAAI,IAAK,OAAO,GAAG,KAC5B,IAAM,AAAG,IAAI,IAAK,OAAO,GAAG,SAC5B,IAAM,AAAG,KAAI,IAAK,OAAO,KAAK,MAEvB,MAAM,OCTV,iCAAgC,UACrC,MAAO,AAAG,MAAK,KACb,QAAU,AAAG,IAAI,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAEjD,WAAM,AAAG,gBAAgB,IAAK,OAAO,iBAAkB,OAAO,iBAAkB,CAAC,EAAG,GAAI,SACxF,IAAM,AAAG,KAAI,IAAK,OAAO,MAElB,MAAM,OCHjB,4BAA2B,8BAEzB,sBAA0B,yBAAyB,eAAgB,eAEnE,mDAEE,SAAY,AAAG,SAAS,eAAe,eACvB,AAAG,SAAS,eAAe,OAE3C,qBAAc,KACZ,CAAE,UAAW,GAAG,oBAChB,CAAE,UAAW,GAAG,yBAGX,CAAE,SAAK,SAGhB,6EAEE,UAAa,kBAAkB,WAAY,YAAa,EAAG,GAAG,wBACnD,uBAAuB,YAAa,GAAG,mBAElD,MAAO,CAAE,WAAM,IAEjB,+BAAmC,kCAAkC,eAAgB,eAErF,MAAO,CACL,kBACA,+BACA,4BAKG,sEAOL,IACE,eACA,qBACE,sBAAsB,uBAEY,IAGpC,kBACA,+BACA,4BACE,mBAAkB,eAAgB,sBAItC,GAAI,QAAO,oBACT,gCAA6C,kBAE/B,QAAO,mBACjB,kBAAkB,GAAI,GAAI,EAAG,SAC7B,2BAA2B,GAAI,GAAI,eACzB,2BAA2B,GAAI,GAAI,gBACnC,2BAA2B,GAAI,GAAI,eACnC,2BAA2B,GAAI,GAAI,eACnC,2BAA2B,GAAI,GAAI,eACnC,2BAA2B,GAAI,GAAI,eACnC,GAAK,2BAA2B,GAAI,GAAI,SAAW,aACnD,GAAK,2BAA2B,GAAI,GAAI,SAAW,aACnD,kBAAkB,IAAM,IAAM,GAAI,EAAI,gBAAiB,EAAG,SACxE,OAAS,CAAE,MAAO,MAAO,aAAO,MAAO,MAAO,MAAO,MAAO,MAAO,YAEnE,gCAA6C,kBAC/B,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,gBACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,kBAAkB,GAAI,EAAI,gBAAiB,EAAG,SAC5D,OAAS,CAAE,MAAO,MAAO,aAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAGrE,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAI1E,MAAO,CAAE,OAAQ,eCzFnB,6BAA2B,yBAEzB,uBAA2B,0BAA0B,UAAW,eAEhE,wCACE,SAAY,mBAAgC,GAAG,aAAc,WAC7C,mBAAgC,GAAG,iBAAkB,GACrE,MAAO,CAAE,SAAK,SAGhB,mCACE,YAAgB,mBAAgC,GAAG,iBAAkB,QACxD,mBAAgC,GAAG,cAAe,GAC/D,MAAO,CAAE,QAAS,MAGpB,gDACE,UAAa,kBAAkB,GAAG,kBACvB,uBAAuB,GAAG,aACrC,MAAO,CAAE,WAAM,IAGjB,+BAAmC,+BAA+B,oBAElE,MAAO,CACL,kBACA,+BACA,4BAKG,yDAKL,kBAAsC,IAGpC,kBACA,+BACA,4BACE,oBAAkB,UAAW,sBAIjC,GAAI,QAAO,oBACT,eAAoB,QAAO,aAAe,QAAO,YAAY,QAAU,EACvE,OAAS,CACP,MAAO,QAAO,mBAAqB,kBAAkB,SAAW,2BAA2B,SAC3F,MAAO,2BAA2B,SAClC,MAAO,2BAA2B,SAClC,MAAO,2BAA2B,SAClC,MAAO,2BAA2B,SAClC,MAAO,2BAA2B,SAClC,MAAO,WAAa,EAAI,2BAA2B,SAAW,OAC9D,MAAO,WAAa,EAAI,2BAA2B,SAAW,OAC9D,MAAO,kBAAkB,cAG3B,QAAS,CACP,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,kBAAkB,UAI7B,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eCtFZ,IAAK,mBAAL,+BACL,2CAAK,KAAL,KACA,2CAAK,KAAL,KACA,2CAAK,KAAL,KACA,2CAAK,KAAL,OAJU,6CAAZ,4BAkBE,aAAc,UAAW,gBAAuC,IALtD,WAAgB,oBASxB,GAHA,KAAK,WAAa,WAAa,IAC/B,KAAK,gBAAkB,gBAAkB,GAErC,MAAO,MAAK,YAAe,UAAY,KAAK,WAAa,KAAO,EAClE,KAAM,IAAI,OAAM,GAAG,KAAK,6DAG1B,GAAI,MAAO,MAAK,iBAAoB,UAAY,KAAK,iBAAmB,GAAK,KAAK,iBAAmB,EACnG,KAAM,IAAI,OAAM,GAAG,KAAK,qEAIxB,aAAsB,MAAO,MAAK,cAClC,kBAA2B,MAAO,MAAK,kBChC7C,6BAuBoC,eAQlC,qBACE,MAAM,cACN,eAAe,SACf,KAAK,QAAU,WAGN,UACT,MAAO,MAAK,WAGH,mBACT,MAAO,MAAK,OAAO,iBAAmB,KAAK,OAAO,QAAQ,OAAS,KAG1D,mBACT,MAAO,GAAK,MAAK,gBAAkB,KAAK,OAAO,QAAQ,OAAS,GAG3D,wBAEL,QAAU,kBAAkB,EAAG,OAAO,OACtC,WAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,kBAAkB,IAAK,OAAO,OAE7B,UAAU,IAAK,OAAO,MAAO,QAAS,IAGxC,uBAEL,QAAU,KAAK,OAAO,mBAClB,MAAM,UAAU,EAAG,OAAO,MAAqB,QAAS,KACxD,wBAAuB,EAAG,OAAO,OACrC,WAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,QAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,OAAO,MAAQ,wBAAuB,IAAK,OAAO,OAAS,IACjE,IAAM,OAAO,MAAQ,wBAAuB,IAAK,OAAO,OAAS,IAE1D,UAAU,IAAK,OAAO,MAAO,QAAS,IAGxC,+BAEL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,4CAGlB,MAAO,AAAG,MAAK,KAGb,gBAAkB,AAAG,KAAK,OAAM,cAAc,UAAW,IAAQ,WACjE,mBAAc,KAAK,OAAO,QACtB,UAAU,YAAa,KAAK,OAAO,SACnC,YACJ,YAAc,YAAY,IAAI,AAAG,OAAO,MAEjC,KAAK,OAAO,mBACf,KAAK,aAAa,YAAa,QAC/B,KAAK,cAAc,YAAa,eAI3B,2BACX,MAAO,MAAM,MAAK,aAAa,KAAM,YAAW,QAAQ,gBAG7C,6BAA6D,IAExE,IAAQ,UAAW,gBAAmB,GAAI,mBAAkB,wBAE3C,KAAM,YAAW,YACtB,KAAM,MAAK,aAAa,SAAU,gBACjC,AAAG,KAAK,IAAM,AAAG,QAAQ,KAAK,GAAG,8BAEtB,CACtB,MAAO,SAAS,cAAc,GAC9B,OAAQ,SAAS,eAAe,YAGlB,KAAM,MAAK,aAAa,KAAM,SAAS,2BAA2B,GAAI,gBACtF,IAAI,UACJ,KAAK,UAEL,UAAc,QAAQ,IAAI,KAAO,IAAI,YACtB,QAAQ,IAAI,KAAO,IAAI,mBAClB,QAAQ,IAAI,KAAO,IAAI,uBACxB,QAAQ,IAAI,KAAO,KAAK,OAAO,QAAQ,IAAI,gBAE9C,mBACd,MAAM,IAAI,KAAO,IAAI,QAAQ,YAC7B,OACA,KAAK,OAAO,aACZ,eAGiB,QAAQ,IAAI,KAC7B,GAAI,iBACF,OAAO,KACP,YAAY,KACZ,WAAW,KACX,MAAM,KACN,kBAIJ,MAAO,YAGC,sBACR,MAAO,GAGC,sCACR,MAAO,8BAA2B,UAAW,KAAK,QAG1C,uBACR,gBAAoB,KAAK,OAAO,aAAe,gBAAe,gCAE3C,YAAc,YAAY,OAAS,OACtD,GAAI,aAAe,GAAK,aAAe,GAAK,aAAe,EACzD,KAAM,IAAI,OAAM,oEAAoE,oCAEtF,MAAO,iBAAc,QAAS,KAAK,OAAQ,KAAK,gBAAiB,kBAGnD,+DAMd,IAAQ,MAAO,QAAW,8BACR,KAAK,IAAI,MAAO,0BACR,UAAY,wBACZ,UAAY,gBAErB,aAAa,MAAM,YACnB,KAAK,OAAO,QAAQ,oDAEkB,AAAG,KAAK,KAC7D,aAAiB,aAAa,QAAQ,CAAC,SAAU,SAAU,SAAU,KAAK,wBAE5D,SAAS,MAAM,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,SAAU,SAAU,SAAU,WAC3D,SAAS,MAAM,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,SAAU,SAAU,SAAU,gBACvD,KAAK,gBACrB,AAAG,QAAQ,SAAS,MAAM,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,SAAU,SAAU,SAAU,KAAK,OAAO,QAAQ,SAAU,GACrG,AAAG,OAAO,GACd,MAAO,CAAC,MAAO,OAAQ,uBAGT,cAEG,KAAM,cAAa,kBACpB,KAAM,aAAY,QACpC,YAAe,EAAG,IAAM,SAAU,MAChC,YAAe,EAAG,IAAM,SAAU,MAChC,eAAkB,EAAG,OAAS,SAAU,UAEtC,UAAc,SAAQ,WAAW,KAAK,KAAK,QAAQ,IACnD,GAAI,CAAC,gBAAkB,MAAQ,gBAC7B,QAAc,KAAM,SAAQ,UAAU,KAAK,KAAK,QAAQ,KAAO,SAAY,sBAC7D,KAAM,SAAQ,UAAU,KAAK,KAAK,QAAQ,KAAO,SAAY,yBAC3D,KAAK,IAAI,UAAU,KAAK,KAAK,QAAQ,IAAM,KAAK,OAAO,QAAQ,QAAQ,EAAK,SAAY,0BACvF,KAAK,IAAI,UAAU,KAAK,KAAK,QAAQ,IAAM,KAAK,OAAO,QAAQ,QAAQ,EAAK,SAAY,oBAE9F,IAAO,OAAQ,IACf,IAAO,QAAS,MAEf,CAAE,IAAK,IAAK,SAChB,WAAY,OAAU,KAAK,gBAC/B,KAAM,MAAK,sBAAsB,kBAAkC,KACnE,CAAE,WAAY,EAAG,MAAO,GAE5B,QAAQ,KAAK,CACX,IAAK,GAAI,aAAY,EAAG,EAAG,EAAI,OAAO,EAAI,SAC1C,MACA,WAAY,MAAQ,WACpB,SACG,OAOb,mBAAY,UACZ,aAAa,UACb,kBAAkB,UAEX,aAGK,0CACZ,IAAQ,IAAK,IAAK,QAAW,gBACT,KAAM,eAAc,QACxC,MAAO,OAAM,KAAK,OAAO,QAAQ,QAAQ,KAAK,GAC3C,IAAI,OAAU,YAAY,KAAK,KAAK,QAAQ,IAC5C,IAAI,oBAAwB,EAC3B,WACA,SAED,OAAO,aAAe,KAAI,WAAa,KAAK,WAAa,KAAM,uBA9PtE,gBAyBgB,AAzBhB,eAyBgB,qBAAuB,CACnC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,MC1BxC,IAAA,wBAiBgC,gBAE9B,+BAA0C,IACxC,YAAe,OAAO,OAAO,GAAI,CAC/B,mBACA,aAAc,cACd,QAAS,CAAC,SAEZ,mBACI,CACA,QAAS,sBACT,QAAS,oBAET,CACA,QAAS,YACT,gBAAiB,KAIrB,MAAM,YAGG,sBACT,MAAO,MAAK,OAAO,sBAGV,WACT,MAAO,MAAK,OAAO,aAGR,mCACX,qBAAyB,KAAM,MAAK,OAAO,OAAO,eAClD,MAAO,kBAAiB,IAAI,KAAO,GAAI,eAAc,IAAI,MAAO,IAAI,YAAa,CAAE,MAAO,IAAI,WAAY,OAAQ,IAAI,eAG9G,sBACR,MAAO,MAAK,mBAAqB,kCAAoC,oBAG7D,sCACR,MAAO,OAAM,2BAA2B,aChDrC,0BAA0B,2BAAqD,IACpF,QAAY,GAAI,YAAW,oBAC3B,WAAI,eAAe,SACZ,ICZT,IAAA,qCAI6C,mBAJ7C,kCAKY,WAAgB,4BCL5B,0BAEe,mBAGX,MAAO,aAAY,KAAM,MAAK,YAGnB,OACX,KAAM,IAAI,OAAM,6CCFpB,gDACE,uEAIwF,EAAG,eAAkB,aAE7G,cAAkB,cAAc,IAAI,cAClC,oBAAoB,cAChB,oBAAoB,cACpB,aAAa,iBAEmC,gBACpD,kBAAoB,QAChB,KAAM,oBAAmB,OAAO,WAChC,KAAM,cAAa,OAAO,oBAGhB,KAAM,gBAAe,OAErC,aAAM,QAAQ,GAAK,YAAgB,SAAU,EAAE,WAExC,QAGT,uHAOE,MAAO,kCACL,CAAC,cACD,OACA,aAAe,cAAc,MAAM,IACnC,eACA,qBC1CG,IAAM,eAAgB,gBAEF,CACzB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,oBAG4B,CAAC,QAAS,QAAS,QCZrE,8BAUsC,gBAEpC,cACE,YAAe,CACb,mBAAoB,GACpB,aAAc,eACd,QAAS,CAAC,QACV,QAAS,aACT,QAAS,SACT,mBAAoB,GACpB,YAAa,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,MAGzC,MAAM,YAGG,WACT,MAAO,MAAK,OAAO,aAGR,mCACX,qBAAyB,KAAM,MAAK,OAAO,OAAO,eAClD,MAAO,kBAAiB,IAAI,KAAO,GAAI,eAAc,IAAI,MAAO,IAAI,YAAa,CAAE,MAAO,IAAI,WAAY,OAAQ,IAAI,eAG9G,sBACR,MAAO,2BAGC,sCACR,MAAO,OAAM,2BAA2B,aCrB/B,KAAO,CAClB,eAAgB,GAAI,gBACpB,iBAAkB,GAAI,kBACtB,WAAY,GAAI,YAChB,kBAAmB,GAAI,mBACvB,sBAAuB,GAAI,uBAC3B,mBAAoB,GAAI,oBACxB,kBAAmB,GAAI,mBACvB,aAAc,GAAI,8BAUU,kBAC5B,KAAK,eAAe,YAAY,OAAO,0BAST,kBAC9B,KAAK,iBAAiB,YAAY,OAAO,qBASjB,kBACxB,KAAK,WAAW,YAAY,OAAO,6BASF,QACjC,KAAK,kBAAkB,gBAAgB,gCAWF,QACrC,KAAK,sBAAsB,gBAAgB,8BAYR,QACnC,KAAK,mBAAmB,sBAAsB,iCAUR,QACtC,KAAK,kBAAkB,mBAAmB,4BAST,QACjC,KAAK,aAAa,oBAAoB,gCAED,KAAiB,KAAK,eAAe,KAAK,+BACxC,KAAiB,KAAK,iBAAiB,KAAK,yBAClD,KAAiB,KAAK,WAAW,KAAK,2BACpC,KAAiB,KAAK,kBAAkB,KAAK,+BACzC,KAAiB,KAAK,sBAAsB,KAAK,8BAClD,KAAiB,KAAK,mBAAmB,KAAK,6BAC/C,KAAiB,KAAK,kBAAkB,KAAK,wBAClD,KAAiB,KAAK,aAAa,KAAK,4BAGpC,oCACX,+BACI,oBChI/B,4CAkB4E,gBAC1E,8CAKE,QAJU,2BACA,kBACA,mEAtBd,aA8BU,qCAEK,OAEX,kBAAsB,KAAM,MAAK,iCAEH,KAAM,kCAClC,cACA,KAAK,MACL,aAAe,KAAM,SAAQ,IAAI,MAAM,IACrC,MAAQ,KAAK,kBAAkB,mBAAmB,QAEpD,KAAK,gBAGP,MAAO,eAAc,IACnB,kBAAqB,0BAAmC,aAAc,sBAAsB,KAIhG,mBACE,MAAO,IAAI,4BAA2B,KAAM,KAAK,0CAnDrD,aAyDW,qCAEI,OAEX,iBAAqB,KAAM,MAAK,WAChC,GAAI,CAAC,aACH,OAGF,oBAAwB,KAAM,mCAC5B,aACA,KAAK,MACL,MAAQ,KAAK,kBAAkB,mBAAmB,MAClD,KAAK,gBAGP,MAAO,2BAA0B,aAAc,iBAGjD,mBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,wDA7ExD,aAmFU,+BAER,mBACE,MAAO,IAAI,6CAA4C,KAAM,KAAK,OAGpE,sBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,2DA1FxD,aAgGU,kCAER,mBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,qBACE,MAAO,IAAI,iCAAgC,KAAM,KAAK,SCvG1D,yCAmByE,gBACvE,8CAKE,QAJU,2BACA,kBACA,gEAvBd,aA+BU,kCAEK,OAEX,kBAAsB,KAAM,MAAK,8BAEN,KAAM,kCAC/B,cACA,KAAK,MACL,aAAe,KAAM,SAAQ,IAAI,MAAM,IACrC,MAAQ,KAAK,aAAa,oBAAoB,QAEhD,KAAK,gBAGP,MAAO,eAAc,IAAI,mBACvB,IAAQ,IAAK,OAAQ,mBAAsB,mBAAmB,GAC9D,MAAO,eAAc,iBAAiB,aAAc,OAAQ,mBAAoB,OAIpF,sBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,uCArDxD,aA2DW,kCAEI,OAEX,iBAAqB,KAAM,MAAK,WAChC,GAAI,CAAC,aACH,OAGF,IAAQ,IAAK,OAAQ,mBAAsB,KAAM,mCAC/C,aACA,KAAK,MACL,MAAQ,KAAK,aAAa,oBAAoB,MAC9C,KAAK,gBAGP,MAAO,eAAc,iBAAiB,aAAc,OAAQ,mBAAoB,KAGlF,sBACE,MAAO,IAAI,kCAAiC,KAAM,KAAK,qDA/E3D,aAqFU,4BAER,sBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,sBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,wDA5FxD,aAkGU,+BAER,sBACE,MAAO,IAAI,mDAAkD,KAAM,KAAK,OAG1E,qBACE,MAAO,IAAI,iCAAgC,KAAM,KAAK,SCzG1D,4CAgB4E,gBAC1E,+BAIE,QAHU,2BACA,kDAnBd,aA2BU,qCAEK,OAEX,kBAAsB,KAAM,MAAK,uBAEb,KAAM,kCACxB,cACA,KAAK,MACL,OAAS,QAAQ,IAAI,MAAM,IAAI,MAC7B,KAAK,mBAAmB,sBAAsB,QAEhD,KACA,cAAgB,aAAa,UAAU,MAAM,KAAM,CAAE,iBAAkB,MAGzE,MAAO,aAAY,IAAI,gBAAmB,yBAAkC,cAAc,GAAI,aAGhG,sBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,mBACE,MAAO,IAAI,6CAA4C,KAAM,KAAK,yCAnDtE,aAyDU,qCAEK,OAEX,iBAAqB,KAAM,MAAK,WAChC,GAAI,CAAC,aACH,OAEF,eAAmB,KAAM,mCACvB,aACA,KAAK,MACL,MAAQ,KAAK,mBAAmB,sBAAsB,MACtD,KACA,eAAgB,cAAa,UAAU,MAAM,KAAM,CAAE,iBAAkB,MAGzE,MAAO,0BAAyB,aAAc,YAGhD,sBACE,MAAO,IAAI,mDAAkD,KAAM,KAAK,OAG1E,mBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,SCjFzE,yCAoByE,gBACvE,kDAKE,QAJU,2BACA,kBACA,8CAKE,eACZ,MAAO,MAAK,mBACR,KAAK,sBACL,KAAK,+CAhCb,aAsCU,kCAEK,OAEX,kBAAsB,KAAM,MAAK,sBACd,cAAc,IAAI,KAAO,IAAI,iBAEM,KAAK,gBAAoB,QAC3E,KAAM,oBAAmB,KAAK,MAAO,YACrC,KAAM,cAAa,KAAK,MAAO,gCAEP,KAAM,SAAQ,IAAI,MAAM,IAClD,MAAQ,KAAK,YAAY,gBAAgB,QAG3C,aAAM,QAAQ,GAAK,YAAgB,SAAU,EAAE,WAExC,cAAc,IAAI,kBACvB,wBAAiC,aAAc,oBAAoB,KAIvE,sBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,mBACE,MAAO,IAAI,6CAA4C,KAAM,KAAK,OAGpE,sBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,uCArExD,aA2EW,kCAEI,OAEX,iBAAqB,KAAM,MAAK,WAChC,GAAI,CAAC,aACH,OAGF,IAAQ,WAAc,mBACgC,KAAK,gBAAoB,QAC3E,KAAM,oBAAmB,KAAK,MAAO,CAAC,YACtC,KAAM,cAAa,KAAK,MAAO,CAAC,sBAElB,KAAM,MAAK,YAAY,gBAAgB,MAAM,IAE/D,aAAM,QAAQ,GAAK,YAAgB,SAAU,EAAE,WAExC,wBAAiC,aAAc,WAGxD,sBACE,MAAO,IAAI,mDAAkD,KAAM,KAAK,OAG1E,mBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,qBACE,MAAO,IAAI,iCAAgC,KAAM,KAAK,SCzG1D,iCAakD,gBAChD,2BAE4C,GAAI,wBAE9C,QAHU,kBACA,0CAhBd,aAsBwC,0BAEzB,OAEX,IAAQ,aAAO,SAAY,2BAEG,kBAAmB,yBAC7C,QAAsB,KAAK,iBAAiB,YAAY,OAAO,SAE/D,kBAAmB,uBACf,QAAsB,KAAK,eAAe,YAAY,OAAO,SAE7D,kBAAmB,mBACf,QAAsB,KAAK,WAAW,YAAY,OAAO,SACzD,KAIZ,GAAI,CAAC,sBACH,KAAM,IAAI,OAAM,uIAGlB,MAAO,uBAAsB,QAGvB,iCACN,MAAO,IAAI,SAAiC,YAC1C,eAAmB,KAAM,MAAK,MAC9B,MAAO,KAAI,WAAW,IAAI,WAAa,wBAAwB,GAAI,eAIvE,qCAAgD,IAC9C,MAAO,IAAI,4BACT,KAAK,iCACL,KAAK,MACL,oBAIJ,sBACE,MAAO,IAAI,+BACT,KAAK,iCACL,KAAK,OAIT,mBACE,MAAO,IAAI,4BACT,KAAK,iCACL,KAAK,8BAxEX,aA6E0C,0BAE3B,OACX,mBAAuB,KAAM,IAAI,oBAAmB,KAAK,MAAO,KAAK,uCACjC,eAAe,GACnD,sBAAe,QAAQ,gBACrB,AAAI,cAAc,MAAQ,8BAA8B,OACtD,+BAAgC,iBAG7B,8BAGD,gCACN,MAAO,IAAI,SAA2C,YACpD,cAAkB,KAAM,MAAK,MAC7B,MAAO,KAAI,UAAY,wBAA4B,GAAI,WAAa,UAIxE,qCAAgD,IAC9C,MAAO,IAAI,+BACT,KAAK,gCACL,KAAK,MACL,oBAIJ,sBACE,MAAO,IAAI,kCACT,KAAK,gCACL,KAAK,OAIT,mBACE,MAAO,IAAI,+BACT,KAAK,gCACL,KAAK,SC9GJ,0BACL,eACgC,GAAI,wBAEpC,MAAO,IAAI,sBAAqB,OAAO,SAGlC,uCAE2B,GAAI,wBAEpC,MAAO,IAAI,oBAAmB,OAAO,SCRvC,sCACE,sBAGA,eAAQ,KAAK,iGACN,KAAM,gBAAe,OAAO,GAAI,uBAAsB,cAAgB,CAAE,eAAkB,KAC9F,oBACA,sBAGL,uDAEsC,IAEpC,eAAQ,KAAK,6FACN,KAAM,gBAAe,OAAO,GAAI,mBAAkB,gBACtD,oBACA,sBAGE,aAAiB,uBC5BjB,2BAA2B,WAChC,GAAI,KAAK,SAAW,KAAK,OACvB,KAAM,IAAI,OAAM,kDAElB,UAAc,MAAM,KAAK,YACX,MAAM,KAAK,MAEzB,MAAO,MAAK,KACV,MACG,IAAI,SAAY,IAAM,MAAM,IAC5B,OAAO,YAAe,IAAM,KAAK,IAAI,KAAM,GAAI,ICVtD,IAAA,kBAUE,qCAE8B,IAG5B,KAAK,mBAAqB,kBAE1B,eAAmB,MAAM,QAAQ,QAAU,OAAS,CAAC,QAErD,GAAI,CAAC,WAAW,OACd,KAAM,IAAI,OAAM,2DAGlB,WAAY,oBACc,IAAM,UAAU,WAE1C,KAAK,oBAAsB,WAAW,IAAI,OACxC,GAAI,eAAgB,wBAClB,MAAO,MAGT,GAAI,eAAgB,cAClB,MAAO,IAAI,wBAAuB,oBAAqB,CAAC,OAG1D,GAAI,KAAK,YAAc,KAAK,qBAAsB,cAChD,MAAO,IAAI,wBAAuB,oBAAqB,CAAC,KAAK,aAG/D,KAAM,IAAI,OAAM,4MAIT,sBAAiD,MAAO,MAAK,uBAC7D,qBAA8B,MAAO,MAAK,mBAE9C,iDACL,MAAO,aACJ,IAAI,GAAK,kBAAkB,EAAG,kBAC9B,OAAO,SAAY,GAAK,GAAI,GACxB,aAAY,QAAU,GAGxB,iCACL,MAAO,MAAK,mBACT,IAAI,EAAG,YAAa,SAAY,GAAI,WACjC,MACA,KAAK,oBAAoB,gBAAiB,eAE7C,OAAO,aAAgB,KAAK,SAAW,KAAK,SAAW,KAAO,MAG5D,+BACL,cAAkB,KAAK,gBAAgB,iBACvC,MAAO,WAAU,SAAW,KAAK,kBAC7B,UACA,GAAI,WAAU,UAAW,UAAU,UAGlC,SACL,MAAO,CACL,kBAAmB,KAAK,kBACxB,mBAAoB,KAAK,mBAAmB,IAAI,IAAQ,GAAG,iBAIjD,kBACZ,uBAA2B,OAAK,mBAC7B,IAAI,IAAa,uBAAuB,SAAS,KACpD,MAAO,IAAI,aAAY,mBAAoB,OAAK,qBC1E7C,gCAAgC,SACrC,QAAY,GAAI,kBAChB,WAAI,eAAe,SACZ,ICFF,uBAA0B,oBAE/B,IAAQ,MAAO,QAAW,GAAI,YAAW,WAAW,MAAO,WAAW,QAEtE,GAAI,OAAS,GAAK,QAAU,EAC1B,KAAM,IAAI,OAAM,uCAAuC,KAAK,UAAU,CAAE,MAAO,YAGjF,GAAI,MAAM,QAAQ,SAEhB,MAAQ,SAAuB,IAAI,KAAO,cAAc,IAAK,CAAE,MAAO,UAGxE,GAAI,oBAAoB,UACtB,qBAAyB,QAAQ,UAAU,QAAQ,MAAO,yBACjC,QAAQ,mBAAmB,QAAQ,iBAAiB,IAAI,MAAO,iBAAiB,IAAI,QAC7G,MAAO,yBAAwB,wBAAwB,QAAS,kBAAmB,kBAGrF,MAAI,qBAAoB,SACf,wBAAwB,QAAS,QAAQ,UAAU,QAAQ,MAAO,SAGvE,kBAAmB,gBAAiB,kBAAmB,eACjD,QAAgB,QAAQ,MAAO,QAGlC,6BCVH,KAAQ,MAAO,UAAY,oBAChB,MAAO,YAAc,aAAiB,MAAO,WAAU,WAAc,qBAC/D,CAAE,QAAa,SAAmB,KAAM", + "sources": ["../src/env/isNodejs.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/imageToSquare.ts", "../src/dom/NetInput.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/common/getModelUris.ts", "../src/dom/loadWeightMap.ts", "../src/dom/matchDimensions.ts", "../src/NeuralNetwork.ts", "../src/common/depthwiseSeparableConv.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/types.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/xception/TinyXception.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts", "../src/index.ts"], + "sourcesContent": ["export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n"], + "mappings": "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KAC7D,YAAc,SACd,cAAc,KAAK,UAGrB,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,gBAAoB,aAAK,kBAAkB,EAAoB,mBAC7C,SAAQ,eAAe,GAAI,QAAS,kBAElD,OAAM,CAAC,OAAQ,CAAC,EAAG,UAAW,EAAG,aAAc,QAAA,sBAE/C,OAAK,CAAC,OAAQ,CAAC,EAAG,MAAO,QAAA,SAAS,MAAO,CAAC,MAAO,mBAEjD,UAAS,CAAC,OAAQ,CAAC,EAAG,WAAY,EAAG,GAAI,QAAA,yBAEzC,MAAI,CAAC,OAAQ,CAAC,EAAG,OAAM,QAAA,SAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,IAAI,KAAK,eACT,cAAc,KAAK,WACnB,cAAc,KAAK,MACnB,cAAc,KAAK,YACnB,cAAc,KAAK,OACnB,cAAc,KAAK,eAGrB,WAAe,KAAK,CAAC,OAAQ,IAAK,QAAA,SAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,eAAc,QAAQ,GAAK,SAAQ,8BAA8B,IAE1D,OAGF,6BAA+C,CACpD,WAAY,mBACZ,YAAa,MACb,WAAY,mCC2FwB,CACpC,mBACA,UACA,WACA,YACA,UACA,WACA,UACA,UACA,aACA,aACA,WACA,YACA,WACA,YACA,YACA,cACA,gBACA,qBACA,mBACA,kBACA,gBACA,qBACA,eACA,WACA,WACA,WACA,cACA,iBACA,aACA,2BACA,0BACA,aACA,6BACA,4BACA,aACA,UACA,WACA,oBACA,aACA,oBACA,mBACA,4BACA,0CACA,yCACA,WACA,iBACA,8BACA,+BACA,cACA,UACA,eACA,YACA,UACA,UACA,iBACA,YACA,UACA,WACA,oBACA,YACA,eACA,kBACA,2BACA,eACA,eACA,cACA,mBACA,eACA,WACA,WACA,eACA,YACA,YACA,gBACA,WACA,gBACA,eACA,UACA,YACA,iBACA,iBACA,gBACA,UACA,cACA,cACA,cACA,gBACA,qBACA,mBACA,wBACA,UACA,WACA,UACA,cACA,gBACA,UACA,kBACA,eACA,UACA,0BACA,0BACA,0BACA,eACA,aACA,eACA,WACA,YACA,UACA,YACA,WACA,YACA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AAW,kBACjC,SAAQ,cAAc,QAAS,CAAC,GAAG,aAAa,OAG/D,GAFA,UAAU,KAAK,QAEX,OAAO,MAAM,KAAO,aACtB,MAAO,QAET,cAAkB,OAAM,CACtB,QAAA,SACA,MAAO,CAAC,MAAO,EAAG,KAAM,aAAa,KAAM,EAAG,MAAO,sBAEtC,MAAK,CACpB,OAAQ,CAAC,EAAG,WACZ,QAAA,SACA,MAAO,CAAC,KAAM,CAAC,QAAS,eAG1B,UAAU,KAAK,WACf,UAAU,KAAK,UAEf,YACI,aAAa,OAAQ,UAAW,SAAU,MAAO,cACrD,MAAO,sBAGO,aAChB,IAAK,qBAAsB,WAAY,YAAa,sBAGpD,UAAQ,CAAC,OAAQ,CAAC,EAAG,aAAc,QAAA,SAAS,MAAO,CAAC,MAAO,mBAElD,SACb,GAAI,aAAe,MACjB,UAAU,KAAK,UACf,SAAa,qBAAa,uBAAuB,aACjD,OAAS,YAAU,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,QAG5D,MAAA,WAAU,QAAQ,GAAK,SAAQ,8BAA8B,IACtD,OAGF,8BAA+C,CACpD,WAAY,mBACZ,YAAa,QACb,WAAY,oCC4DwB,CACpC,UACA,cACA,oBACA,WACA,YACA,aACA,WACA,YACA,WACA,WACA,cACA,cACA,YACA,aACA,aACA,YACA,aACA,iBACA,eACA,oBACA,mBACA,mBACA,iBACA,sBACA,gBACA,YACA,YACA,kBACA,kBACA,eACA,cACA,4BACA,2BACA,cACA,8BACA,0BACA,cACA,WACA,YACA,qBACA,cACA,qBACA,oBACA,2CACA,0CACA,6BACA,YACA,iBACA,WACA,eACA,aACA,WACA,WACA,kBACA,aACA,WACA,YACA,qBACA,aACA,gBACA,iBACA,mBACA,4BACA,gBACA,gBACA,eACA,oBACA,gBACA,YACA,YACA,gBACA,aACA,aACA,iBACA,YACA,iBACA,gBACA,aACA,WACA,kBACA,kBACA,iBACA,WACA,iBACA,eACA,oBACA,mBACA,yBACA,eACA,YACA,WACA,eACA,iBACA,WACA,mBACA,gBACA,WACA,2BACA,2BACA,2BACA,gBACA,cACA,g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", "names": [] } diff --git a/dist/face-api.esm.json b/dist/face-api.esm.json index da188f7..b2a4866 100644 --- a/dist/face-api.esm.json +++ b/dist/face-api.esm.json @@ -1,15 +1,15 @@ { "inputs": { "dist/tfjs.esm.js": { - "bytes": 1572551, + "bytes": 1572418, "imports": [] }, "src/draw/drawContour.ts": { - "bytes": 526, + "bytes": 539, "imports": [] }, "src/classes/Dimensions.ts": { - "bytes": 737, + "bytes": 745, "imports": [ { "path": "src/utils/index.ts" @@ -17,7 +17,7 @@ ] }, "src/utils/index.ts": { - "bytes": 1776, + "bytes": 1845, "imports": [ { "path": "dist/tfjs.esm.js" @@ -31,11 +31,11 @@ ] }, "src/classes/Point.ts": { - "bytes": 923, + "bytes": 925, "imports": [] }, "src/classes/Box.ts": { - "bytes": 5477, + "bytes": 5690, "imports": [ { "path": "src/utils/index.ts" @@ -46,7 +46,7 @@ ] }, "src/classes/BoundingBox.ts": { - "bytes": 389, + "bytes": 402, "imports": [ { "path": "src/classes/Box.ts" @@ -54,7 +54,7 @@ ] }, "src/classes/ObjectDetection.ts": { - "bytes": 1395, + "bytes": 1424, "imports": [ { "path": "src/classes/Box.ts" @@ -65,7 +65,7 @@ ] }, "src/classes/FaceDetection.ts": { - "bytes": 651, + "bytes": 656, "imports": [ { "path": "src/classes/ObjectDetection.ts" @@ -73,11 +73,11 @@ ] }, "src/ops/iou.ts": { - "bytes": 468, + "bytes": 473, "imports": [] }, "src/ops/minBbox.ts": { - "bytes": 479, + "bytes": 498, "imports": [ { "path": "src/classes/index.ts" @@ -85,7 +85,7 @@ ] }, "src/ops/nonMaxSuppression.ts": { - "bytes": 908, + "bytes": 924, "imports": [ { "path": "src/ops/iou.ts" @@ -93,7 +93,7 @@ ] }, "src/ops/normalize.ts": { - "bytes": 478, + "bytes": 486, "imports": [ { "path": "dist/tfjs.esm.js" @@ -101,7 +101,7 @@ ] }, "src/ops/padToSquare.ts": { - "bytes": 1659, + "bytes": 1687, "imports": [ { "path": "dist/tfjs.esm.js" @@ -109,11 +109,11 @@ ] }, "src/ops/shuffleArray.ts": { - "bytes": 274, + "bytes": 273, "imports": [] }, "src/ops/index.ts": { - "bytes": 322, + "bytes": 331, "imports": [ { "path": "src/ops/iou.ts" @@ -136,7 +136,7 @@ ] }, "src/classes/Rect.ts": { - "bytes": 346, + "bytes": 359, "imports": [ { "path": "src/classes/Box.ts" @@ -144,7 +144,7 @@ ] }, "src/classes/FaceLandmarks.ts": { - "bytes": 4167, + "bytes": 4199, "imports": [ { "path": "src/ops/index.ts" @@ -170,7 +170,7 @@ ] }, "src/classes/FaceLandmarks5.ts": { - "bytes": 358, + "bytes": 360, "imports": [ { "path": "src/utils/index.ts" @@ -181,7 +181,7 @@ ] }, "src/classes/FaceLandmarks68.ts": { - "bytes": 905, + "bytes": 915, "imports": [ { "path": "src/utils/index.ts" @@ -192,7 +192,7 @@ ] }, "src/classes/FaceMatch.ts": { - "bytes": 570, + "bytes": 578, "imports": [ { "path": "src/utils/index.ts" @@ -200,7 +200,7 @@ ] }, "src/classes/LabeledBox.ts": { - "bytes": 641, + "bytes": 645, "imports": [ { "path": "src/utils/index.ts" @@ -211,11 +211,11 @@ ] }, "src/classes/LabeledFaceDescriptors.ts": { - "bytes": 1083, + "bytes": 1072, "imports": [] }, "src/classes/PredictedBox.ts": { - "bytes": 944, + "bytes": 952, "imports": [ { "path": "src/utils/index.ts" @@ -226,7 +226,7 @@ ] }, "src/classes/index.ts": { - "bytes": 427, + "bytes": 436, "imports": [ { "path": "src/classes/BoundingBox.ts" @@ -273,7 +273,7 @@ ] }, "src/factories/WithFaceDetection.ts": { - "bytes": 496, + "bytes": 486, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -281,15 +281,15 @@ ] }, "src/env/createBrowserEnv.ts": { - "bytes": 685, + "bytes": 636, "imports": [] }, "src/env/createFileSystem.ts": { - "bytes": 650, + "bytes": 654, "imports": [] }, "src/env/createNodejsEnv.ts": { - "bytes": 1170, + "bytes": 1202, "imports": [ { "path": "src/env/createFileSystem.ts" @@ -297,19 +297,19 @@ ] }, "src/env/isBrowser.ts": { - "bytes": 352, + "bytes": 354, "imports": [] }, "src/env/isNodejs.ts": { - "bytes": 293, + "bytes": 295, "imports": [] }, "src/env/types.ts": { - "bytes": 470, + "bytes": 570, "imports": [] }, "src/env/index.ts": { - "bytes": 1801, + "bytes": 1817, "imports": [ { "path": "src/env/createBrowserEnv.ts" @@ -332,7 +332,7 @@ ] }, "src/dom/resolveInput.ts": { - "bytes": 197, + "bytes": 200, "imports": [ { "path": "src/env/index.ts" @@ -340,7 +340,7 @@ ] }, "src/dom/getContext2dOrThrow.ts": { - "bytes": 666, + "bytes": 673, "imports": [ { "path": "src/env/index.ts" @@ -351,7 +351,7 @@ ] }, "src/draw/DrawTextField.ts": { - "bytes": 3710, + "bytes": 4094, "imports": [ { "path": "src/dom/getContext2dOrThrow.ts" @@ -362,7 +362,7 @@ ] }, "src/draw/DrawBox.ts": { - "bytes": 1750, + "bytes": 1831, "imports": [ { "path": "src/classes/index.ts" @@ -376,7 +376,7 @@ ] }, "src/draw/drawDetections.ts": { - "bytes": 1018, + "bytes": 1128, "imports": [ { "path": "src/classes/index.ts" @@ -396,7 +396,7 @@ ] }, "src/dom/isMediaLoaded.ts": { - "bytes": 276, + "bytes": 277, "imports": [ { "path": "src/env/index.ts" @@ -404,7 +404,7 @@ ] }, "src/dom/awaitMediaLoaded.ts": { - "bytes": 848, + "bytes": 963, "imports": [ { "path": "src/env/index.ts" @@ -415,7 +415,7 @@ ] }, "src/dom/bufferToImage.ts": { - "bytes": 691, + "bytes": 687, "imports": [ { "path": "src/env/index.ts" @@ -423,7 +423,7 @@ ] }, "src/dom/getMediaDimensions.ts": { - "bytes": 526, + "bytes": 529, "imports": [ { "path": "src/classes/Dimensions.ts" @@ -434,7 +434,7 @@ ] }, "src/dom/createCanvas.ts": { - "bytes": 1128, + "bytes": 1139, "imports": [ { "path": "src/env/index.ts" @@ -451,7 +451,7 @@ ] }, "src/dom/imageTensorToCanvas.ts": { - "bytes": 611, + "bytes": 618, "imports": [ { "path": "dist/tfjs.esm.js" @@ -465,7 +465,7 @@ ] }, "src/dom/isMediaElement.ts": { - "bytes": 226, + "bytes": 228, "imports": [ { "path": "src/env/index.ts" @@ -473,7 +473,7 @@ ] }, "src/dom/imageToSquare.ts": { - "bytes": 1162, + "bytes": 1175, "imports": [ { "path": "src/env/index.ts" @@ -490,7 +490,7 @@ ] }, "src/dom/NetInput.ts": { - "bytes": 5465, + "bytes": 5511, "imports": [ { "path": "dist/tfjs.esm.js" @@ -513,7 +513,7 @@ ] }, "src/dom/toNetInput.ts": { - "bytes": 2100, + "bytes": 2115, "imports": [ { "path": "src/utils/index.ts" @@ -533,7 +533,7 @@ ] }, "src/dom/extractFaces.ts": { - "bytes": 1755, + "bytes": 1782, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -556,7 +556,7 @@ ] }, "src/dom/extractFaceTensors.ts": { - "bytes": 1718, + "bytes": 1733, "imports": [ { "path": "dist/tfjs.esm.js" @@ -570,7 +570,7 @@ ] }, "src/dom/fetchOrThrow.ts": { - "bytes": 348, + "bytes": 390, "imports": [ { "path": "src/env/index.ts" @@ -578,7 +578,7 @@ ] }, "src/dom/fetchImage.ts": { - "bytes": 447, + "bytes": 451, "imports": [ { "path": "src/dom/bufferToImage.ts" @@ -589,7 +589,7 @@ ] }, "src/dom/fetchJson.ts": { - "bytes": 154, + "bytes": 155, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -597,7 +597,7 @@ ] }, "src/dom/fetchNetWeights.ts": { - "bytes": 199, + "bytes": 200, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -605,11 +605,11 @@ ] }, "src/common/getModelUris.ts": { - "bytes": 990, + "bytes": 1052, "imports": [] }, "src/dom/loadWeightMap.ts": { - "bytes": 549, + "bytes": 555, "imports": [ { "path": "dist/tfjs.esm.js" @@ -623,7 +623,7 @@ ] }, "src/dom/matchDimensions.ts": { - "bytes": 396, + "bytes": 401, "imports": [ { "path": "src/dom/getMediaDimensions.ts" @@ -631,11 +631,11 @@ ] }, "src/dom/types.ts": { - "bytes": 385, + "bytes": 386, "imports": [] }, "src/dom/index.ts": { - "bytes": 674, + "bytes": 696, "imports": [ { "path": "src/dom/awaitMediaLoaded.ts" @@ -720,7 +720,7 @@ ] }, "src/common/depthwiseSeparableConv.ts": { - "bytes": 411, + "bytes": 417, "imports": [ { "path": "dist/tfjs.esm.js" @@ -728,7 +728,7 @@ ] }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytes": 2021, + "bytes": 2041, "imports": [ { "path": "dist/tfjs.esm.js" @@ -739,7 +739,7 @@ ] }, "src/common/convLayer.ts": { - "bytes": 425, + "bytes": 431, "imports": [ { "path": "dist/tfjs.esm.js" @@ -747,11 +747,11 @@ ] }, "src/common/disposeUnusedWeightTensors.ts": { - "bytes": 284, + "bytes": 290, "imports": [] }, "src/common/extractConvParamsFactory.ts": { - "bytes": 768, + "bytes": 769, "imports": [ { "path": "dist/tfjs.esm.js" @@ -767,11 +767,11 @@ ] }, "src/common/types.ts": { - "bytes": 513, + "bytes": 800, "imports": [] }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytes": 1490, + "bytes": 1536, "imports": [ { "path": "dist/tfjs.esm.js" @@ -782,7 +782,7 @@ ] }, "src/common/extractWeightEntryFactory.ts": { - "bytes": 587, + "bytes": 579, "imports": [ { "path": "src/utils/index.ts" @@ -790,11 +790,11 @@ ] }, "src/common/extractWeightsFactory.ts": { - "bytes": 433, + "bytes": 441, "imports": [] }, "src/common/index.ts": { - "bytes": 388, + "bytes": 399, "imports": [ { "path": "src/common/convLayer.ts" @@ -829,7 +829,7 @@ ] }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytes": 1568, + "bytes": 1587, "imports": [ { "path": "src/common/index.ts" @@ -837,7 +837,7 @@ ] }, "src/faceFeatureExtractor/extractParams.ts": { - "bytes": 1008, + "bytes": 1030, "imports": [ { "path": "src/common/index.ts" @@ -848,11 +848,11 @@ ] }, "src/common/loadConvParamsFactory.ts": { - "bytes": 426, + "bytes": 469, "imports": [] }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytes": 1522, + "bytes": 1547, "imports": [ { "path": "src/common/index.ts" @@ -863,7 +863,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytes": 833, + "bytes": 841, "imports": [ { "path": "src/common/index.ts" @@ -874,7 +874,7 @@ ] }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytes": 1794, + "bytes": 1809, "imports": [ { "path": "dist/tfjs.esm.js" @@ -900,7 +900,7 @@ ] }, "src/common/fullyConnectedLayer.ts": { - "bytes": 275, + "bytes": 266, "imports": [ { "path": "dist/tfjs.esm.js" @@ -908,7 +908,7 @@ ] }, "src/faceProcessor/extractParams.ts": { - "bytes": 751, + "bytes": 759, "imports": [ { "path": "src/common/index.ts" @@ -916,7 +916,7 @@ ] }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytes": 839, + "bytes": 826, "imports": [ { "path": "src/common/index.ts" @@ -924,11 +924,11 @@ ] }, "src/faceProcessor/util.ts": { - "bytes": 417, + "bytes": 424, "imports": [] }, "src/faceProcessor/FaceProcessor.ts": { - "bytes": 3015, + "bytes": 3037, "imports": [ { "path": "dist/tfjs.esm.js" @@ -954,11 +954,11 @@ ] }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytes": 855, + "bytes": 869, "imports": [] }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytes": 1648, + "bytes": 1667, "imports": [ { "path": "dist/tfjs.esm.js" @@ -978,7 +978,7 @@ ] }, "src/faceExpressionNet/index.ts": { - "bytes": 71, + "bytes": 72, "imports": [ { "path": "src/faceExpressionNet/FaceExpressionNet.ts" @@ -989,7 +989,7 @@ ] }, "src/factories/WithFaceExpressions.ts": { - "bytes": 533, + "bytes": 524, "imports": [ { "path": "src/faceExpressionNet/FaceExpressions.ts" @@ -997,7 +997,7 @@ ] }, "src/draw/drawFaceExpressions.ts": { - "bytes": 1519, + "bytes": 1612, "imports": [ { "path": "src/classes/index.ts" @@ -1020,7 +1020,7 @@ ] }, "src/factories/WithFaceLandmarks.ts": { - "bytes": 1507, + "bytes": 1643, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -1034,7 +1034,7 @@ ] }, "src/draw/DrawFaceLandmarks.ts": { - "bytes": 3371, + "bytes": 3528, "imports": [ { "path": "src/classes/FaceLandmarks.ts" @@ -1054,7 +1054,7 @@ ] }, "src/draw/index.ts": { - "bytes": 194, + "bytes": 201, "imports": [ { "path": "src/draw/drawContour.ts" @@ -1076,8 +1076,12 @@ } ] }, + "package.json": { + "bytes": 1719, + "imports": [] + }, "src/xception/extractParams.ts": { - "bytes": 3412, + "bytes": 3440, "imports": [ { "path": "src/common/index.ts" @@ -1088,7 +1092,7 @@ ] }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytes": 3105, + "bytes": 3133, "imports": [ { "path": "src/common/index.ts" @@ -1102,7 +1106,7 @@ ] }, "src/xception/TinyXception.ts": { - "bytes": 3123, + "bytes": 3151, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1131,7 +1135,7 @@ ] }, "src/ageGenderNet/extractParams.ts": { - "bytes": 769, + "bytes": 778, "imports": [ { "path": "src/common/index.ts" @@ -1139,7 +1143,7 @@ ] }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytes": 906, + "bytes": 894, "imports": [ { "path": "src/common/index.ts" @@ -1147,11 +1151,11 @@ ] }, "src/ageGenderNet/types.ts": { - "bytes": 399, + "bytes": 528, "imports": [] }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytes": 4223, + "bytes": 4272, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1183,7 +1187,7 @@ ] }, "src/ageGenderNet/index.ts": { - "bytes": 56, + "bytes": 57, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1194,7 +1198,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytes": 3695, + "bytes": 3720, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1217,7 +1221,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytes": 619, + "bytes": 622, "imports": [ { "path": "src/faceFeatureExtractor/FaceFeatureExtractor.ts" @@ -1228,7 +1232,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytes": 797, + "bytes": 805, "imports": [ { "path": "src/common/index.ts" @@ -1239,7 +1243,7 @@ ] }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytes": 951, + "bytes": 960, "imports": [ { "path": "src/common/index.ts" @@ -1250,7 +1254,7 @@ ] }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytes": 1805, + "bytes": 1819, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1276,7 +1280,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytes": 656, + "bytes": 659, "imports": [ { "path": "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts" @@ -1287,7 +1291,7 @@ ] }, "src/faceLandmarkNet/index.ts": { - "bytes": 194, + "bytes": 195, "imports": [ { "path": "src/faceLandmarkNet/FaceLandmark68Net.ts" @@ -1301,7 +1305,7 @@ ] }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytes": 231, + "bytes": 232, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1309,7 +1313,7 @@ ] }, "src/faceRecognitionNet/convLayer.ts": { - "bytes": 844, + "bytes": 853, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1320,7 +1324,7 @@ ] }, "src/faceRecognitionNet/extractParams.ts": { - "bytes": 4855, + "bytes": 4910, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1334,7 +1338,7 @@ ] }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytes": 3121, + "bytes": 3104, "imports": [ { "path": "src/common/index.ts" @@ -1345,7 +1349,7 @@ ] }, "src/faceRecognitionNet/residualLayer.ts": { - "bytes": 1321, + "bytes": 1345, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1356,7 +1360,7 @@ ] }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytes": 2946, + "bytes": 2984, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1385,7 +1389,7 @@ ] }, "src/faceRecognitionNet/index.ts": { - "bytes": 248, + "bytes": 252, "imports": [ { "path": "src/faceRecognitionNet/FaceRecognitionNet.ts" @@ -1396,15 +1400,15 @@ ] }, "src/factories/WithFaceDescriptor.ts": { - "bytes": 310, + "bytes": 301, "imports": [] }, "src/factories/WithAge.ts": { - "bytes": 343, + "bytes": 334, "imports": [] }, "src/factories/WithGender.ts": { - "bytes": 633, + "bytes": 618, "imports": [ { "path": "src/ageGenderNet/types.ts" @@ -1415,7 +1419,7 @@ ] }, "src/factories/index.ts": { - "bytes": 201, + "bytes": 208, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1438,7 +1442,7 @@ ] }, "src/ssdMobilenetv1/extractParams.ts": { - "bytes": 8250, + "bytes": 8342, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1449,7 +1453,7 @@ ] }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytes": 5858, + "bytes": 5785, "imports": [ { "path": "src/common/index.ts" @@ -1460,7 +1464,7 @@ ] }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytes": 390, + "bytes": 394, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1468,7 +1472,7 @@ ] }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytes": 1794, + "bytes": 1814, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1479,11 +1483,11 @@ ] }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytes": 2193, + "bytes": 2190, "imports": [] }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytes": 2160, + "bytes": 2190, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1491,7 +1495,7 @@ ] }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytes": 612, + "bytes": 620, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1502,7 +1506,7 @@ ] }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytes": 2036, + "bytes": 2058, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1516,11 +1520,11 @@ ] }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytes": 872, + "bytes": 881, "imports": [] }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytes": 3784, + "bytes": 3829, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1561,7 +1565,7 @@ ] }, "src/ssdMobilenetv1/index.ts": { - "bytes": 466, + "bytes": 471, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1.ts" @@ -1575,7 +1579,7 @@ ] }, "src/tinyYolov2/const.ts": { - "bytes": 695, + "bytes": 704, "imports": [ { "path": "src/classes/index.ts" @@ -1583,11 +1587,11 @@ ] }, "src/tinyYolov2/config.ts": { - "bytes": 1696, + "bytes": 1701, "imports": [] }, "src/tinyYolov2/leaky.ts": { - "bytes": 269, + "bytes": 274, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1595,7 +1599,7 @@ ] }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytes": 528, + "bytes": 535, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1606,7 +1610,7 @@ ] }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytes": 500, + "bytes": 505, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1617,7 +1621,7 @@ ] }, "src/tinyYolov2/extractParams.ts": { - "bytes": 3862, + "bytes": 3921, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1634,7 +1638,7 @@ ] }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytes": 3265, + "bytes": 3287, "imports": [ { "path": "src/common/disposeUnusedWeightTensors.ts" @@ -1648,11 +1652,11 @@ ] }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytes": 987, + "bytes": 913, "imports": [] }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytes": 9605, + "bytes": 9703, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1705,7 +1709,7 @@ ] }, "src/tinyYolov2/TinyYolov2.ts": { - "bytes": 1792, + "bytes": 1804, "imports": [ { "path": "src/classes/index.ts" @@ -1719,11 +1723,11 @@ ] }, "src/tinyYolov2/types.ts": { - "bytes": 954, + "bytes": 955, "imports": [] }, "src/tinyYolov2/index.ts": { - "bytes": 342, + "bytes": 349, "imports": [ { "path": "src/tinyYolov2/TinyYolov2.ts" @@ -1740,7 +1744,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytes": 271, + "bytes": 272, "imports": [ { "path": "src/tinyYolov2/index.ts" @@ -1748,11 +1752,11 @@ ] }, "src/globalApi/ComposableTask.ts": { - "bytes": 273, + "bytes": 322, "imports": [] }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytes": 1848, + "bytes": 2040, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1766,7 +1770,7 @@ ] }, "src/tinyFaceDetector/const.ts": { - "bytes": 349, + "bytes": 354, "imports": [ { "path": "src/classes/index.ts" @@ -1774,7 +1778,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytes": 1463, + "bytes": 1473, "imports": [ { "path": "src/classes/index.ts" @@ -1788,7 +1792,7 @@ ] }, "src/globalApi/nets.ts": { - "bytes": 6529, + "bytes": 6336, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1817,7 +1821,7 @@ ] }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytes": 3635, + "bytes": 3830, "imports": [ { "path": "src/factories/WithFaceExpressions.ts" @@ -1840,7 +1844,7 @@ ] }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytes": 3815, + "bytes": 4011, "imports": [ { "path": "src/factories/WithAge.ts" @@ -1866,7 +1870,7 @@ ] }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytes": 3029, + "bytes": 3215, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1889,7 +1893,7 @@ ] }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytes": 3807, + "bytes": 4005, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1918,7 +1922,7 @@ ] }, "src/globalApi/DetectFacesTasks.ts": { - "bytes": 4073, + "bytes": 4604, "imports": [ { "path": "src/factories/WithFaceDetection.ts" @@ -1950,7 +1954,7 @@ ] }, "src/globalApi/detectFaces.ts": { - "bytes": 633, + "bytes": 638, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1Options.ts" @@ -1961,7 +1965,7 @@ ] }, "src/globalApi/allFaces.ts": { - "bytes": 1283, + "bytes": 1056, "imports": [ { "path": "src/ssdMobilenetv1/index.ts" @@ -1979,7 +1983,7 @@ "imports": [] }, "src/globalApi/FaceMatcher.ts": { - "bytes": 2973, + "bytes": 2992, "imports": [ { "path": "src/classes/FaceMatch.ts" @@ -1993,11 +1997,11 @@ ] }, "src/globalApi/types.ts": { - "bytes": 512, + "bytes": 556, "imports": [] }, "src/globalApi/index.ts": { - "bytes": 292, + "bytes": 300, "imports": [ { "path": "src/globalApi/allFaces.ts" @@ -2029,7 +2033,7 @@ ] }, "src/tinyFaceDetector/index.ts": { - "bytes": 281, + "bytes": 285, "imports": [ { "path": "src/tinyFaceDetector/TinyFaceDetector.ts" @@ -2062,12 +2066,8 @@ } ] }, - "package.json": { - "bytes": 1363, - "imports": [] - }, "src/index.ts": { - "bytes": 988, + "bytes": 1027, "imports": [ { "path": "dist/tfjs.esm.js" @@ -2078,6 +2078,9 @@ { "path": "src/utils/index.ts" }, + { + "path": "package.json" + }, { "path": "src/ageGenderNet/index.ts" }, @@ -2125,9 +2128,6 @@ }, { "path": "src/resizeResults.ts" - }, - { - "path": "package.json" } ] } @@ -2136,7 +2136,7 @@ "dist/face-api.esm.js.map": { "imports": [], "inputs": {}, - "bytes": 2072207 + "bytes": 1350459 }, "dist/face-api.esm.js": { "imports": [], @@ -2184,7 +2184,6 @@ "TinyFaceDetectorOptions", "TinyYolov2", "TinyYolov2Options", - "TinyYolov2SizeType", "allFaces", "allFacesSsdMobilenetv1", "allFacesTinyYolov2", @@ -2268,7 +2267,7 @@ "bytesInOutput": 224 }, "dist/tfjs.esm.js": { - "bytesInOutput": 1571394 + "bytesInOutput": 1571395 }, "src/draw/index.ts": { "bytesInOutput": 451 @@ -2277,13 +2276,13 @@ "bytesInOutput": 313 }, "src/utils/index.ts": { - "bytesInOutput": 1522 + "bytesInOutput": 1520 }, "src/classes/Dimensions.ts": { "bytesInOutput": 398 }, "src/classes/Point.ts": { - "bytesInOutput": 490 + "bytesInOutput": 472 }, "src/classes/Box.ts": { "bytesInOutput": 3300 @@ -2316,7 +2315,7 @@ "bytesInOutput": 278 }, "src/ops/padToSquare.ts": { - "bytesInOutput": 825 + "bytesInOutput": 833 }, "src/ops/shuffleArray.ts": { "bytesInOutput": 195 @@ -2325,7 +2324,7 @@ "bytesInOutput": 135 }, "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1899 + "bytesInOutput": 1884 }, "src/classes/FaceLandmarks5.ts": { "bytesInOutput": 153 @@ -2346,22 +2345,22 @@ "bytesInOutput": 508 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 205 + "bytesInOutput": 194 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 491 + "bytesInOutput": 487 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 400 + "bytesInOutput": 376 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 826 + "bytesInOutput": 722 }, "src/env/isBrowser.ts": { "bytesInOutput": 275 }, "src/env/index.ts": { - "bytesInOutput": 1167 + "bytesInOutput": 1159 }, "src/dom/resolveInput.ts": { "bytesInOutput": 105 @@ -2373,7 +2372,7 @@ "bytesInOutput": 2254 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 831 + "bytesInOutput": 821 }, "src/draw/drawDetections.ts": { "bytesInOutput": 425 @@ -2388,7 +2387,7 @@ "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 482 + "bytesInOutput": 483 }, "src/dom/getMediaDimensions.ts": { "bytesInOutput": 275 @@ -2418,7 +2417,7 @@ "bytesInOutput": 722 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 222 + "bytesInOutput": 223 }, "src/dom/fetchImage.ts": { "bytesInOutput": 269 @@ -2457,19 +2456,19 @@ "bytesInOutput": 175 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 417 + "bytesInOutput": 410 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 385 + "bytesInOutput": 378 }, "src/common/types.ts": { "bytesInOutput": 177 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 906 + "bytesInOutput": 891 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 369 + "bytesInOutput": 362 }, "src/common/extractWeightsFactory.ts": { "bytesInOutput": 311 @@ -2481,7 +2480,7 @@ "bytesInOutput": 570 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 195 + "bytesInOutput": 187 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { "bytesInOutput": 984 @@ -2517,17 +2516,20 @@ "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 217 + "bytesInOutput": 206 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 784 + "bytesInOutput": 804 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 603 + "bytesInOutput": 592 }, "src/draw/DrawFaceLandmarks.ts": { "bytesInOutput": 1763 }, + "package.json": { + "bytesInOutput": 21 + }, "src/xception/extractParams.ts": { "bytesInOutput": 2444 }, @@ -2553,7 +2555,7 @@ "bytesInOutput": 0 }, "src/index.ts": { - "bytesInOutput": 153 + "bytesInOutput": 157 }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { "bytesInOutput": 1989 @@ -2586,7 +2588,7 @@ "bytesInOutput": 3331 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2100 + "bytesInOutput": 2099 }, "src/faceRecognitionNet/residualLayer.ts": { "bytesInOutput": 713 @@ -2598,16 +2600,16 @@ "bytesInOutput": 113 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 128 + "bytesInOutput": 117 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 159 + "bytesInOutput": 148 }, "src/factories/WithGender.ts": { - "bytesInOutput": 279 + "bytesInOutput": 268 }, "src/ssdMobilenetv1/extractParams.ts": { "bytesInOutput": 5994 @@ -2664,13 +2666,13 @@ "bytesInOutput": 2042 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 901 + "bytesInOutput": 588 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5788 + "bytesInOutput": 5806 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 836 + "bytesInOutput": 821 }, "src/tinyYolov2/index.ts": { "bytesInOutput": 139 @@ -2694,10 +2696,10 @@ "bytesInOutput": 1532 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1703 + "bytesInOutput": 1697 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1797 + "bytesInOutput": 1791 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { "bytesInOutput": 1419 @@ -2706,13 +2708,13 @@ "bytesInOutput": 1863 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2229 + "bytesInOutput": 2231 }, "src/globalApi/detectFaces.ts": { "bytesInOutput": 228 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 624 + "bytesInOutput": 396 }, "src/globalApi/index.ts": { "bytesInOutput": 0 @@ -2728,12 +2730,9 @@ }, "src/resizeResults.ts": { "bytesInOutput": 824 - }, - "package.json": { - "bytesInOutput": 20 } }, - "bytes": 1706150 + "bytes": 1705321 } } } diff --git a/dist/face-api.js b/dist/face-api.js index f537091..f08cc5e 100644 --- a/dist/face-api.js +++ b/dist/face-api.js @@ -5,7 +5,7 @@ author: ' */ -var faceapi=(()=>{var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all2)=>{__markAsModule(target);for(var name in all2)__defProp(target,name,{get:all2[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_isNodejs=__commonJS((exports,module)=>{__export(exports,{isNodejs:()=>isNodejs3});function isNodejs3(){return typeof global=="object"&&!0&&typeof module!="undefined"&&typeof process!="undefined"&&!!process.version}}),src_exports={};__export(src_exports,{AgeGenderNet:()=>AgeGenderNet,BoundingBox:()=>BoundingBox,Box:()=>Box,ComposableTask:()=>ComposableTask,ComputeAllFaceDescriptorsTask:()=>ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase:()=>ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask:()=>ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask:()=>DetectAllFaceLandmarksTask,DetectAllFacesTask:()=>DetectAllFacesTask,DetectFaceLandmarksTaskBase:()=>DetectFaceLandmarksTaskBase,DetectFacesTaskBase:()=>DetectFacesTaskBase,DetectSingleFaceLandmarksTask:()=>DetectSingleFaceLandmarksTask,DetectSingleFaceTask:()=>DetectSingleFaceTask,Dimensions:()=>Dimensions,FACE_EXPRESSION_LABELS:()=>FACE_EXPRESSION_LABELS,FaceDetection:()=>FaceDetection,FaceDetectionNet:()=>FaceDetectionNet,FaceExpressionNet:()=>FaceExpressionNet,FaceExpressions:()=>FaceExpressions,FaceLandmark68Net:()=>FaceLandmark68Net,FaceLandmark68TinyNet:()=>FaceLandmark68TinyNet,FaceLandmarkNet:()=>FaceLandmarkNet,FaceLandmarks:()=>FaceLandmarks,FaceLandmarks5:()=>FaceLandmarks5,FaceLandmarks68:()=>FaceLandmarks68,FaceMatch:()=>FaceMatch,FaceMatcher:()=>FaceMatcher,FaceRecognitionNet:()=>FaceRecognitionNet,Gender:()=>Gender,LabeledBox:()=>LabeledBox,LabeledFaceDescriptors:()=>LabeledFaceDescriptors,NetInput:()=>NetInput,NeuralNetwork:()=>NeuralNetwork,ObjectDetection:()=>ObjectDetection,Point:()=>Point,PredictedBox:()=>PredictedBox,Rect:()=>Rect,SsdMobilenetv1:()=>SsdMobilenetv1,SsdMobilenetv1Options:()=>SsdMobilenetv1Options,TinyFaceDetector:()=>TinyFaceDetector,TinyFaceDetectorOptions:()=>TinyFaceDetectorOptions,TinyYolov2:()=>TinyYolov2,TinyYolov2Options:()=>TinyYolov2Options,TinyYolov2SizeType:()=>TinyYolov2SizeType,allFaces:()=>allFaces,allFacesSsdMobilenetv1:()=>allFacesSsdMobilenetv1,allFacesTinyYolov2:()=>allFacesTinyYolov2,awaitMediaLoaded:()=>awaitMediaLoaded,bufferToImage:()=>bufferToImage,computeFaceDescriptor:()=>computeFaceDescriptor,createCanvas:()=>createCanvas2,createCanvasFromMedia:()=>createCanvasFromMedia,createFaceDetectionNet:()=>createFaceDetectionNet,createFaceRecognitionNet:()=>createFaceRecognitionNet,createSsdMobilenetv1:()=>createSsdMobilenetv1,createTinyFaceDetector:()=>createTinyFaceDetector,createTinyYolov2:()=>createTinyYolov2,detectAllFaces:()=>detectAllFaces,detectFaceLandmarks:()=>detectFaceLandmarks,detectFaceLandmarksTiny:()=>detectFaceLandmarksTiny,detectLandmarks:()=>detectLandmarks,detectSingleFace:()=>detectSingleFace,draw:()=>draw_exports,env:()=>env2,euclideanDistance:()=>euclideanDistance,extendWithAge:()=>extendWithAge,extendWithFaceDescriptor:()=>extendWithFaceDescriptor,extendWithFaceDetection:()=>extendWithFaceDetection,extendWithFaceExpressions:()=>extendWithFaceExpressions,extendWithFaceLandmarks:()=>extendWithFaceLandmarks,extendWithGender:()=>extendWithGender,extractFaceTensors:()=>extractFaceTensors,extractFaces:()=>extractFaces,fetchImage:()=>fetchImage,fetchJson:()=>fetchJson,fetchNetWeights:()=>fetchNetWeights,fetchOrThrow:()=>fetchOrThrow,getContext2dOrThrow:()=>getContext2dOrThrow,getMediaDimensions:()=>getMediaDimensions,imageTensorToCanvas:()=>imageTensorToCanvas,imageToSquare:()=>imageToSquare,inverseSigmoid:()=>inverseSigmoid,iou:()=>iou,isMediaElement:()=>isMediaElement,isMediaLoaded:()=>isMediaLoaded,isWithAge:()=>isWithAge,isWithFaceDetection:()=>isWithFaceDetection,isWithFaceExpressions:()=>isWithFaceExpressions,isWithFaceLandmarks:()=>isWithFaceLandmarks,isWithGender:()=>isWithGender,loadAgeGenderModel:()=>loadAgeGenderModel,loadFaceDetectionModel:()=>loadFaceDetectionModel,loadFaceExpressionModel:()=>loadFaceExpressionModel,loadFaceLandmarkModel:()=>loadFaceLandmarkModel,loadFaceLandmarkTinyModel:()=>loadFaceLandmarkTinyModel,loadFaceRecognitionModel:()=>loadFaceRecognitionModel,loadSsdMobilenetv1Model:()=>loadSsdMobilenetv1Model,loadTinyFaceDetectorModel:()=>loadTinyFaceDetectorModel,loadTinyYolov2Model:()=>loadTinyYolov2Model,loadWeightMap:()=>loadWeightMap,locateFaces:()=>locateFaces,matchDimensions:()=>matchDimensions,minBbox:()=>minBbox,nets:()=>nets,nonMaxSuppression:()=>nonMaxSuppression2,normalize:()=>normalize,padToSquare:()=>padToSquare,predictAgeAndGender:()=>predictAgeAndGender,recognizeFaceExpressions:()=>recognizeFaceExpressions,resizeResults:()=>resizeResults,resolveInput:()=>resolveInput,shuffleArray:()=>shuffleArray,sigmoid:()=>sigmoid2,ssdMobilenetv1:()=>ssdMobilenetv1,tf:()=>tfjs_esm_exports,tinyFaceDetector:()=>tinyFaceDetector,tinyYolov2:()=>tinyYolov23,toNetInput:()=>toNetInput,utils:()=>utils_exports,validateConfig:()=>validateConfig,version:()=>version4});var tfjs_esm_exports={};__export(tfjs_esm_exports,{Abs:()=>Abs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DGrad:()=>AvgPool3DGrad,AvgPoolGrad:()=>AvgPoolGrad,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,Bincount:()=>Bincount,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,ComplexAbs:()=>ComplexAbs,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DenseBincount:()=>DenseBincount,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,ExpandDims:()=>ExpandDims,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNGrad:()=>LRNGrad,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,LeakyRelu:()=>LeakyRelu,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DGrad:()=>MaxPool3DGrad,MaxPoolGrad:()=>MaxPoolGrad,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multinomial:()=>Multinomial,Multiply:()=>Multiply,Neg:()=>Neg,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,Pack:()=>Pack,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,RealDiv:()=>RealDiv,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,Select:()=>Select,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend2,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,bincount:()=>bincount,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,denseBincount:()=>denseBincount,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine15,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round2,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setdiff1dAsync:()=>setdiff1dAsync,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor4,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version14,version_converter:()=>version6,version_core:()=>version,version_layers:()=>version2,version_wasm:()=>version15,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all6)=>{__markAsModule2(target);for(var name in all6)__defProp2(target,name,{get:all6[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=data.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},_scriptDir2=void 0,moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer9=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir2&&(scriptDirectory=_scriptDir2),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:167,maximum:167+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer10){GROWABLE_HEAP_I8().set(array2,buffer10)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer9,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer9=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer9=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer9=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer9.byteLength,updateGlobalBufferAndViews(buffer9),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=13056,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data){worker.onmessage({data})}),worker.on("error",function(data){worker.onerror(data)}),worker.on("exit",function(data){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir2,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack8=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer10=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer10,0)),buffer10.length=0):buffer10.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.V).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.W).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.X).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.fa).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.ga).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ha).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ia).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ja).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ka).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.la).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.ma).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.na).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.oa).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.pa).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.qa).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.sa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ta).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.ua).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.va).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.wa).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.xa).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.ya).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.za).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Aa).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.Ba).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Ca).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Da).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Ea).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Fa).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ga).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Ha).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ia).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Ja).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ka).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.La).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ma).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Na).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Oa).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.Pa).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Qa).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Ra).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Ta).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Ua).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.Va).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Wa).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Xa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ya).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Za).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm._a).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.$a).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.ab).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.bb).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.cb).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm.db).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.eb).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.fb).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.gb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.mb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.nb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.ob).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.pb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.qb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.rb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.sb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.tb).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.ub).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.vb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.wb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.xb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.yb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.zb).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.Ab).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:149,maximum:149+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer10){HEAP8.set(array2,buffer10)}var buffer9,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer9=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer10=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer10,0)),buffer10.length=0):buffer10.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Floor).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.LeakyRelu).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.Mean).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.Neg).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Prod).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.RealDiv).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.TopK).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min9,max11){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis,batchDims=0){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean8,variance,offset,scale22,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse13){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real6,imag6){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min9,x,max11){return Math.max(min9,Math.min(x,max11))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum29=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment16){ENV=environment16}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolGrad="AvgPoolGrad",AvgPool3D="AvgPool3D",AvgPool3DGrad="AvgPool3DGrad",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",Bincount="Bincount",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",ComplexAbs="ComplexAbs",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DenseBincount="DenseBincount",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",RealDiv="RealDiv",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",ExpandDims="ExpandDims",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",LeakyRelu="LeakyRelu",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNGrad="LRNGrad",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolGrad="MaxPoolGrad",MaxPool3D="MaxPool3D",MaxPool3DGrad="MaxPool3DGrad",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multinomial="Multinomial",Multiply="Multiply",Neg="Neg",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",Pack="Pack",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",Select="Select",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config2]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config2)}return result}function registerKernel(config2){let{kernelName,backendName}=config2,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config2)}function registerGradient(config2){let{kernelName}=config2;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config2)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);if(env().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node2.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node2=tape2[i],nodeInputs=node2.inputs;for(let j=0;j=0;i--){let node2=filteredTape[i],dys=[];if(node2.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node2.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node2.kernelName}.`);let inputGradients=node2.gradient(dys);for(let inputName in node2.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node2.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node2.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node2.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add32(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` +var faceapi=(()=>{var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all2)=>{__markAsModule(target);for(var name in all2)__defProp(target,name,{get:all2[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_isNodejs=__commonJS((exports,module)=>{__export(exports,{isNodejs:()=>isNodejs3});function isNodejs3(){return typeof global=="object"&&!0&&typeof module!="undefined"&&typeof process!="undefined"&&!!process.version}}),src_exports={};__export(src_exports,{AgeGenderNet:()=>AgeGenderNet,BoundingBox:()=>BoundingBox,Box:()=>Box,ComposableTask:()=>ComposableTask,ComputeAllFaceDescriptorsTask:()=>ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase:()=>ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask:()=>ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask:()=>DetectAllFaceLandmarksTask,DetectAllFacesTask:()=>DetectAllFacesTask,DetectFaceLandmarksTaskBase:()=>DetectFaceLandmarksTaskBase,DetectFacesTaskBase:()=>DetectFacesTaskBase,DetectSingleFaceLandmarksTask:()=>DetectSingleFaceLandmarksTask,DetectSingleFaceTask:()=>DetectSingleFaceTask,Dimensions:()=>Dimensions,FACE_EXPRESSION_LABELS:()=>FACE_EXPRESSION_LABELS,FaceDetection:()=>FaceDetection,FaceDetectionNet:()=>FaceDetectionNet,FaceExpressionNet:()=>FaceExpressionNet,FaceExpressions:()=>FaceExpressions,FaceLandmark68Net:()=>FaceLandmark68Net,FaceLandmark68TinyNet:()=>FaceLandmark68TinyNet,FaceLandmarkNet:()=>FaceLandmarkNet,FaceLandmarks:()=>FaceLandmarks,FaceLandmarks5:()=>FaceLandmarks5,FaceLandmarks68:()=>FaceLandmarks68,FaceMatch:()=>FaceMatch,FaceMatcher:()=>FaceMatcher,FaceRecognitionNet:()=>FaceRecognitionNet,Gender:()=>Gender,LabeledBox:()=>LabeledBox,LabeledFaceDescriptors:()=>LabeledFaceDescriptors,NetInput:()=>NetInput,NeuralNetwork:()=>NeuralNetwork,ObjectDetection:()=>ObjectDetection,Point:()=>Point,PredictedBox:()=>PredictedBox,Rect:()=>Rect,SsdMobilenetv1:()=>SsdMobilenetv1,SsdMobilenetv1Options:()=>SsdMobilenetv1Options,TinyFaceDetector:()=>TinyFaceDetector,TinyFaceDetectorOptions:()=>TinyFaceDetectorOptions,TinyYolov2:()=>TinyYolov2,TinyYolov2Options:()=>TinyYolov2Options,allFaces:()=>allFaces,allFacesSsdMobilenetv1:()=>allFacesSsdMobilenetv1,allFacesTinyYolov2:()=>allFacesTinyYolov2,awaitMediaLoaded:()=>awaitMediaLoaded,bufferToImage:()=>bufferToImage,computeFaceDescriptor:()=>computeFaceDescriptor,createCanvas:()=>createCanvas2,createCanvasFromMedia:()=>createCanvasFromMedia,createFaceDetectionNet:()=>createFaceDetectionNet,createFaceRecognitionNet:()=>createFaceRecognitionNet,createSsdMobilenetv1:()=>createSsdMobilenetv1,createTinyFaceDetector:()=>createTinyFaceDetector,createTinyYolov2:()=>createTinyYolov2,detectAllFaces:()=>detectAllFaces,detectFaceLandmarks:()=>detectFaceLandmarks,detectFaceLandmarksTiny:()=>detectFaceLandmarksTiny,detectLandmarks:()=>detectLandmarks,detectSingleFace:()=>detectSingleFace,draw:()=>draw_exports,env:()=>env2,euclideanDistance:()=>euclideanDistance,extendWithAge:()=>extendWithAge,extendWithFaceDescriptor:()=>extendWithFaceDescriptor,extendWithFaceDetection:()=>extendWithFaceDetection,extendWithFaceExpressions:()=>extendWithFaceExpressions,extendWithFaceLandmarks:()=>extendWithFaceLandmarks,extendWithGender:()=>extendWithGender,extractFaceTensors:()=>extractFaceTensors,extractFaces:()=>extractFaces,fetchImage:()=>fetchImage,fetchJson:()=>fetchJson,fetchNetWeights:()=>fetchNetWeights,fetchOrThrow:()=>fetchOrThrow,getContext2dOrThrow:()=>getContext2dOrThrow,getMediaDimensions:()=>getMediaDimensions,imageTensorToCanvas:()=>imageTensorToCanvas,imageToSquare:()=>imageToSquare,inverseSigmoid:()=>inverseSigmoid,iou:()=>iou,isMediaElement:()=>isMediaElement,isMediaLoaded:()=>isMediaLoaded,isWithAge:()=>isWithAge,isWithFaceDetection:()=>isWithFaceDetection,isWithFaceExpressions:()=>isWithFaceExpressions,isWithFaceLandmarks:()=>isWithFaceLandmarks,isWithGender:()=>isWithGender,loadAgeGenderModel:()=>loadAgeGenderModel,loadFaceDetectionModel:()=>loadFaceDetectionModel,loadFaceExpressionModel:()=>loadFaceExpressionModel,loadFaceLandmarkModel:()=>loadFaceLandmarkModel,loadFaceLandmarkTinyModel:()=>loadFaceLandmarkTinyModel,loadFaceRecognitionModel:()=>loadFaceRecognitionModel,loadSsdMobilenetv1Model:()=>loadSsdMobilenetv1Model,loadTinyFaceDetectorModel:()=>loadTinyFaceDetectorModel,loadTinyYolov2Model:()=>loadTinyYolov2Model,loadWeightMap:()=>loadWeightMap,locateFaces:()=>locateFaces,matchDimensions:()=>matchDimensions,minBbox:()=>minBbox,nets:()=>nets,nonMaxSuppression:()=>nonMaxSuppression2,normalize:()=>normalize,padToSquare:()=>padToSquare,predictAgeAndGender:()=>predictAgeAndGender,recognizeFaceExpressions:()=>recognizeFaceExpressions,resizeResults:()=>resizeResults,resolveInput:()=>resolveInput,shuffleArray:()=>shuffleArray,sigmoid:()=>sigmoid2,ssdMobilenetv1:()=>ssdMobilenetv1,tf:()=>tfjs_esm_exports,tinyFaceDetector:()=>tinyFaceDetector,tinyYolov2:()=>tinyYolov23,toNetInput:()=>toNetInput,utils:()=>utils_exports,validateConfig:()=>validateConfig,version:()=>version4});var tfjs_esm_exports={};__export(tfjs_esm_exports,{Abs:()=>Abs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DGrad:()=>AvgPool3DGrad,AvgPoolGrad:()=>AvgPoolGrad,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,Bincount:()=>Bincount,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,ComplexAbs:()=>ComplexAbs,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DenseBincount:()=>DenseBincount,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,ExpandDims:()=>ExpandDims,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNGrad:()=>LRNGrad,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,LeakyRelu:()=>LeakyRelu,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DGrad:()=>MaxPool3DGrad,MaxPoolGrad:()=>MaxPoolGrad,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multinomial:()=>Multinomial,Multiply:()=>Multiply,Neg:()=>Neg,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,Pack:()=>Pack,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,RealDiv:()=>RealDiv,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,Select:()=>Select,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend2,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,bincount:()=>bincount,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,denseBincount:()=>denseBincount,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine15,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round2,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setdiff1dAsync:()=>setdiff1dAsync,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor4,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version14,version_converter:()=>version6,version_core:()=>version,version_layers:()=>version2,version_wasm:()=>version15,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all6)=>{__markAsModule2(target);for(var name in all6)__defProp2(target,name,{get:all6[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=data.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer9&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},_scriptDir2=void 0,moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer9=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir2&&(scriptDirectory=_scriptDir2),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:167,maximum:167+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer10){GROWABLE_HEAP_I8().set(array2,buffer10)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer9,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer9=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer9=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer9=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer9.byteLength,updateGlobalBufferAndViews(buffer9),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=13056,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data){worker.onmessage({data})}),worker.on("error",function(data){worker.onerror(data)}),worker.on("exit",function(data){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir2,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack8=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer10=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer10,0)),buffer10.length=0):buffer10.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.V).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.W).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.X).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.fa).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.ga).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ha).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ia).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ja).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ka).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.la).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.ma).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.na).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.oa).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.pa).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.qa).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.sa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ta).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.ua).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.va).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.wa).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.xa).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.ya).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.za).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Aa).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.Ba).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Ca).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Da).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Ea).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Fa).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ga).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Ha).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ia).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Ja).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ka).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.La).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ma).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Na).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Oa).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.Pa).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Qa).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Ra).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Ta).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Ua).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.Va).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Wa).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Xa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ya).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Za).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm._a).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.$a).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.ab).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.bb).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.cb).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm.db).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.eb).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.fb).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.gb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.mb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.nb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.ob).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.pb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.qb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.rb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.sb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.tb).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.ub).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.vb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.wb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.xb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.yb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.zb).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.Ab).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:149,maximum:149+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer10){HEAP8.set(array2,buffer10)}var buffer9,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer9=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer10=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer10,0)),buffer10.length=0):buffer10.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Floor).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.LeakyRelu).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.Mean).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.Neg).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Prod).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.RealDiv).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.TopK).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min9,max11){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis,batchDims=0){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean8,variance,offset,scale22,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse13){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real6,imag6){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min9,x,max11){return Math.max(min9,Math.min(x,max11))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum29=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment16){ENV=environment16}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolGrad="AvgPoolGrad",AvgPool3D="AvgPool3D",AvgPool3DGrad="AvgPool3DGrad",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",Bincount="Bincount",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",ComplexAbs="ComplexAbs",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DenseBincount="DenseBincount",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",RealDiv="RealDiv",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",ExpandDims="ExpandDims",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",LeakyRelu="LeakyRelu",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNGrad="LRNGrad",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolGrad="MaxPoolGrad",MaxPool3D="MaxPool3D",MaxPool3DGrad="MaxPool3DGrad",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multinomial="Multinomial",Multiply="Multiply",Neg="Neg",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",Pack="Pack",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",Select="Select",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config2]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config2)}return result}function registerKernel(config2){let{kernelName,backendName}=config2,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config2)}function registerGradient(config2){let{kernelName}=config2;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config2)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);if(env().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node2.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node2=tape2[i],nodeInputs=node2.inputs;for(let j=0;j=0;i--){let node2=filteredTape[i],dys=[];if(node2.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node2.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node2.kernelName}.`);let inputGradients=node2.gradient(dys);for(let inputName in node2.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node2.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node2.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node2.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add32(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` `)),lines.join(` `)}function computeMaxSizePerColumn(vals,shape,dtype,strides){let n=sizeFromShape(shape),numCols=strides[strides.length-1],padPerCol=new Array(numCols).fill(0),rank=shape.length,valuesOrTuples=dtype==="complex64"?createComplexTuples(vals):vals;if(rank>1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i{let batchSize=x2.shape[0],inSize2=x2.shape[1],windowSize=backend_util_exports.segment_util.segOpComputeOptimalWindowSize(inSize2,numSegments2),segOpInfo={windowSize,inSize:inSize2,batchSize,numSegments:numSegments2},program=new SegmentOpProgram(segOpInfo,segOpType),output=backend3.compileAndRun(program,[x2,segmentIds2],dtype);if(toDispose.push(output),output.shape[1]===numSegments2)return output;let rangeInfo=range5({backend:backend3,attrs:{start:0,stop:numSegments2,step:1,dtype:"float32"}}),tileInfo=tile8({inputs:{x:rangeInfo},backend:backend3,attrs:{reps:[inSize2/windowSize]}});toDispose.push(rangeInfo),toDispose.push(tileInfo);let result2=segOpCompute(output,segOpType,tileInfo,dtype,numSegments2);return result2},segOpResult=segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments),reshaped=reshape76({inputs:{x:segOpResult},backend:backend3,attrs:{shape:outShape}}),result=reshaped;if(permutation!=null){toDispose.push(reshaped);let perm=backend_util_exports.getUndoAxesPermutation(permutation);result=transpose10({inputs:{x:result},backend:backend3,attrs:{perm}})}return toDispose.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig2={kernelName:UnsortedSegmentSum,backendName:"webgl",kernelFunc:unsortedSegmentSum3},kernelConfigs2=[LRNConfig,LRNGradConfig,_fusedMatMulConfig2,absConfig2,acosConfig2,acoshConfig2,addConfig2,addNConfig2,allConfig2,anyConfig2,argMaxConfig2,argMinConfig2,asinConfig2,asinhConfig2,atan2Config2,atanConfig2,atanhConfig2,avgPool3DConfig2,avgPoolConfig2,avgPoolGrad3DConfig,avgPoolGradConfig3,batchMatMulConfig2,batchNormConfig2,batchToSpaceNDConfig2,bincountConfig2,castConfig2,ceilConfig2,clipByValueConfig,complexAbsConfig2,complexConfig2,concatConfig2,conv2DBackpropFilterConfig2,conv2DBackpropInputConfig2,conv2DConfig2,conv3DBackpropFilterV2Config2,conv3DBackpropInputConfig,conv3DConfig2,cosConfig2,coshConfig2,cropAndResizeConfig2,cumsumConfig2,denseBincountConfig2,depthToSpaceConfig2,depthwiseConv2dNativeBackpropFilterConfig2,depthwiseConv2dNativeBackpropInputConfig2,depthwiseConv2dNativeConfig2,diagConfig2,dilation2DConfig,eluConfig2,eluGradConfig3,equalConfig2,erfConfig2,expConfig2,expandDimsConfig2,expm1Config2,fftConfig2,fillConfig2,flipLeftRightConfig2,floorConfig2,floorDivConfig2,fromPixelsConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig2,gatherV2Config2,greaterConfig2,greaterEqualConfig2,identityConfig2,ifftConfig2,imagConfig2,isFiniteConfig2,isInfConfig2,isNaNConfig2,leakyReluConfig2,lessConfig2,lessEqualConfig2,linSpaceConfig2,log1pConfig2,logConfig2,logicalAndConfig2,logicalNotConfig2,logicalOrConfig2,maxConfig2,maxPool3DConfig2,maxPoolConfig2,maxPoolGrad3DConfig,maxPoolGradConfig3,maxPoolWithArgmaxConfig2,maximumConfig2,meanConfig2,minConfig2,minimumConfig2,mirrorPadConfig2,modConfig2,multinomialConfig2,multiplyConfig2,negConfig2,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config2,nonMaxSuppressionV5Config2,notEqualConfig2,oneHotConfig2,onesLikeConfig2,packConfig2,padV2Config2,powConfig2,preluConfig2,prodConfig2,rangeConfig2,realConfig2,realDivConfig2,reciprocalConfig2,relu6Config2,reluConfig2,reshapeConfig2,resizeBilinearConfig2,resizeBilinearGradConfig3,resizeNearestNeighborConfig2,resizeNearestNeighborGradConfig3,reverseConfig2,rotateWithOffsetConfig2,roundConfig2,rsqrtConfig2,scatterNdConfig2,selectConfig2,seluConfig2,sigmoidConfig2,signConfig2,sinConfig2,sinhConfig2,sliceConfig2,softmaxConfig2,softplusConfig2,spaceToBatchNDConfig2,sparseToDenseConfig2,splitVConfig2,sqrtConfig2,squareConfig2,squaredDifferenceConfig2,stepConfig2,stridedSliceConfig2,subConfig2,sumConfig2,tanConfig2,tanhConfig2,tileConfig2,topKConfig2,transposeConfig2,uniqueConfig2,unpackConfig2,unsortedSegmentSumConfig2,zerosLikeConfig2];for(let kernelConfig of kernelConfigs2)registerKernel(kernelConfig);var version12="2.8.1",version14={"tfjs-core":version,"tfjs-backend-cpu":version10,"tfjs-backend-webgl":version11,"tfjs-data":version8,"tfjs-layers":version2,"tfjs-converter":version6,tfjs:version12},CppDType;(function(CppDType2){CppDType2[CppDType2.float32=0]="float32",CppDType2[CppDType2.int32=1]="int32",CppDType2[CppDType2.bool=2]="bool",CppDType2[CppDType2.string=3]="string",CppDType2[CppDType2.complex64=4]="complex64"})(CppDType||(CppDType={}));var FusableActivation;(function(FusableActivation2){FusableActivation2[FusableActivation2.linear=0]="linear",FusableActivation2[FusableActivation2.relu=1]="relu",FusableActivation2[FusableActivation2.relu6=2]="relu6",FusableActivation2[FusableActivation2.prelu=3]="prelu",FusableActivation2[FusableActivation2.leakyrelu=4]="leakyrelu"})(FusableActivation||(FusableActivation={}));var wasmFusedMatMul;function setup(backend3){wasmFusedMatMul=backend3.wasm.cwrap(_FusedMatMul,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function fusedBatchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b,bias,preluActivationWeights}=inputs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs,aId=backend3.dataIdMap.get(a.dataId).id,bId=backend3.dataIdMap.get(b.dataId).id,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${biasData.shape.length}.`);biasId=biasData.id}let preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id,fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let leftDim=transposeA?a.shape[2]:a.shape[1],rightDim=transposeB?b.shape[1]:b.shape[2],batchDim=a.shape[0],out=backend3.makeOutput([batchDim,leftDim,rightDim],a.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer);return wasmFusedMatMul(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,transposeA,transposeB,fusedActivation,biasId,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedMatMulConfig={kernelName:_FusedMatMul,backendName:"wasm",setupFunc:setup,kernelFunc:fusedBatchMatMul};function createUnaryKernelConfig(kernelName){let wasmFunc9;function setupFunc3(backend3){wasmFunc9=backend3.wasm.cwrap(kernelName,null,["number","number"])}function kernelFunc3(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc9(xId,outId),out}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var absConfig3=createUnaryKernelConfig(Abs);function createBinaryKernelConfig(kernelName,supportsFullBroadcast17,dtype){let wasmFunc9;function setupFunc3(backend3){wasmFunc9=backend3.wasm.cwrap(kernelName,null,["number","array","number","number","array","number","number","number"])}function kernelFunc3(args){let{backend:backend3,inputs}=args,{a,b}=inputs,aId=backend3.dataIdMap.get(a.dataId).id,bId=backend3.dataIdMap.get(b.dataId).id,outputType=dtype!=null?dtype:a.dtype,newShape=backend_util_exports.assertAndGetBroadcastShape(a.shape,b.shape),out=backend3.makeOutput(newShape,outputType);if(util_exports.sizeFromShape(newShape)===0)return out;let aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer),outId=backend3.dataIdMap.get(out.dataId).id,kernelFunc4=()=>wasmFunc9(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig3={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity4},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose11(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose11,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape77},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul3(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape77({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape77({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig3={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul3};function cast47(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast47},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig2={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat17(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),$inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity4({inputs:{x:$inputs[0]},backend:backend3});let out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose11({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse13?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose11({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig3={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum7},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace4(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig3={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace4},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d5(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig3={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d5},supportsFullBroadcast2=!1,equalConfig3=createBinaryKernelConfig(Equal,supportsFullBroadcast2,"bool"),expConfig3=createUnaryKernelConfig(Exp);function expandDims5(args){let{inputs,attrs,backend:backend3}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape77({inputs:{x:input2},backend:backend3,attrs:{shape:newShape}})}var expandDimsConfig3={kernelName:ExpandDims,backendName:"wasm",kernelFunc:expandDims5};function fill6(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig3={kernelName:Fill,backendName:"wasm",kernelFunc:fill6},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},floorConfig3=createUnaryKernelConfig(Floor),supportsFullBroadcast3=!1,floorDivConfig3=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast3),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean8,variance,offset,scale:scale22}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean8.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale22!=null?backend3.dataIdMap.get(scale22.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d2(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedConv2DConfig3={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d2},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedDepthwiseConv2DConfig3={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd3(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig3={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd3},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV23(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis,batchDims}=attrs,parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis,batchDims),flattenX=reshape77({inputs:{x},attrs:{shape:[shapeInfo.batchSize,shapeInfo.outerSize,shapeInfo.dimSize,shapeInfo.sliceSize]},backend:backend3}),indicesSize=util_exports.sizeFromShape(indices.shape),flattenIndex=reshape77({inputs:{x:indices},attrs:{shape:[shapeInfo.batchSize,indicesSize/shapeInfo.batchSize]},backend:backend3}),flattenOutputShape=[shapeInfo.batchSize,shapeInfo.outerSize,indicesSize/shapeInfo.batchSize,shapeInfo.sliceSize],out=backend3.makeOutput(flattenOutputShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let stridesSize=flattenX.shape.length-1,xData=backend3.dataIdMap.get(flattenX.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(flattenIndex.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenX.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenOutputShape)).buffer);return wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,shapeInfo.batchSize,outStridesBytes,outId),out.shape=shapeInfo.outputShape,out}var gatherV2Config3={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV23},supportsFullBroadcast4=!1,greaterConfig3=createBinaryKernelConfig(Greater,supportsFullBroadcast4,"bool"),supportsFullBroadcast5=!1,greaterEqualConfig3=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast5,"bool"),wasmFunc3;function setupFunc2(backend3){wasmFunc3=backend3.wasm.cwrap(LeakyRelu,null,["number","number","number"])}function leakyRelu4(args){let{inputs:{x},attrs:{alpha},backend:backend3}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmFunc3(xId,alpha,outId)}return out}var leakyReluConfig3={kernelName:LeakyRelu,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:leakyRelu4},supportsFullBroadcast6=!1,lessConfig3=createBinaryKernelConfig(Less,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessEqualConfig3=createBinaryKernelConfig(LessEqual,supportsFullBroadcast7,"bool"),logConfig3=createUnaryKernelConfig(Log),supportsFullBroadcast8=!1,logicalAndConfig3=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast8,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max10(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max10},supportsFullBroadcast9=!1,maximumConfig3=createBinaryKernelConfig(Maximum,supportsFullBroadcast9),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMean;function setup21(backend3){wasmMean=backend3.wasm.cwrap(Mean,null,["number, number, number"])}function mean7(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("mean",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),castedInput=input2;input2.dtype!=="float32"&&(castedInput=cast47({backend:backend3,inputs:{x:input2},attrs:{dtype:"float32"}}),inputId=backend3.dataIdMap.get(castedInput.dataId).id);let out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMean(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return input2.dtype!=="float32"&&backend3.disposeData(castedInput.dataId),out}var meanConfig3={kernelName:Mean,backendName:"wasm",setupFunc:setup21,kernelFunc:mean7},wasmMin;function setup22(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min8(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig3={kernelName:Min,backendName:"wasm",setupFunc:setup22,kernelFunc:min8},supportsFullBroadcast10=!1,minimumConfig3=createBinaryKernelConfig(Minimum,supportsFullBroadcast10),supportsFullBroadcast11=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast11),negConfig3=createUnaryKernelConfig(Neg);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config3={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup23,kernelFunc},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV43(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup24,kernelFunc:nonMaxSuppressionV43},wasmFunc6;function setup25(backend3){wasmFunc6=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc6(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup25,kernelFunc:kernelFunc2},supportsFullBroadcast12=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast12,"bool"),wasmOneHot;function setup26(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot4(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig3={kernelName:OneHot,backendName:"wasm",setupFunc:setup26,kernelFunc:oneHot4};function onesLike4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig3={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike4};function pack3(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims5({inputs:{input:inputs[0]},backend:backend3,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=inputs.map(t=>expandDims5({inputs:{input:t},backend:backend3,attrs:{dim:axis}}));return concat17({inputs:expandedTensors,backend:backend3,attrs:{axis}})}var packConfig3={kernelName:Pack,backendName:"wasm",kernelFunc:pack3},wasmPadV2;function setup27(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad9(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config3={kernelName:PadV2,backendName:"wasm",kernelFunc:pad9,setupFunc:setup27},supportsFullBroadcast13=!1,powConfig3=createBinaryKernelConfig(Pow,supportsFullBroadcast13),wasmPrelu;function setup28(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu8(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig3={kernelName:Prelu,backendName:"wasm",setupFunc:setup28,kernelFunc:prelu8},wasmProd;function setup29(backend3){wasmProd=backend3.wasm.cwrap(Prod,null,["number","number","number","number"])}function prod6(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("prod",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmProd(inputId,reduceSize,CppDType[out.dtype],outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var prodConfig3={kernelName:Prod,backendName:"wasm",setupFunc:setup29,kernelFunc:prod6},range6=args=>{let{backend:backend3,attrs}=args,{start,stop,step:step9,dtype}=attrs,values=rangeImpl(start,stop,step9,dtype),out=backend3.makeOutput([values.length],dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.set(values),out},rangeConfig3={kernelName:Range,backendName:"wasm",kernelFunc:range6},supportsFullBroadcast14=!0,realDivConfig3=createBinaryKernelConfig(RealDiv,supportsFullBroadcast14),reluConfig3=createUnaryKernelConfig(Relu),relu6Config3=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup30(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number","number"])}function resizeBilinear4(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast47({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,halfPixelCenters?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig3={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup30,kernelFunc:resizeBilinear4},wasmReverse;function setup31(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse12(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity4({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape77({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig3={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse12,setupFunc:setup31},wasmRotate;function setup32(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup32},rsqrtConfig3=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup33(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd3(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig3={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup33,kernelFunc:scatterNd3},wasmSelect;function setup34(backend3){wasmSelect=backend3.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function select3(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectConfig3={kernelName:Select,backendName:"wasm",kernelFunc:select3,setupFunc:setup34},wasmFunc7;function setup35(backend3){wasmFunc7=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid8(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId),out}var sigmoidConfig3={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup35,kernelFunc:sigmoid8},sinConfig3=createUnaryKernelConfig(Sin);function slice18(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.readSync(x.dataId),out=backend3.makeOutput(size_,x.dtype),xStrides=util_exports.computeStrides(x.shape),outData=backend3.dataIdMap.get(out.dataId);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);if(x.dtype==="string")outData.stringBytes=xVals.slice(flatOffset,flatOffset+util_exports.sizeFromShape(size_));else{let outVals2=backend3.typedArrayFromHeap(out);outVals2.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_)))}return out}if(x.dtype==="string"){let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);return outData.stringBytes=res,out}let outVals=backend3.typedArrayFromHeap(out),rank=x.shape.length;if(rank===2)slice2d2(xVals,xStrides[0],outVals,begin_,size_);else if(rank===3)slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_);else if(rank===4)slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_);else{let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);outVals.set(res)}return out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;i{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice18({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig3={kernelName:SplitV,backendName:"wasm",kernelFunc:splitV3},sqrtConfig3=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup37(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice4(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape77({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice18({inputs:{x},attrs:{begin,size},backend:backend3});return reshape77({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape77({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig3={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup37,kernelFunc:stridedSlice4},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup38(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum28(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig3={kernelName:Sum,backendName:"wasm",setupFunc:setup38,kernelFunc:sum28},tanhConfig3=createUnaryKernelConfig(Tanh),wasmTile;function setup39(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile9(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i{let{x}=inputs,{k,sorted}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),outputShape=x.shape.slice();outputShape[outputShape.length-1]=k;let outValues=backend3.makeOutput(outputShape,x.dtype),outValuesId=backend3.dataIdMap.get(outValues.dataId).id,outIndices=backend3.makeOutput(outputShape,"int32"),outIndicesId=backend3.dataIdMap.get(outIndices.dataId).id;return wasmTopK(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],k,sorted,outValuesId,outIndicesId),[outValues,outIndices]},topKConfig3={kernelName:TopK,backendName:"wasm",setupFunc:setup40,kernelFunc:topk4};function unpack3(args){let{inputs,backend:backend3,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let numOutputs=value.shape[axis],rank=value.shape.length,outShape=new Array(rank-1),outIndex=0;for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig3={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack3};function zerosLike4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig3={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike4},kernelConfigs3=[absConfig3,addConfig3,addNConfig3,argMaxConfig3,avgPoolConfig3,batchMatMulConfig3,castConfig3,clipByValueConfig2,concatConfig3,conv2DConfig3,conv2DBackpropInputConfig3,cosConfig3,cropAndResizeConfig3,cumsumConfig3,depthToSpaceConfig3,depthwiseConv2dNativeConfig3,equalConfig3,expConfig3,expandDimsConfig3,fillConfig3,flipLeftRightConfig3,floorConfig3,floorDivConfig3,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig3,fusedDepthwiseConv2DConfig3,gatherNdConfig3,gatherV2Config3,greaterConfig3,greaterEqualConfig3,identityConfig3,leakyReluConfig3,lessConfig3,lessEqualConfig3,logConfig3,logicalAndConfig3,maxConfig3,maximumConfig3,maxPoolConfig3,meanConfig3,minConfig3,minimumConfig3,multiplyConfig3,negConfig3,nonMaxSuppressionV3Config3,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig3,onesLikeConfig3,packConfig3,padV2Config3,powConfig3,preluConfig3,prodConfig3,rangeConfig3,realDivConfig3,reluConfig3,relu6Config3,reshapeConfig3,resizeBilinearConfig3,reverseConfig3,rotateWithOffsetConfig3,rsqrtConfig3,scatterNdConfig3,selectConfig3,sigmoidConfig3,sinConfig3,sliceConfig3,softmaxConfig3,splitVConfig3,sqrtConfig3,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig3,subConfig3,sumConfig3,tanhConfig3,tileConfig3,topKConfig3,transposeConfig3,unpackConfig3,zerosLikeConfig3];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data=this.dataIdMap.get(dataId);this.wasm._free(data.memoryOffset),this.wasm.tfjs.disposeData(data.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer9=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer9,memoryOffset,size);case"int32":return new Int32Array(buffer9,memoryOffset,size);case"bool":return new Uint8Array(buffer9,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer9,dtype){switch(dtype){case"float32":return new Float32Array(buffer9);case"int32":return new Int32Array(buffer9);case"bool":return new Uint8Array(buffer9);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version15="2.8.1",WASM_PRIORITY=2;registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);var draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven2,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range2,round:()=>round3});var Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor,dim){return tensor instanceof Tensor&&tensor.shape.length===dim}function isTensor1D(tensor){return isTensor(tensor,1)}function isTensor2D(tensor){return isTensor(tensor,2)}function isTensor3D(tensor){return isTensor(tensor,3)}function isTensor4D(tensor){return isTensor(tensor,4)}function isFloat(num){return num%1!==0}function isEven2(num){return num%2===0}function round3(num,prec=2){let f=Math.pow(10,prec);return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale3=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale3),Math.round(height*scale3))}function getCenterPoint(pts){return pts.reduce((sum3,pt)=>sum3.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range2(num,start,step2){return Array(num).fill(0).map((_,i)=>start+i*step2)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&0<=num&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min2,x)=>xymax2max2({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}function normalize(x,meanRgb){return tidy(()=>{let[r,g,b]=meanRgb,avg_r=fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=concat([avg_r,avg_g,avg_b],3);return sub(x,avg_rgb)})}function padToSquare(imgTensor,isCenterImage=!1){return tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmount2=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmount2,fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>cast(t,"float32"));return concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array2=inputArray.slice();for(let i=array2.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array2[i];array2[i]=array2[j],array2[j]=x}return array2}function sigmoid2(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},options);return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round3(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json18){let descriptors=json18.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json18.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return Object.assign({},sourceObj,extension)}function createBrowserEnv(){let fetch3=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")},readFile=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:fetch3,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?function(filePath){return new Promise((res,rej)=>{fs.readFile(filePath,function(err,buffer2){return err?rej(err):res(buffer2)})})}:function(){throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=function(){if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=function(){if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch3=global.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch:fetch3,...fileSystem}}function isBrowser2(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env17){environment=env17}function initialize(){if(isBrowser2())return setEnv(createBrowserEnv());if(isNodejs.isNodejs())return setEnv(createNodejsEnv())}function monkeyPatch(env17){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env17;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env17.createCanvasElement||(()=>new Canvas),environment.createImageElement=env17.createImageElement||(()=>new Image),environment.ImageData=env17.ImageData||environment.ImageData,environment.Video=env17.Video||environment.Video,environment.fetch=env17.fetch||environment.fetch,environment.readFile=env17.readFile||environment.readFile}var env2={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser:isBrowser2,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env2.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env2.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions(Object.assign({},defaultDrawLabelOptions,drawLabelOptions))}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round3(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}function isMediaLoaded(media){let{Image,Video}=env2.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env2.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{if(!(buf instanceof Blob))return reject("bufferToImage - expected buf to be of type: Blob");let reader=new FileReader;reader.onload=()=>{if(typeof reader.result!="string")return reject("bufferToImage - expected reader.result to be a string, in onload");let img=env2.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input2){let{Image,Video}=env2.getEnv();return input2 instanceof Image?new Dimensions(input2.naturalWidth,input2.naturalHeight):input2 instanceof Video?new Dimensions(input2.videoWidth,input2.videoHeight):new Dimensions(input2.width,input2.height)}function createCanvas2({width,height}){let{createCanvasElement}=env2.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env2.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas2({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env2.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await browser_exports.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input2){let{Image,Canvas,Video}=env2.getEnv();return input2 instanceof Image||input2 instanceof Canvas||input2 instanceof Video}function imageToSquare(input2,inputSize,centerImage=!1){let{Image,Canvas}=env2.getEnv();if(!(input2 instanceof Image||input2 instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input2),scale3=inputSize/Math.max(dims.height,dims.width),width=scale3*dims.width,height=scale3*dims.height,targetCanvas=createCanvas2({width:inputSize,height:inputSize}),inputCanvas=input2 instanceof Canvas?input2:createCanvasFromMedia(input2),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input2)){this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape;return}if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape.slice(1);return}let canvas=input2 instanceof env2.getEnv().Canvas?input2:createCanvasFromMedia(input2);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range2(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tidy(()=>{let inputTensors=range2(this.batchSize,0,1).map(batchIdx=>{let input2=this.getInput(batchIdx);if(input2 instanceof Tensor){let imgTensor=isTensor4D(input2)?input2:input2.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input2 instanceof env2.getEnv().Canvas)return browser_exports.fromPixels(imageToSquare(input2,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input2}`)}),batchTensor=stack(inputTensors.map(t=>cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input2,i)=>{if(!isMediaElement(input2)&&!isTensor3D(input2)&&!isTensor4D(input2))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input2=>isMediaElement(input2)&&awaitMediaLoaded(input2))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input2,detections){let{Canvas}=env2.getEnv(),canvas=input2;if(!(input2 instanceof Canvas)){let netInput=await toNetInput(input2);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas2({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init2){let fetch3=env2.getEnv().fetch,res=await fetch3(url,init2);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return io_exports.loadWeights(manifest,modelBaseUri)}function matchDimensions(input2,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input2.width=width,input2.height=height,{width,height}}var NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof Variable))}variable(){this.getFrozenParams().forEach(({path,tensor})=>{this.reassignParamFromPath(path,tensor.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable2})=>{let tensor=tensor4(variable2.dataSync());variable2.dispose(),this.reassignParamFromPath(path,tensor)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor})=>Array.from(tensor.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env2.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights2=io_exports.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights2(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}};function depthwiseSeparableConv(x,params,stride){return tidy(()=>{let out=separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=add2(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return relu(add2(out1,add2(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=relu(add2(out1,add2(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return relu(add2(out1,add2(out2,add2(out3,out4))))})}function convLayer(x,params,padding="same",withRelu=!1){return tidy(()=>{let out=add2(conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}function extractConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,filterSize,mappedPrefix){let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}function extractFCParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let fc_weights=tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let depthwise_filter=tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return function(prefix){let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return function(originalPath,paramRank,mappedPath){let tensor=weightMap[originalPath];if(!isTensor(tensor,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return function(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}};function fullyConnectedLayer(x,params){return tidy(()=>add2(matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input2){return tidy(()=>softmax(this.runNet(input2)))}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictExpressions(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return Object.assign({},sourceObj,extension)}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(expr2=>expr2.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(expr2=>`${expr2.expression} (${round3(expr2.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return Object.assign({},sourceObj,extension)}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range2(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range2(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return add2(conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=maxPool(out,[3,3],[2,2],"same"),out=add2(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv2,[1,1]),out=add2(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(256)),out=relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range2(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2,pooled=avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input2){return tidy(()=>{let{age,gender}=this.runNet(input2);return{age,gender:softmax(gender)}})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictAgeAndGender(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),ages=unstack(out.age),genders=unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale3=inputSize/Math.max(height,width);return{width:width*scale3,height:height*scale3}}),batchSize=inputDimensions.length;return tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>stack([fill([68],fillX,"float32"),fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding2=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding2(batchIdx,(w,h)=>wgetPadding2(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input2){return tidy(()=>{let out=this.runNet(input2);return this.postProcess(out,input2.inputSize,input2.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async detectLandmarks(input2){let netInput=await toNetInput(input2),landmarkTensors=tidy(()=>unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven2(i)),yCoords=landmarksArray.filter((_,i)=>!isEven2(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};function scale2(x,params){return add2(mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=conv2d(x,filters,strides,padding);return out=add2(out,bias),out=scale2(out,params.scale),withRelu?relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tidy(()=>transpose(tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tensor1d(extractWeights(numWeights)),biases=tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale3=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale3}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tidy(()=>transpose(tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale3=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale3}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),fc=weightMap.fc;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=add2(out,x),out=relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=avgPool(x,2,2,"valid"),zeros2=zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=zeros(padShapeX);out=concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=zeros(padShapeY);out=concat([out,zerosH],2)}return pooled=isPad?concat([pooled,zeros2],3):pooled,out=add2(pooled,out),out=relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(256)),out=convDown(normalized,params.conv32_down);out=maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=matMul(globalAvg,params.fc);return fullyConnected})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async computeFaceDescriptor(input2){let netInput=await toNetInput(input2),faceDescriptorTensors=tidy(()=>unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return Object.assign({},sourceObj,extension)}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return Object.assign({},sourceObj,extension)}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return Object.assign({},sourceObj,extension)}function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tensor1d(extractWeights(numChannels)),batch_norm_offset=tensor1d(extractWeights(numChannels)),batch_norm_mean=tensor1d(extractWeights(numChannels)),batch_norm_variance=tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function pointwiseConvLayer(x,params,strides){return tidy(()=>{let out=conv2d(x,params.filters,strides,"same");return out=add2(out,params.batch_norm_offset),clipByValue(out,0,6)})}var epsilon3=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tidy(()=>{let out=depthwiseConv2d(x,params.filters,strides,"same");return out=batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon3),clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function nonMaxSuppression3(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function getCenterCoordinatesAndSizesLayer(x){let vec=unstack(transpose(x,[1,0])),sizes=[sub(vec[2],vec[0]),sub(vec[3],vec[1])],centers=[add2(vec[0],div(sizes[0],scalar(2))),add2(vec[1],div(sizes[1],scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=unstack(transpose(x1,[1,0])),div0_out=div(mul(exp(div(vec[2],scalar(5))),sizes[0]),scalar(2)),add0_out=add2(mul(div(vec[0],scalar(10)),sizes[0]),centers[0]),div1_out=div(mul(exp(div(vec[3],scalar(5))),sizes[1]),scalar(2)),add1_out=add2(mul(div(vec[1],scalar(10)),sizes[1]),centers[1]);return transpose(stack([sub(add0_out,div0_out),sub(add1_out,div1_out),add2(add0_out,div0_out),add2(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(reshape(tile(params.extra_dim,[batchSize,1,1]),[-1,4]),reshape(boxPredictions,[-1,4]));boxes=reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=sigmoid(slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=unstack(boxes),scoresByBatch=unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}function boxPredictionLayer(x,params){return tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input2){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(512,!1),"float32"),x=sub(mul(batchTensor,scalar(.007843137718737125)),scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async locateFaces(input2,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input2),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression3(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME2="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",isNumber2=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber2(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber2(a.x)&&isNumber2(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber2)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}function leaky(x){return tidy(()=>{let min2=mul(x,scalar(.10000000149011612));return add2(relu(sub(x,min2)),min2)})}function convWithBatchNorm(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=conv2d(out,params.conv.filters,[1,1],"valid"),out=sub(out,params.bn.sub),out=mul(out,params.bn.truediv),out=add2(out,params.conv.bias),leaky(out)})}function depthwiseSeparableConv3(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=add2(out,params.bias),leaky(out)})}function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub2=tensor1d(extractWeights(size)),truediv=tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub2,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub2=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub2,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2SizeType;(function(TinyYolov2SizeType2){TinyYolov2SizeType2[TinyYolov2SizeType2.XS=224]="XS",TinyYolov2SizeType2[TinyYolov2SizeType2.SM=320]="SM",TinyYolov2SizeType2[TinyYolov2SizeType2.MD=416]="MD",TinyYolov2SizeType2[TinyYolov2SizeType2.LG=608]="LG"})(TinyYolov2SizeType||(TinyYolov2SizeType={}));var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input2,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input2,inputSize){return await this.forwardInput(await toNetInput(input2),inputSize)}async detect(input2,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input2),out=await this.forwardInput(netInput,inputSize),out0=tidy(()=>unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression2(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid2(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid2(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,width2=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,height2=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-width2/2,y=ctY-height2/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+width2,y+height2),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max2,curr)=>max2.classScore>curr.classScore?max2:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2=Object.assign({},{withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"]},withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0});super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){let objectDetections=await this.detect(input2,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME2}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};async function extractAllFacesAndComputeResults(parentResults,input2,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input2 instanceof Tensor?await extractFaceTensors(input2,faceBoxes):await extractFaces(input2,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input2,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input2,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){let objectDetections=await this.detect(input2,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input2,options)=>nets.ssdMobilenetv1.locateFaces(input2,options),tinyFaceDetector=(input2,options)=>nets.tinyFaceDetector.locateFaces(input2,options),tinyYolov23=(input2,options)=>nets.tinyYolov2.locateFaces(input2,options),detectFaceLandmarks=input2=>nets.faceLandmark68Net.detectLandmarks(input2),detectFaceLandmarksTiny=input2=>nets.faceLandmark68TinyNet.detectLandmarks(input2),computeFaceDescriptor=input2=>nets.faceRecognitionNet.computeFaceDescriptor(input2),recognizeFaceExpressions=input2=>nets.faceExpressionNet.predictExpressions(input2),predictAgeAndGender=input2=>nets.ageGenderNet.predictAgeAndGender(input2),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input2){super();this.parentTask=parentTask;this.input=input2}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input2,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input2;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input2,options=new SsdMobilenetv1Options){super();this.input=input2;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input:input2,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input3=>nets.tinyFaceDetector.locateFaces(input3,options):options instanceof SsdMobilenetv1Options?input3=>nets.ssdMobilenetv1.locateFaces(input3,options):options instanceof TinyYolov2Options?input3=>nets.tinyYolov2.locateFaces(input3,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input2)}runAndExtendWithFaceDetections(){return new Promise(async res=>{let detections=await this.run();return res(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async res=>{let detection=await this.run();return res(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input2,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input2,options)}function detectAllFaces(input2,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input2,options)}async function allFacesSsdMobilenetv1(input2,minConfidence){return console.warn("allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input2,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input2,forwardParams={}){return console.warn("allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input2,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count2=1,createUniqueLabel=()=>`person ${count2++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json18){let labeledDescriptors=json18.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json18.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var version3="0.9.5",node=typeof process!="undefined",browser=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version4={faceapi:version3,node,browser};return src_exports;})(); + `}};function unsortedSegmentSum3(args){let{inputs,backend:backend3,attrs}=args,{x,segmentIds}=inputs,{numSegments}=attrs,xRank=x.shape.length,toDispose=[],axis=0,permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!=null&&(permutedX=transpose10({inputs:{x},backend:backend3,attrs:{perm:permutation}}),toDispose.push(permutedX),axis=backend_util_exports.getInnerMostAxes(1,xRank)[0]);let outShape=backend_util_exports.segment_util.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=reshape76({inputs:{x:permutedX},backend:backend3,attrs:{shape:[-1,inSize]}});toDispose.push(a2D);let outputDType=sumOutType(x.dtype),segOpCompute=(x2,segOpType,segmentIds2,dtype,numSegments2)=>{let batchSize=x2.shape[0],inSize2=x2.shape[1],windowSize=backend_util_exports.segment_util.segOpComputeOptimalWindowSize(inSize2,numSegments2),segOpInfo={windowSize,inSize:inSize2,batchSize,numSegments:numSegments2},program=new SegmentOpProgram(segOpInfo,segOpType),output=backend3.compileAndRun(program,[x2,segmentIds2],dtype);if(toDispose.push(output),output.shape[1]===numSegments2)return output;let rangeInfo=range5({backend:backend3,attrs:{start:0,stop:numSegments2,step:1,dtype:"float32"}}),tileInfo=tile8({inputs:{x:rangeInfo},backend:backend3,attrs:{reps:[inSize2/windowSize]}});toDispose.push(rangeInfo),toDispose.push(tileInfo);let result2=segOpCompute(output,segOpType,tileInfo,dtype,numSegments2);return result2},segOpResult=segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments),reshaped=reshape76({inputs:{x:segOpResult},backend:backend3,attrs:{shape:outShape}}),result=reshaped;if(permutation!=null){toDispose.push(reshaped);let perm=backend_util_exports.getUndoAxesPermutation(permutation);result=transpose10({inputs:{x:result},backend:backend3,attrs:{perm}})}return toDispose.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig2={kernelName:UnsortedSegmentSum,backendName:"webgl",kernelFunc:unsortedSegmentSum3},kernelConfigs2=[LRNConfig,LRNGradConfig,_fusedMatMulConfig2,absConfig2,acosConfig2,acoshConfig2,addConfig2,addNConfig2,allConfig2,anyConfig2,argMaxConfig2,argMinConfig2,asinConfig2,asinhConfig2,atan2Config2,atanConfig2,atanhConfig2,avgPool3DConfig2,avgPoolConfig2,avgPoolGrad3DConfig,avgPoolGradConfig3,batchMatMulConfig2,batchNormConfig2,batchToSpaceNDConfig2,bincountConfig2,castConfig2,ceilConfig2,clipByValueConfig,complexAbsConfig2,complexConfig2,concatConfig2,conv2DBackpropFilterConfig2,conv2DBackpropInputConfig2,conv2DConfig2,conv3DBackpropFilterV2Config2,conv3DBackpropInputConfig,conv3DConfig2,cosConfig2,coshConfig2,cropAndResizeConfig2,cumsumConfig2,denseBincountConfig2,depthToSpaceConfig2,depthwiseConv2dNativeBackpropFilterConfig2,depthwiseConv2dNativeBackpropInputConfig2,depthwiseConv2dNativeConfig2,diagConfig2,dilation2DConfig,eluConfig2,eluGradConfig3,equalConfig2,erfConfig2,expConfig2,expandDimsConfig2,expm1Config2,fftConfig2,fillConfig2,flipLeftRightConfig2,floorConfig2,floorDivConfig2,fromPixelsConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig2,gatherV2Config2,greaterConfig2,greaterEqualConfig2,identityConfig2,ifftConfig2,imagConfig2,isFiniteConfig2,isInfConfig2,isNaNConfig2,leakyReluConfig2,lessConfig2,lessEqualConfig2,linSpaceConfig2,log1pConfig2,logConfig2,logicalAndConfig2,logicalNotConfig2,logicalOrConfig2,maxConfig2,maxPool3DConfig2,maxPoolConfig2,maxPoolGrad3DConfig,maxPoolGradConfig3,maxPoolWithArgmaxConfig2,maximumConfig2,meanConfig2,minConfig2,minimumConfig2,mirrorPadConfig2,modConfig2,multinomialConfig2,multiplyConfig2,negConfig2,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config2,nonMaxSuppressionV5Config2,notEqualConfig2,oneHotConfig2,onesLikeConfig2,packConfig2,padV2Config2,powConfig2,preluConfig2,prodConfig2,rangeConfig2,realConfig2,realDivConfig2,reciprocalConfig2,relu6Config2,reluConfig2,reshapeConfig2,resizeBilinearConfig2,resizeBilinearGradConfig3,resizeNearestNeighborConfig2,resizeNearestNeighborGradConfig3,reverseConfig2,rotateWithOffsetConfig2,roundConfig2,rsqrtConfig2,scatterNdConfig2,selectConfig2,seluConfig2,sigmoidConfig2,signConfig2,sinConfig2,sinhConfig2,sliceConfig2,softmaxConfig2,softplusConfig2,spaceToBatchNDConfig2,sparseToDenseConfig2,splitVConfig2,sqrtConfig2,squareConfig2,squaredDifferenceConfig2,stepConfig2,stridedSliceConfig2,subConfig2,sumConfig2,tanConfig2,tanhConfig2,tileConfig2,topKConfig2,transposeConfig2,uniqueConfig2,unpackConfig2,unsortedSegmentSumConfig2,zerosLikeConfig2];for(let kernelConfig of kernelConfigs2)registerKernel(kernelConfig);var version12="2.8.1",version14={"tfjs-core":version,"tfjs-backend-cpu":version10,"tfjs-backend-webgl":version11,"tfjs-data":version8,"tfjs-layers":version2,"tfjs-converter":version6,tfjs:version12},CppDType;(function(CppDType2){CppDType2[CppDType2.float32=0]="float32",CppDType2[CppDType2.int32=1]="int32",CppDType2[CppDType2.bool=2]="bool",CppDType2[CppDType2.string=3]="string",CppDType2[CppDType2.complex64=4]="complex64"})(CppDType||(CppDType={}));var FusableActivation;(function(FusableActivation2){FusableActivation2[FusableActivation2.linear=0]="linear",FusableActivation2[FusableActivation2.relu=1]="relu",FusableActivation2[FusableActivation2.relu6=2]="relu6",FusableActivation2[FusableActivation2.prelu=3]="prelu",FusableActivation2[FusableActivation2.leakyrelu=4]="leakyrelu"})(FusableActivation||(FusableActivation={}));var wasmFusedMatMul;function setup(backend3){wasmFusedMatMul=backend3.wasm.cwrap(_FusedMatMul,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function fusedBatchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b,bias,preluActivationWeights}=inputs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs,aId=backend3.dataIdMap.get(a.dataId).id,bId=backend3.dataIdMap.get(b.dataId).id,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${biasData.shape.length}.`);biasId=biasData.id}let preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id,fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let leftDim=transposeA?a.shape[2]:a.shape[1],rightDim=transposeB?b.shape[1]:b.shape[2],batchDim=a.shape[0],out=backend3.makeOutput([batchDim,leftDim,rightDim],a.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer);return wasmFusedMatMul(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,transposeA,transposeB,fusedActivation,biasId,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedMatMulConfig={kernelName:_FusedMatMul,backendName:"wasm",setupFunc:setup,kernelFunc:fusedBatchMatMul};function createUnaryKernelConfig(kernelName){let wasmFunc9;function setupFunc3(backend3){wasmFunc9=backend3.wasm.cwrap(kernelName,null,["number","number"])}function kernelFunc3(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc9(xId,outId),out}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var absConfig3=createUnaryKernelConfig(Abs);function createBinaryKernelConfig(kernelName,supportsFullBroadcast17,dtype){let wasmFunc9;function setupFunc3(backend3){wasmFunc9=backend3.wasm.cwrap(kernelName,null,["number","array","number","number","array","number","number","number"])}function kernelFunc3(args){let{backend:backend3,inputs}=args,{a,b}=inputs,aId=backend3.dataIdMap.get(a.dataId).id,bId=backend3.dataIdMap.get(b.dataId).id,outputType=dtype!=null?dtype:a.dtype,newShape=backend_util_exports.assertAndGetBroadcastShape(a.shape,b.shape),out=backend3.makeOutput(newShape,outputType);if(util_exports.sizeFromShape(newShape)===0)return out;let aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer),outId=backend3.dataIdMap.get(out.dataId).id,kernelFunc4=()=>wasmFunc9(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig3={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity4},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose11(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose11,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape77},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul3(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape77({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape77({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig3={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul3};function cast47(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast47},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig2={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat17(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),$inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity4({inputs:{x:$inputs[0]},backend:backend3});let out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose11({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse13?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose11({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig3={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum7},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace4(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig3={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace4},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d5(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig3={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d5},supportsFullBroadcast2=!1,equalConfig3=createBinaryKernelConfig(Equal,supportsFullBroadcast2,"bool"),expConfig3=createUnaryKernelConfig(Exp);function expandDims5(args){let{inputs,attrs,backend:backend3}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape77({inputs:{x:input2},backend:backend3,attrs:{shape:newShape}})}var expandDimsConfig3={kernelName:ExpandDims,backendName:"wasm",kernelFunc:expandDims5};function fill6(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig3={kernelName:Fill,backendName:"wasm",kernelFunc:fill6},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},floorConfig3=createUnaryKernelConfig(Floor),supportsFullBroadcast3=!1,floorDivConfig3=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast3),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean8,variance,offset,scale:scale22}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean8.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale22!=null?backend3.dataIdMap.get(scale22.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d2(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedConv2DConfig3={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d2},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedDepthwiseConv2DConfig3={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd3(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig3={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd3},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV23(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis,batchDims}=attrs,parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis,batchDims),flattenX=reshape77({inputs:{x},attrs:{shape:[shapeInfo.batchSize,shapeInfo.outerSize,shapeInfo.dimSize,shapeInfo.sliceSize]},backend:backend3}),indicesSize=util_exports.sizeFromShape(indices.shape),flattenIndex=reshape77({inputs:{x:indices},attrs:{shape:[shapeInfo.batchSize,indicesSize/shapeInfo.batchSize]},backend:backend3}),flattenOutputShape=[shapeInfo.batchSize,shapeInfo.outerSize,indicesSize/shapeInfo.batchSize,shapeInfo.sliceSize],out=backend3.makeOutput(flattenOutputShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let stridesSize=flattenX.shape.length-1,xData=backend3.dataIdMap.get(flattenX.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(flattenIndex.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenX.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenOutputShape)).buffer);return wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,shapeInfo.batchSize,outStridesBytes,outId),out.shape=shapeInfo.outputShape,out}var gatherV2Config3={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV23},supportsFullBroadcast4=!1,greaterConfig3=createBinaryKernelConfig(Greater,supportsFullBroadcast4,"bool"),supportsFullBroadcast5=!1,greaterEqualConfig3=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast5,"bool"),wasmFunc3;function setupFunc2(backend3){wasmFunc3=backend3.wasm.cwrap(LeakyRelu,null,["number","number","number"])}function leakyRelu4(args){let{inputs:{x},attrs:{alpha},backend:backend3}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmFunc3(xId,alpha,outId)}return out}var leakyReluConfig3={kernelName:LeakyRelu,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:leakyRelu4},supportsFullBroadcast6=!1,lessConfig3=createBinaryKernelConfig(Less,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessEqualConfig3=createBinaryKernelConfig(LessEqual,supportsFullBroadcast7,"bool"),logConfig3=createUnaryKernelConfig(Log),supportsFullBroadcast8=!1,logicalAndConfig3=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast8,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max10(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max10},supportsFullBroadcast9=!1,maximumConfig3=createBinaryKernelConfig(Maximum,supportsFullBroadcast9),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMean;function setup21(backend3){wasmMean=backend3.wasm.cwrap(Mean,null,["number, number, number"])}function mean7(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("mean",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),castedInput=input2;input2.dtype!=="float32"&&(castedInput=cast47({backend:backend3,inputs:{x:input2},attrs:{dtype:"float32"}}),inputId=backend3.dataIdMap.get(castedInput.dataId).id);let out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMean(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return input2.dtype!=="float32"&&backend3.disposeData(castedInput.dataId),out}var meanConfig3={kernelName:Mean,backendName:"wasm",setupFunc:setup21,kernelFunc:mean7},wasmMin;function setup22(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min8(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig3={kernelName:Min,backendName:"wasm",setupFunc:setup22,kernelFunc:min8},supportsFullBroadcast10=!1,minimumConfig3=createBinaryKernelConfig(Minimum,supportsFullBroadcast10),supportsFullBroadcast11=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast11),negConfig3=createUnaryKernelConfig(Neg);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config3={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup23,kernelFunc},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV43(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup24,kernelFunc:nonMaxSuppressionV43},wasmFunc6;function setup25(backend3){wasmFunc6=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc6(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup25,kernelFunc:kernelFunc2},supportsFullBroadcast12=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast12,"bool"),wasmOneHot;function setup26(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot4(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig3={kernelName:OneHot,backendName:"wasm",setupFunc:setup26,kernelFunc:oneHot4};function onesLike4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig3={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike4};function pack3(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims5({inputs:{input:inputs[0]},backend:backend3,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=inputs.map(t=>expandDims5({inputs:{input:t},backend:backend3,attrs:{dim:axis}}));return concat17({inputs:expandedTensors,backend:backend3,attrs:{axis}})}var packConfig3={kernelName:Pack,backendName:"wasm",kernelFunc:pack3},wasmPadV2;function setup27(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad9(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config3={kernelName:PadV2,backendName:"wasm",kernelFunc:pad9,setupFunc:setup27},supportsFullBroadcast13=!1,powConfig3=createBinaryKernelConfig(Pow,supportsFullBroadcast13),wasmPrelu;function setup28(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu8(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig3={kernelName:Prelu,backendName:"wasm",setupFunc:setup28,kernelFunc:prelu8},wasmProd;function setup29(backend3){wasmProd=backend3.wasm.cwrap(Prod,null,["number","number","number","number"])}function prod6(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("prod",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmProd(inputId,reduceSize,CppDType[out.dtype],outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var prodConfig3={kernelName:Prod,backendName:"wasm",setupFunc:setup29,kernelFunc:prod6},range6=args=>{let{backend:backend3,attrs}=args,{start,stop,step:step9,dtype}=attrs,values=rangeImpl(start,stop,step9,dtype),out=backend3.makeOutput([values.length],dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.set(values),out},rangeConfig3={kernelName:Range,backendName:"wasm",kernelFunc:range6},supportsFullBroadcast14=!0,realDivConfig3=createBinaryKernelConfig(RealDiv,supportsFullBroadcast14),reluConfig3=createUnaryKernelConfig(Relu),relu6Config3=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup30(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number","number"])}function resizeBilinear4(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast47({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,halfPixelCenters?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig3={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup30,kernelFunc:resizeBilinear4},wasmReverse;function setup31(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse12(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity4({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape77({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig3={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse12,setupFunc:setup31},wasmRotate;function setup32(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup32},rsqrtConfig3=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup33(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd3(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig3={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup33,kernelFunc:scatterNd3},wasmSelect;function setup34(backend3){wasmSelect=backend3.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function select3(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectConfig3={kernelName:Select,backendName:"wasm",kernelFunc:select3,setupFunc:setup34},wasmFunc7;function setup35(backend3){wasmFunc7=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid8(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId),out}var sigmoidConfig3={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup35,kernelFunc:sigmoid8},sinConfig3=createUnaryKernelConfig(Sin);function slice18(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.readSync(x.dataId),out=backend3.makeOutput(size_,x.dtype),xStrides=util_exports.computeStrides(x.shape),outData=backend3.dataIdMap.get(out.dataId);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);if(x.dtype==="string")outData.stringBytes=xVals.slice(flatOffset,flatOffset+util_exports.sizeFromShape(size_));else{let outVals2=backend3.typedArrayFromHeap(out);outVals2.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_)))}return out}if(x.dtype==="string"){let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);return outData.stringBytes=res,out}let outVals=backend3.typedArrayFromHeap(out),rank=x.shape.length;if(rank===2)slice2d2(xVals,xStrides[0],outVals,begin_,size_);else if(rank===3)slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_);else if(rank===4)slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_);else{let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);outVals.set(res)}return out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;i{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice18({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig3={kernelName:SplitV,backendName:"wasm",kernelFunc:splitV3},sqrtConfig3=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup37(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice4(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape77({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice18({inputs:{x},attrs:{begin,size},backend:backend3});return reshape77({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape77({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig3={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup37,kernelFunc:stridedSlice4},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup38(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum28(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig3={kernelName:Sum,backendName:"wasm",setupFunc:setup38,kernelFunc:sum28},tanhConfig3=createUnaryKernelConfig(Tanh),wasmTile;function setup39(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile9(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i{let{x}=inputs,{k,sorted}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),outputShape=x.shape.slice();outputShape[outputShape.length-1]=k;let outValues=backend3.makeOutput(outputShape,x.dtype),outValuesId=backend3.dataIdMap.get(outValues.dataId).id,outIndices=backend3.makeOutput(outputShape,"int32"),outIndicesId=backend3.dataIdMap.get(outIndices.dataId).id;return wasmTopK(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],k,sorted,outValuesId,outIndicesId),[outValues,outIndices]},topKConfig3={kernelName:TopK,backendName:"wasm",setupFunc:setup40,kernelFunc:topk4};function unpack3(args){let{inputs,backend:backend3,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let numOutputs=value.shape[axis],rank=value.shape.length,outShape=new Array(rank-1),outIndex=0;for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig3={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack3};function zerosLike4(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig3={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike4},kernelConfigs3=[absConfig3,addConfig3,addNConfig3,argMaxConfig3,avgPoolConfig3,batchMatMulConfig3,castConfig3,clipByValueConfig2,concatConfig3,conv2DConfig3,conv2DBackpropInputConfig3,cosConfig3,cropAndResizeConfig3,cumsumConfig3,depthToSpaceConfig3,depthwiseConv2dNativeConfig3,equalConfig3,expConfig3,expandDimsConfig3,fillConfig3,flipLeftRightConfig3,floorConfig3,floorDivConfig3,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig3,fusedDepthwiseConv2DConfig3,gatherNdConfig3,gatherV2Config3,greaterConfig3,greaterEqualConfig3,identityConfig3,leakyReluConfig3,lessConfig3,lessEqualConfig3,logConfig3,logicalAndConfig3,maxConfig3,maximumConfig3,maxPoolConfig3,meanConfig3,minConfig3,minimumConfig3,multiplyConfig3,negConfig3,nonMaxSuppressionV3Config3,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig3,onesLikeConfig3,packConfig3,padV2Config3,powConfig3,preluConfig3,prodConfig3,rangeConfig3,realDivConfig3,reluConfig3,relu6Config3,reshapeConfig3,resizeBilinearConfig3,reverseConfig3,rotateWithOffsetConfig3,rsqrtConfig3,scatterNdConfig3,selectConfig3,sigmoidConfig3,sinConfig3,sliceConfig3,softmaxConfig3,splitVConfig3,sqrtConfig3,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig3,subConfig3,sumConfig3,tanhConfig3,tileConfig3,topKConfig3,transposeConfig3,unpackConfig3,zerosLikeConfig3];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data=this.dataIdMap.get(dataId);this.wasm._free(data.memoryOffset),this.wasm.tfjs.disposeData(data.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer9=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer9,memoryOffset,size);case"int32":return new Int32Array(buffer9,memoryOffset,size);case"bool":return new Uint8Array(buffer9,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer9,dtype){switch(dtype){case"float32":return new Float32Array(buffer9);case"int32":return new Int32Array(buffer9);case"bool":return new Uint8Array(buffer9);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version15="2.8.1",WASM_PRIORITY=2;registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);var draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven2,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range2,round:()=>round3});var Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor,dim){return tensor instanceof Tensor&&tensor.shape.length===dim}function isTensor1D(tensor){return isTensor(tensor,1)}function isTensor2D(tensor){return isTensor(tensor,2)}function isTensor3D(tensor){return isTensor(tensor,3)}function isTensor4D(tensor){return isTensor(tensor,4)}function isFloat(num){return num%1!==0}function isEven2(num){return num%2===0}function round3(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale3=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale3),Math.round(height*scale3))}function getCenterPoint(pts){return pts.reduce((sum3,pt)=>sum3.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range2(num,start,step2){return Array(num).fill(0).map((_,i)=>start+i*step2)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min2,x)=>xymax2max2({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}function normalize(x,meanRgb){return tidy(()=>{let[r,g,b]=meanRgb,avg_r=fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=concat([avg_r,avg_g,avg_b],3);return sub(x,avg_rgb)})}function padToSquare(imgTensor,isCenterImage=!1){return tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>cast(t,"float32"));return concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array2=inputArray.slice();for(let i=array2.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array2[i];array2[i]=array2[j],array2[j]=x}return array2}function sigmoid2(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round3(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json18){let descriptors=json18.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json18.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return{...sourceObj,...extension}}function createBrowserEnv(){let fetch3=window.fetch;if(!fetch3)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:fetch3,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer2)=>err?reject(err):resolve(buffer2))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch3=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch:fetch3,...fileSystem}}function isBrowser2(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env17){environment=env17}function initialize(){return isBrowser2()?setEnv(createBrowserEnv()):isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env17){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env17;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env17.createCanvasElement||(()=>new Canvas),environment.createImageElement=env17.createImageElement||(()=>new Image),environment.ImageData=env17.ImageData||environment.ImageData,environment.Video=env17.Video||environment.Video,environment.fetch=env17.fetch||environment.fetch,environment.readFile=env17.readFile||environment.readFile}var env2={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser:isBrowser2,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env2.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env2.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round3(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}function isMediaLoaded(media){let{Image,Video}=env2.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env2.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env2.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input2){let{Image,Video}=env2.getEnv();return input2 instanceof Image?new Dimensions(input2.naturalWidth,input2.naturalHeight):input2 instanceof Video?new Dimensions(input2.videoWidth,input2.videoHeight):new Dimensions(input2.width,input2.height)}function createCanvas2({width,height}){let{createCanvasElement}=env2.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env2.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas2({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env2.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await browser_exports.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input2){let{Image,Canvas,Video}=env2.getEnv();return input2 instanceof Image||input2 instanceof Canvas||input2 instanceof Video}function imageToSquare(input2,inputSize,centerImage=!1){let{Image,Canvas}=env2.getEnv();if(!(input2 instanceof Image||input2 instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input2),scale3=inputSize/Math.max(dims.height,dims.width),width=scale3*dims.width,height=scale3*dims.height,targetCanvas=createCanvas2({width:inputSize,height:inputSize}),inputCanvas=input2 instanceof Canvas?input2:createCanvasFromMedia(input2),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input2)){this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape;return}if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape.slice(1);return}let canvas=input2 instanceof env2.getEnv().Canvas?input2:createCanvasFromMedia(input2);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range2(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tidy(()=>{let inputTensors=range2(this.batchSize,0,1).map(batchIdx=>{let input2=this.getInput(batchIdx);if(input2 instanceof Tensor){let imgTensor=isTensor4D(input2)?input2:input2.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input2 instanceof env2.getEnv().Canvas)return browser_exports.fromPixels(imageToSquare(input2,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input2}`)}),batchTensor=stack(inputTensors.map(t=>cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input2,i)=>{if(!isMediaElement(input2)&&!isTensor3D(input2)&&!isTensor4D(input2))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input2=>isMediaElement(input2)&&awaitMediaLoaded(input2))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input2,detections){let{Canvas}=env2.getEnv(),canvas=input2;if(!(input2 instanceof Canvas)){let netInput=await toNetInput(input2);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas2({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init2){let{fetch:fetch3}=env2.getEnv(),res=await fetch3(url,init2);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return io_exports.loadWeights(manifest,modelBaseUri)}function matchDimensions(input2,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input2.width=width,input2.height=height,{width,height}}var NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof Variable))}variable(){this.getFrozenParams().forEach(({path,tensor})=>{this.reassignParamFromPath(path,tensor.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable2})=>{let tensor=tensor4(variable2.dataSync());variable2.dispose(),this.reassignParamFromPath(path,tensor)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor})=>Array.from(tensor.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env2.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights2=io_exports.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights2(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}};function depthwiseSeparableConv(x,params,stride){return tidy(()=>{let out=separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=add2(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return relu(add2(out1,add2(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=relu(add2(out1,add2(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return relu(add2(out1,add2(out2,add2(out3,out4))))})}function convLayer(x,params,padding="same",withRelu=!1){return tidy(()=>{let out=add2(conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor=weightMap[originalPath];if(!isTensor(tensor,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}};function fullyConnectedLayer(x,params){return tidy(()=>add2(matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input2){return tidy(()=>softmax(this.runNet(input2)))}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictExpressions(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return{...sourceObj,...extension}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round3(exprLocal.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return{...sourceObj,...extension}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version3="0.9.5";function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range2(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range2(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return add2(conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=maxPool(out,[3,3],[2,2],"same"),out=add2(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv2,[1,1]),out=add2(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(256)),out=relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range2(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2,pooled=avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input2){return tidy(()=>{let{age,gender}=this.runNet(input2);return{age,gender:softmax(gender)}})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictAgeAndGender(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),ages=unstack(out.age),genders=unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale3=inputSize/Math.max(height,width);return{width:width*scale3,height:height*scale3}}),batchSize=inputDimensions.length;return tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>stack([fill([68],fillX,"float32"),fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding2=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding2(batchIdx,(w,h)=>wgetPadding2(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input2){return tidy(()=>{let out=this.runNet(input2);return this.postProcess(out,input2.inputSize,input2.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async detectLandmarks(input2){let netInput=await toNetInput(input2),landmarkTensors=tidy(()=>unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven2(i)),yCoords=landmarksArray.filter((_,i)=>!isEven2(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};function scale2(x,params){return add2(mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=conv2d(x,filters,strides,padding);return out=add2(out,bias),out=scale2(out,params.scale),withRelu?relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tidy(()=>transpose(tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tensor1d(extractWeights(numWeights)),biases=tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale3=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale3}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tidy(()=>transpose(tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale3=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale3}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=add2(out,x),out=relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=avgPool(x,2,2,"valid"),zeros2=zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=zeros(padShapeX);out=concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=zeros(padShapeY);out=concat([out,zerosH],2)}return pooled=isPad?concat([pooled,zeros2],3):pooled,out=add2(pooled,out),out=relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(scalar(256)),out=convDown(normalized,params.conv32_down);out=maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=matMul(globalAvg,params.fc);return fullyConnected})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async computeFaceDescriptor(input2){let netInput=await toNetInput(input2),faceDescriptorTensors=tidy(()=>unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return{...sourceObj,...extension}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return{...sourceObj,...extension}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return{...sourceObj,...extension}}function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tensor1d(extractWeights(numChannels)),batch_norm_offset=tensor1d(extractWeights(numChannels)),batch_norm_mean=tensor1d(extractWeights(numChannels)),batch_norm_variance=tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function pointwiseConvLayer(x,params,strides){return tidy(()=>{let out=conv2d(x,params.filters,strides,"same");return out=add2(out,params.batch_norm_offset),clipByValue(out,0,6)})}var epsilon3=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tidy(()=>{let out=depthwiseConv2d(x,params.filters,strides,"same");return out=batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon3),clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression3(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}function getCenterCoordinatesAndSizesLayer(x){let vec=unstack(transpose(x,[1,0])),sizes=[sub(vec[2],vec[0]),sub(vec[3],vec[1])],centers=[add2(vec[0],div(sizes[0],scalar(2))),add2(vec[1],div(sizes[1],scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=unstack(transpose(x1,[1,0])),div0_out=div(mul(exp(div(vec[2],scalar(5))),sizes[0]),scalar(2)),add0_out=add2(mul(div(vec[0],scalar(10)),sizes[0]),centers[0]),div1_out=div(mul(exp(div(vec[3],scalar(5))),sizes[1]),scalar(2)),add1_out=add2(mul(div(vec[1],scalar(10)),sizes[1]),centers[1]);return transpose(stack([sub(add0_out,div0_out),sub(add1_out,div1_out),add2(add0_out,div0_out),add2(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(reshape(tile(params.extra_dim,[batchSize,1,1]),[-1,4]),reshape(boxPredictions,[-1,4]));boxes=reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=sigmoid(slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=unstack(boxes),scoresByBatch=unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}function boxPredictionLayer(x,params){return tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input2){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(512,!1),"float32"),x=sub(mul(batchTensor,scalar(.007843137718737125)),scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async locateFaces(input2,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input2),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression3(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME2="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",isNumber2=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber2(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber2(a.x)&&isNumber2(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber2)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}function leaky(x){return tidy(()=>{let min2=mul(x,scalar(.10000000149011612));return add2(relu(sub(x,min2)),min2)})}function convWithBatchNorm(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=conv2d(out,params.conv.filters,[1,1],"valid"),out=sub(out,params.bn.sub),out=mul(out,params.bn.truediv),out=add2(out,params.conv.bias),leaky(out)})}function depthwiseSeparableConv3(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=add2(out,params.bias),leaky(out)})}function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub2=tensor1d(extractWeights(size)),truediv=tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub2,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub2=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub2,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input2,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input2,inputSize){return this.forwardInput(await toNetInput(input2),inputSize)}async detect(input2,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input2),out=await this.forwardInput(netInput,inputSize),out0=tidy(()=>unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression2(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid2(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid2(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max2,curr)=>max2.classScore>curr.classScore?max2:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){let objectDetections=await this.detect(input2,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME2}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};async function extractAllFacesAndComputeResults(parentResults,input2,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input2 instanceof Tensor?await extractFaceTensors(input2,faceBoxes):await extractFaces(input2,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input2,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input2,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){let objectDetections=await this.detect(input2,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input2,options)=>nets.ssdMobilenetv1.locateFaces(input2,options),tinyFaceDetector=(input2,options)=>nets.tinyFaceDetector.locateFaces(input2,options),tinyYolov23=(input2,options)=>nets.tinyYolov2.locateFaces(input2,options),detectFaceLandmarks=input2=>nets.faceLandmark68Net.detectLandmarks(input2),detectFaceLandmarksTiny=input2=>nets.faceLandmark68TinyNet.detectLandmarks(input2),computeFaceDescriptor=input2=>nets.faceRecognitionNet.computeFaceDescriptor(input2),recognizeFaceExpressions=input2=>nets.faceExpressionNet.predictExpressions(input2),predictAgeAndGender=input2=>nets.ageGenderNet.predictAgeAndGender(input2),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input2){super();this.parentTask=parentTask;this.input=input2}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input2,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input2;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input2,options=new SsdMobilenetv1Options){super();this.input=input2;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input:input2,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input3=>nets.tinyFaceDetector.locateFaces(input3,options):options instanceof SsdMobilenetv1Options?input3=>nets.ssdMobilenetv1.locateFaces(input3,options):options instanceof TinyYolov2Options?input3=>nets.tinyYolov2.locateFaces(input3,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input2)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input2,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input2,options)}function detectAllFaces(input2,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input2,options)}async function allFacesSsdMobilenetv1(input2,minConfidence){return detectAllFaces(input2,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input2,forwardParams={}){return detectAllFaces(input2,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count2=1,createUniqueLabel=()=>`person ${count2++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json18){let labeledDescriptors=json18.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json18.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version4={faceapi:version3,node,browser};return src_exports;})(); /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/face-api.js.map b/dist/face-api.js.map index 785b9c4..05e1ccf 100644 --- a/dist/face-api.js.map +++ b/dist/face-api.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/env/isNodejs.ts", "../src/index.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/utils/index.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/imageToSquare.ts", "../src/dom/NetInput.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/common/getModelUris.ts", "../src/dom/loadWeightMap.ts", "../src/dom/matchDimensions.ts", "../src/NeuralNetwork.ts", "../src/common/depthwiseSeparableConv.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/types.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/xception/TinyXception.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts", "../src/index.ts"], - "sourcesContent": ["export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, "export * from './drawContour'\nexport * from './drawDetections'\nexport * from './drawFaceExpressions'\nexport * from './DrawBox'\nexport * from './DrawFaceLandmarks'\nexport * from './DrawTextField'", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false\n) {\n ctx.beginPath()\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx]\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(x, y)\n })\n\n if (isClosed) {\n const from = points[points.length - 1]\n const to = points[0]\n if (!from || !to) {\n return\n }\n\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(to.x, to.y)\n }\n\n ctx.stroke()\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n\n private _width: number\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`)\n }\n\n this._width = width\n this._height = height\n }\n\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x\n this._y = y\n }\n\n get x(): number { return this._x }\n get y(): number { return this._y }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y)\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y)\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y)\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y)\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y))\n }\n\n public magnitude(): number {\n return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2))\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y))\n }\n}", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber)\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`)\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)\n }\n }\n\n private _x: number\n private _y: number\n private _width: number\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber)\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber)\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`)\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top]\n\n Box.assertIsValidBox({ x, y, width, height }, 'Box.constructor', allowNegativeDimensions)\n\n this._x = x\n this._y = y\n this._width = width\n this._height = height\n }\n\n public get x(): number { return this._x }\n public get y(): number { return this._y }\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n public get left(): number { return this.x }\n public get top(): number { return this.y }\n public get right(): number { return this.x + this.width }\n public get bottom(): number { return this.y + this.height }\n public get area(): number { return this.width * this.height }\n public get topLeft(): Point { return new Point(this.left, this.top) }\n public get topRight(): Point { return new Point(this.right, this.top) }\n public get bottomLeft(): Point { return new Point(this.left, this.bottom) }\n public get bottomRight(): Point { return new Point(this.right, this.bottom) }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.round(val))\n return new Box({ x, y, width, height })\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.floor(val))\n return new Box({ x, y, width, height })\n }\n\n public toSquare(): Box {\n let { x, y, width, height } = this\n const diff = Math.abs(width - height)\n if (width < height) {\n x -= (diff / 2)\n width += diff\n }\n if (height < width) {\n y -= (diff / 2)\n height += diff\n }\n\n return new Box({ x, y, width, height })\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY\n })\n }\n\n public pad(padX: number, padY: number): Box {\n let [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY\n ]\n return new Box({ x, y, width, height })\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const { x, y, right, bottom } = this\n const clippedX = Math.max(x, 0)\n const clippedY = Math.max(y, 0)\n\n const newWidth = right - clippedX\n const newHeight = bottom - clippedY\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX)\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY)\n\n return (new Box({ x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight})).floor()\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this\n const x = this.x + sx\n const y = this.y + sy\n\n return new Box({ x, y, width, height })\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1\n const h = this.height + 1\n\n let dx = 1\n let dy = 1\n let edx = w\n let edy = h\n\n let x = this.left\n let y = this.top\n let ex = this.right\n let ey = this.bottom\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w\n ex = imageWidth\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h\n ey = imageHeight\n }\n if (x < 1) {\n edy = 2 - x\n x = 1\n }\n if (y < 1) {\n edy = 2 - y\n y = 1\n }\n\n return { dy, edy, dx, edx, y, ey, x, ex, w, h }\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height)\n }).toSquare().round()\n }\n}", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({ left, top, right, bottom }, allowNegativeDimensions)\n }\n}", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n private _classScore: number\n private _className: string\n private _box: Rect\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height)\n this._score = score\n this._classScore = classScore\n this._className = className\n this._box = new Box(relativeBox).rescale(this._imageDims)\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n public get className(): string { return this._className }\n public get box(): Box { return this._box }\n public get imageDims(): Dimensions { return this._imageDims }\n public get imageWidth(): number { return this.imageDims.width }\n public get imageHeight(): number { return this.imageDims.height }\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()) }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height}\n )\n }\n}", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions\n ) {\n super(score, score, '', relativeBox, imageDims)\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height)\n return new FaceDetection(score, relativeBox, imageDims)\n }\n}", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left))\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top))\n const interSection = width * height\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area)\n}", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map(pt => pt.x)\n const ys = pts.map(pt => pt.y)\n const minX = xs.reduce((min, x) => x < min ? x : min, Infinity)\n const minY = ys.reduce((min, y) => y < min ? y : min, Infinity)\n const maxX = xs.reduce((max, x) => max < x ? x : max, 0)\n const maxY = ys.reduce((max, y) => max < y ? y : max, 0)\n\n return new BoundingBox(minX, minY, maxX, maxY)\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true\n): number[] {\n\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map(c => c.boxIndex)\n\n const pick: number[] = []\n\n while(indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number\n pick.push(curr)\n\n const indices = indicesSortedByScore\n\n const outputs: number[] = []\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i]\n\n const currBox = boxes[curr]\n const idxBox = boxes[idx]\n\n outputs.push(iou(currBox, idxBox, isIOU))\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold\n )\n }\n\n return pick\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32')\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32')\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32')\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3)\n\n return tf.sub(x, avg_rgb)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n\n const [height, width] = imgTensor.shape.slice(1)\n if (height === width) {\n return imgTensor\n }\n\n const dimDiff = Math.abs(height - width)\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1))\n const paddingAxis = height > width ? 2 : 1\n\n const createPaddingTensor = (paddingAmount: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice()\n paddingTensorShape[paddingAxis] = paddingAmount\n return tf.fill(paddingTensorShape, 0, 'float32')\n }\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount)\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number)\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend\n ]\n .filter(t => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[]\n return tf.concat(tensorsToStack, paddingAxis)\n\n })\n}", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice()\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n const x = array[i]\n array[i] = array[j]\n array[j] = x\n }\n return array\n}", "export * from './iou'\nexport * from './minBbox'\nexport * from './nonMaxSuppression'\nexport * from './normalize'\nexport * from './padToSquare'\nexport * from './shuffleArray'\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x))\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x))\n}", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({ x, y, width, height }, allowNegativeDimensions)\n }\n}", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5\nconst relY = 0.43\nconst relScale = 0.45\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n protected _positions: Point[]\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0)\n ) {\n const { width, height } = imgDims\n this._imgDims = new Dimensions(width, height)\n this._shift = shift\n this._positions = relativeFaceLandmarkPositions.map(\n pt => pt.mul(new Point(width, height)).add(shift)\n )\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y) }\n public get imageWidth(): number { return this._imgDims.width }\n public get imageHeight(): number { return this._imgDims.height }\n public get positions(): Point[] { return this._positions }\n public get relativePositions(): Point[] {\n return this._positions.map(\n pt => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight))\n )\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height }\n )\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y)\n )\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y)\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { }\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection)\n\n return this.shiftBy(box.x, box.y).align(null, options)\n }\n\n const { useDlibAlignment, minBoxPadding } = Object.assign({}, { useDlibAlignment: false, minBoxPadding: 0.2 }, options)\n\n if (useDlibAlignment) {\n return this.alignDlib()\n }\n\n return this.alignMinBbox(minBoxPadding)\n }\n\n private alignDlib(): Box {\n\n const centers = this.getRefPointsForAlignment()\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude()\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2\n\n const size = Math.floor(eyeToMouthDist / relScale)\n\n const refPoint = getCenterPoint(centers)\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)))\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)))\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y))\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions)\n return box.pad(box.width * padding, box.height * padding)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class')\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]])\n ]\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17)\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22)\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27)\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36)\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42)\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48)\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth()\n ].map(getCenterPoint)\n }\n}", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label\n this._distance = distance\n }\n\n public get label(): string { return this._label }\n public get distance(): number { return this._distance }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`\n }\n}", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee)\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`)\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box)\n this._label = label\n }\n\n public get label(): number { return this._label }\n\n}", "export class LabeledFaceDescriptors {\n private _label: string\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string')\n }\n\n if (!Array.isArray(descriptors) || descriptors.some(desc => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array')\n }\n\n this._label = label\n this._descriptors = descriptors\n }\n\n public get label(): string { return this._label }\n public get descriptors(): Float32Array[] { return this._descriptors }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d))\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => {\n return new Float32Array(d);\n });\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n\n}", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee)\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)\n }\n }\n\n private _score: number\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label)\n this._score = score\n this._classScore = classScore\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n\n}", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj['detection'] instanceof FaceDetection\n}\n\nexport function extendWithFaceDetection<\n TSource\n> (\n sourceObj: TSource,\n detection: FaceDetection\n): WithFaceDetection {\n\n const extension = { detection }\n return Object.assign({}, sourceObj, extension)\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n\n const fetch = window['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for browser environment')\n }\n\n const readFile = function() {\n throw new Error('readFile - filesystem not available for browser environment')\n }\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D: CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData: ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile\n }\n}", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n\n let requireFsError = ''\n\n if (!fs) {\n try {\n fs = require('fs')\n } catch (err) {\n requireFsError = err.toString()\n }\n }\n\n const readFile = fs\n ? function(filePath: string) {\n return new Promise((res, rej) => {\n fs.readFile(filePath, function(err: any, buffer: Buffer) {\n return err ? rej(err) : res(buffer)\n })\n })\n }\n : function() {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)\n }\n\n return {\n readFile\n }\n}", "import { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n\n const Canvas = global['Canvas'] || global['HTMLCanvasElement']\n const Image = global['Image'] || global['HTMLImageElement']\n\n const createCanvasElement = function() {\n if (Canvas) {\n return new Canvas()\n }\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment')\n }\n\n const createImageElement = function() {\n if (Image) {\n return new Image()\n }\n throw new Error('createImageElement - missing Image implementation for nodejs environment')\n }\n\n const fetch = global['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for nodejs environment')\n }\n\n const fileSystem = createFileSystem()\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global['CanvasRenderingContext2D'] || class {},\n Image: Image || class {},\n ImageData: global['ImageData'] || class {},\n Video: global['HTMLVideoElement'] || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem\n }\n}", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined'\n}", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()')\n }\n return environment\n}\n\nfunction setEnv(env: Environment) {\n environment = env\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) {\n return setEnv(createBrowserEnv())\n }\n if (isNodejs()) {\n return setEnv(createNodejsEnv())\n }\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize()\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()')\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env\n environment.Canvas = Canvas\n environment.Image = Image\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas())\n environment.createImageElement = env.createImageElement || (() => new Image())\n\n environment.ImageData = env.ImageData || environment.ImageData\n environment.Video = env.Video || environment.Video\n environment.fetch = env.fetch || environment.fetch\n environment.readFile = env.readFile || environment.readFile\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs\n}\n\ninitialize()\n\nexport * from './types'\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg)\n }\n return arg\n}", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n\n const { Canvas, CanvasRenderingContext2D } = env.getEnv()\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg\n }\n\n const canvas = resolveInput(canvasArg)\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas')\n }\n\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null')\n }\n\n return ctx\n}", "import { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\nexport enum AnchorPosition {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n public backgroundColor: string\n public fontColor: string\n public fontSize: number\n public fontStyle: string\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const { anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding } = options\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)'\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)'\n this.fontSize = fontSize || 14\n this.fontStyle = fontStyle || 'Georgia'\n this.padding = padding || 4\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n public anchor : IPoint\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {}\n ) {\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text)\n this.anchor = anchor\n this.options = new DrawTextFieldOptions(options)\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options\n return this.text.map(l => ctx.measureText(l).width).reduce((w0, w1) => w0 < w1 ? w1 : w0, 0) + (2 * padding)\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options\n return this.text.length * fontSize + (2 * padding)\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT\n\n const textFieldWidth = this.measureWidth(ctx)\n const textFieldHeight = this.measureHeight()\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x)\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0)\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0)\n return { x: newX, y: newY }\n }\n return { x, y }\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg)\n const ctx = getContext2dOrThrow(canvas)\n\n const { backgroundColor, fontColor, fontSize, fontStyle, padding } = this.options\n\n ctx.font = `${fontSize}px ${fontStyle}`\n const maxTextWidth = this.measureWidth(ctx)\n const textHeight = this.measureHeight()\n\n ctx.fillStyle = backgroundColor\n const upperLeft = this.getUpperLeft(ctx, canvas)\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight)\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x\n const y = padding + upperLeft.y + ((i + 1) * fontSize)\n ctx.fillText(textLine, x, y)\n })\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions } from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n public lineWidth: number\n public drawLabelOptions: DrawTextFieldOptions\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const { boxColor, lineWidth, label, drawLabelOptions } = options\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)'\n this.lineWidth = lineWidth || 2\n this.label = label\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor\n }\n this.drawLabelOptions = new DrawTextFieldOptions(Object.assign({}, defaultDrawLabelOptions, drawLabelOptions))\n }\n}\n\nexport class DrawBox {\n public box: Box\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {}\n ) {\n this.box = new Box(box)\n this.options = new DrawBoxOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { boxColor, lineWidth } = this.options\n\n const { x, y, width, height } = this.box\n ctx.strokeStyle = boxColor\n ctx.lineWidth = lineWidth\n ctx.strokeRect(x, y, width, height)\n\n const { label } = this.options\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg)\n }\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections]\n\n detectionsArray.forEach(det => {\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined)\n\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det))\n\n const label = score ? `${round(score)}` : undefined\n new DrawBox(box, { label }).draw(canvasArg)\n })\n}", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n\n const { Image, Video } = env.getEnv()\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3)\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null)\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n resolve(e)\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n reject(e)\n }\n\n media.addEventListener('load', onLoad)\n media.addEventListener('error', onError)\n })\n}", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) {\n return reject('bufferToImage - expected buf to be of type: Blob')\n }\n\n const reader = new FileReader()\n reader.onload = () => {\n if (typeof reader.result !== 'string') {\n return reject('bufferToImage - expected reader.result to be a string, in onload')\n }\n\n const img = env.getEnv().createImageElement()\n img.onload = () => resolve(img)\n img.onerror = reject\n img.src = reader.result\n }\n reader.onerror = reject\n reader.readAsDataURL(buf)\n })\n}", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n\n const { Image, Video } = env.getEnv()\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight)\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight)\n }\n return new Dimensions(input.width, input.height)\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n\n const { createCanvasElement } = env.getEnv()\n const canvas = createCanvasElement()\n canvas.width = width\n canvas.height = height\n return canvas\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n\n const { ImageData } = env.getEnv()\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet')\n }\n\n const { width, height } = dims || getMediaDimensions(media)\n const canvas = createCanvas({ width, height })\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0)\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height)\n }\n return canvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement\n): Promise {\n\n const targetCanvas = canvas || env.getEnv().createCanvasElement()\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0)\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt())\n await tf.browser.toPixels(imgTensor3D, targetCanvas)\n\n imgTensor3D.dispose()\n\n return targetCanvas\n}", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n\n const { Image, Canvas, Video } = env.getEnv()\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video\n}", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n\n const { Image, Canvas } = env.getEnv()\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement')\n }\n\n const dims = getMediaDimensions(input)\n const scale = inputSize / Math.max(dims.height, dims.width)\n const width = scale * dims.width\n const height = scale * dims.height\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize })\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input)\n\n const offset = Math.abs(width - height) / 2\n const dx = centerImage && width < height ? offset : 0\n const dy = centerImage && height < width ? offset : 0\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height)\n\n return targetCanvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport { computeReshapedDimensions, isTensor3D, isTensor4D, range } from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n private _canvases: HTMLCanvasElement[] = []\n private _batchSize: number\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`)\n }\n\n this._treatAsBatchInput = treatAsBatchInput\n this._batchSize = inputs.length\n\n inputs.forEach((input, idx) => {\n\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = input.shape\n return\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0]\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = (input as any).shape.slice(1)\n return\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input)\n this._canvases[idx] = canvas\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3]\n })\n }\n\n public get imageTensors(): Array {\n return this._imageTensors\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput\n }\n\n public get batchSize(): number {\n return this._batchSize\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx)\n )\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx]\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx]\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0]\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1]\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet')\n }\n\n const width = this.getInputWidth(batchIdx)\n const height = this.getInputHeight(batchIdx)\n return computeReshapedDimensions({ width, height }, this.inputSize)\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n\n this._inputSize = inputSize\n\n return tf.tidy(() => {\n\n const inputTensors = range(this.batchSize, 0, 1).map(batchIdx => {\n const input = this.getInput(batchIdx)\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims()\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs)\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize])\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3)\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs))\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)\n })\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map(t => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3)\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n \n return batchTensor\n })\n }\n}", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs\n }\n\n let inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs]\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input')\n }\n\n const getIdxHint = (idx: number) => Array.isArray(inputs) ? ` at input index ${idx}:` : ''\n\n const inputArray = inputArgArray.map(resolveInput)\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`)\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`)\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0]\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n }\n })\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map(input => isMediaElement(input) && awaitMediaLoaded(input))\n )\n\n return new NetInput(inputArray, Array.isArray(inputs))\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array\n): Promise {\n\n const { Canvas } = env.getEnv()\n\n let canvas = input as HTMLCanvasElement\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input)\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported')\n }\n\n const tensorOrCanvas = netInput.getInput(0)\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas)\n }\n\n const ctx = getContext2dOrThrow(canvas)\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det\n )\n .map(box => box.clipAtImageBorders(canvas.width, canvas.height))\n\n return boxes.map(({ x, y, width, height }) => {\n const faceImg = createCanvas({ width, height })\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0)\n return faceImg\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array\n): Promise {\n\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D')\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported')\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0)\n\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det\n )\n .map(box => box.clipAtImageBorders(imgWidth, imgHeight))\n\n const faceTensors = boxes.map(({ x, y, width, height }) =>\n tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels])\n )\n\n return faceTensors\n })\n}", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n init?: RequestInit\n): Promise {\n\n const fetch = env.getEnv().fetch\n const res = await fetch(url, init)\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`)\n }\n return res\n}", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri)\n const blob = await (res).blob()\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`)\n }\n return bufferToImage(blob)\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json()\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer())\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename\n }\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`\n }\n }\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter(s => s)\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/')\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName)\n let manifest = await fetchJson(manifestUri)\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri)\n}", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference\n input.width = width\n input.height = height\n return { width, height }\n}", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number]\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same')\n out = tf.add(out, params.bias)\n return out\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n })\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias\n ) as tf.Tensor4D\n\n return withRelu ? tf.relu(out) : out\n })\n}", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach(path => {\n if (!paramMappings.some(pm => pm.originalPath === path)) {\n weightMap[path].dispose()\n }\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): FCParams {\n\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut])\n const fc_bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return {\n weights: fc_weights,\n bias: fc_bias\n }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n constructor(\n public depthwise_filter: tf.Tensor4D,\n public pointwise_filter: tf.Tensor4D,\n public bias: tf.Tensor1D\n ) {}\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1])\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut])\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n\nexport function loadSeparableConvParamsFactory(\n extractWeightEntry: (originalPath: string, paramRank: number) => T\n) {\n\n return function (prefix: string): SeparableConvParams {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4)\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n return function (originalPath: string, paramRank: number, mappedPath?: string): T {\n const tensor = weightMap[originalPath]\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`)\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath }\n )\n\n return tensor\n }\n\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights)\n remainingWeights = remainingWeights.slice(numWeights)\n return ret\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights\n }\n\n return {\n extractWeights,\n getRemainingWeights\n }\n}", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`)\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`)\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer)\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock4Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2')\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2, dense3 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return function(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return { filters, bias }\n }\n}", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock4Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('FaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock4(normalized, params.dense0, true)\n out = denseBlock4(out, params.dense1)\n out = denseBlock4(out, params.dense2)\n out = denseBlock4(out, params.dense3)\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams\n): tf.Tensor2D {\n return tf.tidy(() =>\n tf.add(\n tf.matMul(x, params.weights),\n params.bias\n )\n )\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: extractFcParams('fc')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n\n const featureExtractorMap: tf.NamedTensorMap = {}\n const classifierMap: tf.NamedTensorMap = {}\n\n Object.keys(weightMap).forEach(key => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap\n map[key] = weightMap[key]\n })\n\n return { featureExtractorMap, classifierMap }\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name)\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract getClassifierChannelsIn(): number\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut())\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const cIn = this.getClassifierChannelsIn()\n const cOut = this.getClassifierChannelsOut()\n const classifierWeightSize = (cOut * cIn ) + cOut\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised']\n\nexport class FaceExpressions {\n public neutral: number\n public happy: number\n public sad: number\n public angry: number\n public fearful: number\n public disgusted: number\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`)\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx]\n })\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map(expression => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor)\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)))\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async t => {\n const data = await t.data()\n t.dispose()\n return data\n }))\n out.dispose()\n\n const predictionsByBatch = probabilitesByBatch\n .map(probabilites => new FaceExpressions(probabilites as Float32Array))\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n\n protected getClassifierChannelsOut(): number {\n return 7\n }\n}", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj['expressions'] instanceof FaceExpressions\n}\n\nexport function extendWithFaceExpressions<\n TSource\n> (\n sourceObj: TSource,\n expressions: FaceExpressions\n): WithFaceExpressions {\n\n const extension = { expressions }\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions]\n\n faceExpressionsArray.forEach(e => {\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined)\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof')\n }\n\n const sorted = expr.asSortedArray()\n const resultsToDisplay = sorted.filter(expr => expr.probability > minConfidence)\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0))\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map(expr => `${expr.expression} (${round(expr.probability)})`),\n anchor\n )\n drawTextField.draw(canvasArg)\n })\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n}\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n && obj['landmarks'] instanceof FaceLandmarks\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n && obj['alignedRect'] instanceof FaceDetection\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> (\n sourceObj: TSource,\n unshiftedLandmarks: TFaceLandmarks\n): WithFaceLandmarks {\n\n const { box: shift } = sourceObj.detection\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y)\n\n const rect = landmarks.align()\n const { imageDims } = sourceObj.detection\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims)\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect\n }\n\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n public drawPoints: boolean\n public lineWidth: number\n public pointSize: number\n public lineColor: string\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const { drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor } = options\n this.drawLines = drawLines\n this.drawPoints = drawPoints\n this.lineWidth = lineWidth || 1\n this.pointSize = pointSize || 2\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)'\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)'\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {}\n ) {\n this.faceLandmarks = faceLandmarks\n this.options = new DrawFaceLandmarksOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor } = this.options\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor\n ctx.lineWidth = lineWidth\n drawContour(ctx, this.faceLandmarks.getJawOutline())\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow())\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow())\n drawContour(ctx, this.faceLandmarks.getNose())\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true)\n drawContour(ctx, this.faceLandmarks.getRightEye(), true)\n drawContour(ctx, this.faceLandmarks.getMouth(), true)\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor\n ctx.fillStyle = pointColor\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath()\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI)\n ctx.fill()\n }\n this.faceLandmarks.positions.forEach(drawPoint)\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks]\n faceLandmarksArray.forEach(f => {\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined)\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof')\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg)\n })\n}", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = loadParamsFactory(weightMap, paramMappings)\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias)\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = tf.maxPool(out, [3, 3], [2, 2], 'same')\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]))\n return out\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1])\n out = tf.add(out, x)\n return out\n}\n\nexport class TinyXception extends NeuralNetwork {\n\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception')\n this._numMainBlocks = numMainBlocks\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyXception - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]))\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false)\n out = reductionBlock(out, params.entry_flow.reduction_block_1)\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`])\n })\n\n out = reductionBlock(out, params.exit_flow.reduction_block)\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]))\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks)\n }\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const age = extractFCParams(512, 1, 'fc/age')\n const gender = extractFCParams(512, 2, 'fc/gender')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport enum Gender {\n FEMALE = 'female',\n MALE = 'male'\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { AgeAndGenderPrediction, Gender, NetOutput, NetParams } from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet')\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1)\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D()\n const gender = fullyConnectedLayer(pooled, params.fc.gender)\n return { age, gender }\n })\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input)\n return { age, gender: tf.softmax(gender) }\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n\n const ages = tf.unstack(out.age)\n const genders = tf.unstack(out.gender)\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i]\n }))\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0]\n const probMale = (await genderTensor.data())[0]\n const isMale = probMale > 0.5\n const gender = isMale ? Gender.MALE : Gender.FEMALE\n const genderProbability = isMale ? probMale : (1 - probMale)\n\n ageTensor.dispose()\n genderTensor.dispose()\n return { age, gender, genderProbability }\n })\n )\n out.age.dispose()\n out.gender.dispose()\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model'\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights)\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2)\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width)\n return {\n width: width * scale,\n height: height * scale\n }\n })\n\n const batchSize = inputDimensions.length\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) =>\n tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D()\n\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx]\n return cond(width, height) ? Math.abs(width - height) / 2 : 0\n }\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h)\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w)\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx)\n )\n )))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height\n )\n )))\n\n return landmarkTensors as tf.Tensor2D\n })\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input)\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width }))\n )\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data())\n const xCoords = landmarksArray.filter((_, i) => isEven(i))\n const yCoords = landmarksArray.filter((_, i) => !isEven(i))\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width : netInput.getInputWidth(batchIdx),\n }\n )\n }\n ))\n\n landmarkTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136\n }\n}", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock3Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\n\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock3Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('TinyFaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock3(normalized, params.dense0, true)\n out = denseBlock3(out, params.dense1)\n out = denseBlock3(out, params.dense2)\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights)\n }\n}", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 128\n }\n}", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases)\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same'\n): tf.Tensor4D {\n const { filters, bias } = params.conv\n\n let out = tf.conv2d(x, filters, strides, padding)\n out = tf.add(out, bias)\n out = scale(out, params.scale)\n return withRelu ? tf.relu(out) : out\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true)\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false)\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid')\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping } from '../common/index';\nimport { isFloat } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues)\n const depth = weights.length / (numFilters * filterSize * filterSize)\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`)\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0]\n )\n )\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize)\n const bias = tf.tensor1d(extractWeights(numFilters))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n\n const weights = tf.tensor1d(extractWeights(numWeights))\n const biases = tf.tensor1d(extractWeights(numWeights))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` }\n )\n\n return {\n weights,\n biases\n }\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvLayerParams {\n\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`)\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`)\n\n return { conv, scale }\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false\n ): ResidualLayerParams {\n\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`)\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`)\n\n return { conv1, conv2 }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down')\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1')\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2')\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3')\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true)\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1')\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2')\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3')\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true)\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1')\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2')\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true)\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1')\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2')\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out')\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0])\n )\n paramMappings.push({ paramPath: `fc` })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1)\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1)\n\n return { weights, biases }\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1)\n const scale = extractScaleLayerParams(prefix)\n\n return { conv: { filters, bias }, scale }\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`)\n }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const conv32_down = extractConvLayerParams('conv32_down')\n const conv32_1 = extractResidualLayerParams('conv32_1')\n const conv32_2 = extractResidualLayerParams('conv32_2')\n const conv32_3 = extractResidualLayerParams('conv32_3')\n\n const conv64_down = extractResidualLayerParams('conv64_down')\n const conv64_1 = extractResidualLayerParams('conv64_1')\n const conv64_2 = extractResidualLayerParams('conv64_2')\n const conv64_3 = extractResidualLayerParams('conv64_3')\n\n const conv128_down = extractResidualLayerParams('conv128_down')\n const conv128_1 = extractResidualLayerParams('conv128_1')\n const conv128_2 = extractResidualLayerParams('conv128_2')\n\n const conv256_down = extractResidualLayerParams('conv256_down')\n const conv256_1 = extractResidualLayerParams('conv256_1')\n const conv256_2 = extractResidualLayerParams('conv256_2')\n const conv256_down_out = extractResidualLayerParams('conv256_down_out')\n\n const fc = weightMap['fc']\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' })\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n out = tf.add(out, x)\n out = tf.relu(out)\n return out\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D\n const zeros = tf.zeros(pooled.shape)\n const isPad = pooled.shape[3] !== out.shape[3]\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number]\n padShapeX[1] = 1\n const zerosW = tf.zeros(padShapeX)\n out = tf.concat([out, zerosW], 1)\n\n const padShapeY = [...out.shape] as [number, number, number, number]\n padShapeY[2] = 1\n const zerosH = tf.zeros(padShapeY)\n out = tf.concat([out, zerosH], 2)\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled\n out = tf.add(pooled, out) as tf.Tensor4D\n\n out = tf.relu(out)\n return out\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n\n constructor() {\n super('FaceRecognitionNet')\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = convDown(normalized, params.conv32_down)\n out = tf.maxPool(out, 3, 2, 'valid')\n\n out = residual(out, params.conv32_1)\n out = residual(out, params.conv32_2)\n out = residual(out, params.conv32_3)\n\n out = residualDown(out, params.conv64_down)\n out = residual(out, params.conv64_1)\n out = residual(out, params.conv64_2)\n out = residual(out, params.conv64_3)\n\n out = residualDown(out, params.conv128_down)\n out = residual(out, params.conv128_1)\n out = residual(out, params.conv128_2)\n\n out = residualDown(out, params.conv256_down)\n out = residual(out, params.conv256_1)\n out = residual(out, params.conv256_2)\n out = residualDown(out, params.conv256_down_out)\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D\n const fullyConnected = tf.matMul(globalAvg, params.fc)\n\n return fullyConnected\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n t => t.data()\n )) as Float32Array[]\n\n faceDescriptorTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet()\n net.extractWeights(weights)\n return net\n}", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n> (\n sourceObj: TSource,\n descriptor: Float32Array\n): WithFaceDescriptor {\n\n const extension = { descriptor }\n return Object.assign({}, sourceObj, extension)\n}\n\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj['age'] === 'number'\n}\n\nexport function extendWithAge<\n TSource\n> (\n sourceObj: TSource,\n age: number\n): WithAge {\n\n const extension = { age }\n return Object.assign({}, sourceObj, extension)\n}", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj['gender'] === Gender.MALE || obj['gender'] === Gender.FEMALE)\n && isValidProbablitiy(obj['genderProbability'])\n}\n\nexport function extendWithGender<\n TSource\n> (\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number\n): WithGender {\n\n const extension = { gender, genderProbability }\n return Object.assign({}, sourceObj, extension)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common/index';\nimport { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1])\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` }\n )\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n }\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }\n )\n\n return { filters, bias }\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): PointwiseConvParams {\n\n const {\n filters,\n bias\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true)\n\n return {\n filters,\n batch_norm_offset: bias\n }\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): MobileNetV1.ConvPairParams {\n\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`)\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`)\n\n return { depthwise_conv, pointwise_conv }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0')\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1')\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2')\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3')\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4')\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5')\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6')\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7')\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8')\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9')\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10')\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11')\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12')\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13')\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13\n }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0')\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1')\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2')\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3')\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4')\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5')\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6')\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7')\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor')\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor')\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor')\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor')\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor')\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor')\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor')\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor')\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor')\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor')\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor')\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor')\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0\n }\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1\n }\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2\n }\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3\n }\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4\n }\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5\n }\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const mobilenetv1 = extractMobilenetV1Params()\n const prediction_layer = extractPredictionLayerParams()\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4]\n )\n const output_layer = {\n extra_dim\n }\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer\n },\n paramMappings\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport { BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`)\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`)\n\n return { filters, batch_norm_offset }\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n\n const mappedPrefix = `mobilenetv1/conv_${idx}`\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`)\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`)\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`)\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`)\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`)\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv)\n }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13)\n }\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`)\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`)\n\n return { filters, bias }\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`\n )\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`\n )\n\n return { box_encoding_predictor, class_predictor }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5)\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const extra_dim = weightMap['Output/extra_dim']\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' })\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`)\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.conv2d(x, params.filters, strides, 'same')\n out = tf.add(out, params.batch_norm_offset)\n return tf.clipByValue(out, 0, 6)\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same')\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon\n )\n return tf.clipByValue(out, 0, 6)\n\n })\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1]\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2])\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13\n ]\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx)\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides)\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1])\n if (layerIdx === 11) {\n conv11 = out\n }\n })\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null')\n }\n\n return {\n out,\n conv11: conv11 as any\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number\n): number[] {\n\n const numBoxes = boxes.shape[0]\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes\n )\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter(c => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score)\n\n const suppressFunc = (x: number) => x <= iouThreshold ? 1 : 0\n\n const selected: number[] = []\n\n candidates.forEach(c => {\n if (selected.length >= outputSize) {\n return\n }\n const originalScore = c.score\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j])\n if (iou === 0.0) {\n continue\n }\n c.score *= suppressFunc(iou)\n if (c.score <= scoreThreshold) {\n break\n }\n }\n\n if (originalScore === c.score) {\n selected.push(c.boxIndex)\n }\n })\n\n return selected\n}\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync()\n const yminI = Math.min(boxesData[i][0], boxesData[i][2])\n const xminI = Math.min(boxesData[i][1], boxesData[i][3])\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2])\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3])\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2])\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3])\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2])\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3])\n const areaI = (ymaxI - yminI) * (xmaxI - xminI)\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ)\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0\n }\n const intersectionYmin = Math.max(yminI, yminJ)\n const intersectionXmin = Math.max(xminI, xminJ)\n const intersectionYmax = Math.min(ymaxI, ymaxJ)\n const intersectionXmax = Math.min(xmaxI, xmaxJ)\n const intersectionArea =\n Math.max(intersectionYmax - intersectionYmin, 0.0) *\n Math.max(intersectionXmax - intersectionXmin, 0.0)\n return intersectionArea / (areaI + areaJ - intersectionArea)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]))\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1])\n ]\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2)))\n ]\n\n return {\n sizes,\n centers\n }\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers\n } = getCenterCoordinatesAndSizesLayer(x0)\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]))\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2))\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0])\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2))\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1])\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out)\n ]),\n [1, 0]\n )\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams\n) {\n return tf.tidy(() => {\n\n const batchSize = boxPredictions.shape[0]\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D\n )\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4]\n )\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]))\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number]\n )\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[]\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[]\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams\n) {\n return tf.tidy(() => {\n\n const batchSize = x.shape[0]\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4]\n )\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3]\n )\n\n return {\n boxPredictionEncoding,\n classPrediction\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams\n) {\n return tf.tidy(() => {\n\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1])\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2])\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1])\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2])\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1])\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2])\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1])\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2])\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0)\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1)\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2)\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3)\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4)\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5)\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding\n ], 1) as tf.Tensor4D\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction\n ], 1) as tf.Tensor4D\n\n return {\n boxPredictions,\n classPredictions\n }\n })\n}", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5\n this._maxResults = maxResults || 100\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`)\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`)\n }\n }\n\n get minConfidence(): number { return this._minConfidence }\n get maxResults(): number { return this._maxResults }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n\n constructor() {\n super('SsdMobilenetv1')\n }\n\n public forwardInput(input: NetInput) {\n\n const { params } = this\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D\n const features = mobileNetV1(x, params.mobilenetv1)\n\n const {\n boxPredictions,\n classPredictions\n } = predictionLayer(features.out, features.conv11, params.prediction_layer)\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer)\n })\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {}\n ): Promise {\n\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options)\n\n const netInput = await toNetInput(input)\n\n const {\n boxes: _boxes,\n scores: _scores\n } = this.forwardInput(netInput)\n\n\n // TODO batches\n const boxes = _boxes[0]\n const scores = _scores[0]\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose()\n _scores[i].dispose()\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data())\n\n const iouThreshold = 0.5\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence\n )\n\n const reshapedDims = netInput.getReshapedInputDimensions(0)\n const inputSize = netInput.inputSize as number\n const padX = inputSize / reshapedDims.width\n const padY = inputSize / reshapedDims.height\n\n const boxesData = boxes.arraySync()\n const results = indices\n .map(idx => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2])\n ].map(val => val * padY)\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3])\n ].map(val => val * padX)\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0)\n }\n )\n })\n\n boxes.dispose()\n scores.dispose()\n\n return results\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1()\n net.extractWeights(weights)\n return net\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights)\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741)\n]\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404]\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model'\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model'", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number'\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`)\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`)\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`)\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`)\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`)\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612))\n return tf.add(tf.relu(tf.sub(x, min)), min)\n //return tf.maximum(x, min)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid')\n out = tf.sub(out, params.bn.sub)\n out = tf.mul(out, params.bn.truediv)\n out = tf.add(out, params.conv.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid')\n out = tf.add(out, params.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n\n const sub = tf.tensor1d(extractWeights(size))\n const truediv = tf.tensor1d(extractWeights(size))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` }\n )\n\n return { sub, truediv }\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`)\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`)\n\n return { conv, bn }\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[]\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0')\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1')\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2')\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3')\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4')\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5')\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0',)\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1')\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2')\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3')\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4')\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5')\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6')\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7')\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1)\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1)\n return { sub, truediv }\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { filters, bias }\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`)\n const bn = extractBatchNormParams(`${prefix}/bn`)\n return { conv, bn }\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(weightMap, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const numFilters = (config.filterSizes && config.filterSizes.length || 9)\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8')\n }\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "export enum TinyYolov2SizeType {\n XS = 224,\n SM = 320,\n MD = 416,\n LG = 608\n}\n\nexport interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416\n this._scoreThreshold = scoreThreshold || 0.5\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`)\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)\n }\n }\n\n get inputSize(): number { return this._inputSize }\n get scoreThreshold(): number { return this._scoreThreshold }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2')\n validateConfig(config)\n this._config = config\n }\n\n public get config(): TinyYolov2Config {\n return this._config\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0)\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n\n let out = convWithBatchNorm(x, params.conv0)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = convWithBatchNorm(out, params.conv6)\n out = convWithBatchNorm(out, params.conv7)\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference')\n }\n\n return tf.tidy(() => {\n\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams)\n })\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return await this.forwardInput(await toNetInput(input), inputSize)\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams)\n\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput, inputSize)\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0)\n }\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold)\n out.dispose()\n out0.dispose()\n\n const boxes = results.map(res => res.box)\n const scores = results.map(res => res.score)\n const classScores = results.map(res => res.classScore)\n const classNames = results.map(res => this.config.classes[res.label])\n\n const indices = nonMaxSuppression(\n boxes.map(box => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true\n )\n\n const detections = indices.map(idx =>\n new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions\n )\n )\n\n return detections\n }\n\n protected getDefaultModelName(): string {\n return ''\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config)\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES\n\n const numFilters = filterSizes ? filterSizes.length : undefined\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`)\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes)\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number\n ) {\n\n const { width, height } = inputBlobDimensions\n const inputSize = Math.max(width, height)\n const correctionFactorX = inputSize / width\n const correctionFactorY = inputSize / height\n\n const numCells = outputTensor.shape[1]\n const numBoxes = this.config.anchors.length\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize])\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4])\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1])\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0)\n return [boxes, scores, classScores]\n })\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array()\n const boxesData = await boxesTensor.array()\n for (let row = 0; row < numCells; row ++) {\n for (let col = 0; col < numCells; col ++) {\n for (let anchor = 0; anchor < numBoxes; anchor ++) {\n\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY\n const width = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX\n const height = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY\n\n const x = (ctX - (width / 2))\n const y = (ctY - (height / 2))\n\n const pos = { row, col, anchor }\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 }\n\n results.push({\n box: new BoundingBox(x, y, x + width, y + height),\n score: score,\n classScore: score * classScore,\n label,\n ...pos\n })\n }\n }\n }\n }\n\n boxesTensor.dispose()\n scoresTensor.dispose()\n classScoresTensor.dispose()\n\n return results\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number },) {\n const { row, col, anchor } = pos\n const classesData = await classesTensor.array()\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label\n }))\n .reduce((max, curr) => max.classScore > curr.classScore ? max : curr)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n\n constructor(withSeparableConvs: boolean = true) {\n const config = Object.assign({}, {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face']\n },\n withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true\n }\n )\n\n super(config)\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config'\nexport * from './types'\n\nexport { TinyYolov2 }\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs)\n net.extractWeights(weights)\n return net\n}", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}", "export class ComposableTask {\n\n public async then(\n onfulfilled: (value: T) => T | PromiseLike\n ): Promise {\n return onfulfilled(await this.run())\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented')\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect\n) {\n const faceBoxes = parentResults.map(parentResult =>\n isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection\n )\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n )\n\n const results = await computeResults(faces)\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return results\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async faces => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment\n )\n}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404]", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512]\n }\n\n super(config)\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks5 } from '../classes/FaceLandmarks5';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet()\n}\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise =>\n nets.ssdMobilenetv1.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise =>\n nets.tinyFaceDetector.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise =>\n nets.tinyYolov2.locateFaces(input, options)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise =>\n nets.faceLandmark68Net.detectLandmarks(input)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise =>\n nets.faceLandmark68TinyNet.detectLandmarks(input)\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise =>\n nets.faceRecognitionNet.computeFaceDescriptor(input)\n\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise =>\n nets.faceExpressionNet.predictExpressions(input)\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise =>\n nets.ageGenderNet.predictAgeAndGender(input)\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url)\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url)\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url)\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url)\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url)\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url)\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url)\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url)\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model\nexport const locateFaces = ssdMobilenetv1\nexport const detectLandmarks = detectFaceLandmarks", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.faceExpressionNet.predictExpressions(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i])\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithFaceExpressions(parentResult, faceExpressions)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n\n public async run(): Promise>[]> {\n\n const parentResults = await this.parentTask\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i]\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n })\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n\n public async run(): Promise> | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput\n ) {\n super()\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n faces => Promise.all(faces.map(face =>\n nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise\n )),\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor))\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return extendWithFaceDescriptor(parentResult, descriptor)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected useTinyLandmarkNet: boolean\n ) {\n super()\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n const detections = parentResults.map(res => res.detection)\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections)\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n face => this.landmarkNet.detectLandmarks(face)\n )) as FaceLandmarks68[]\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return parentResults.map((parentResult, i) =>\n extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i])\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection])\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return extendWithFaceLandmarks(parentResult, landmarks)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n protected input: TNetInput,\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options()\n ) {\n super()\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n\n const { input, options } = this\n\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n options instanceof SsdMobilenetv1Options\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n )\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options')\n }\n\n return faceDetectionFunction(input)\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n return new Promise[]>(async res => {\n const detections = await this.run()\n return res(detections.map(detection => extendWithFaceDetection({}, detection)))\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask (\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach(faceDetection => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n return new Promise | undefined>(async res => {\n const detection = await this.run()\n return res(detection ? extendWithFaceDetection<{}>({}, detection) : undefined)\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n}", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options)\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options)\n}", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number\n): Promise>>[]> {\n console.warn('allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {}\n): Promise>>[]> {\n console.warn('allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport const allFaces = allFacesSsdMobilenetv1\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n\n private _labeledDescriptors: LabeledFaceDescriptors[]\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6\n ) {\n\n this._distanceThreshold = distanceThreshold\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs]\n\n if (!inputArray.length) {\n throw new Error(`FaceRecognizer.constructor - expected atleast one input`)\n }\n\n let count = 1\n const createUniqueLabel = () => `person ${count++}`\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc])\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor])\n }\n\n throw new Error(`FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>`)\n })\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors }\n public get distanceThreshold(): number { return this._distanceThreshold }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map(d => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1)\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors)\n ))\n .reduce((best, curr) => best.distance < curr.distance ? best : curr)\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor)\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance)\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON())\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n\n}", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector()\n net.extractWeights(weights)\n return net\n}", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n"], - "mappings": "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CAAC,IAAK,EAAI,KAC7D,YAAc,SACd,cAAc,KAAK,UAGrB,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,gBAAoB,aAAK,kBAAkB,EAAoB,mBAC7C,SAAQ,eAAe,GAAI,QAAS,kBAElD,OAAM,CAAC,OAAQ,CAAC,EAAG,UAAW,EAAG,aAAc,QAAA,sBAE/C,OAAK,CAAC,OAAQ,CAAC,EAAG,MAAO,QAAA,SAAS,MAAO,CAAC,MAAO,mBAEjD,UAAS,CAAC,OAAQ,CAAC,EAAG,WAAY,EAAG,GAAI,QAAA,yBAEzC,MAAI,CAAC,OAAQ,CAAC,EAAG,OAAM,QAAA,SAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,IAAI,KAAK,eACT,cAAc,KAAK,WACnB,cAAc,KAAK,MACnB,cAAc,KAAK,YACnB,cAAc,KAAK,OACnB,cAAc,KAAK,eAGrB,WAAe,KAAK,CAAC,OAAQ,IAAK,QAAA,SAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,eAAc,QAAQ,GAAK,SAAQ,8BAA8B,IAE1D,OAGF,6BAA+C,CACpD,WAAY,mBACZ,YAAa,MACb,WAAY,mCC2FwB,CACpC,mBACA,UACA,WACA,YACA,UACA,WACA,UACA,UACA,aACA,aACA,WACA,YACA,WACA,YACA,YACA,cACA,gBACA,qBACA,mBACA,kBACA,gBACA,qBACA,eACA,WACA,WACA,WACA,cACA,iBACA,aACA,2BACA,0BACA,aACA,6BACA,4BACA,aACA,UACA,WACA,oBACA,aACA,oBACA,mBACA,4BACA,0CACA,yCACA,WACA,iBACA,8BACA,+BACA,cACA,UACA,eACA,YACA,UACA,UACA,iBACA,YACA,UACA,WACA,oBACA,YACA,eACA,kBACA,2BACA,eACA,eACA,cACA,mBACA,eACA,WACA,WACA,eACA,YACA,YACA,gBACA,WACA,gBACA,eACA,UACA,YACA,iBACA,iBACA,gBACA,UACA,cACA,cACA,cACA,gBACA,qBACA,mBACA,wBACA,UACA,WACA,UACA,cACA,gBACA,UACA,kBACA,eACA,UACA,0BACA,0BACA,0BACA,eACA,aACA,eACA,WACA,YACA,UACA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AAA,sBAClC,GAAI,kBAAiB,UAAW,kBACjC,SAAQ,cAAc,QAAS,CAAC,GAAG,aAAa,OAG/D,GAFA,UAAU,KAAK,QAEX,OAAO,MAAM,KAAO,aACtB,MAAO,QAET,cAAkB,OAAM,CACtB,QAAA,SACA,MAAO,CAAC,MAAO,EAAG,KAAM,aAAa,KAAM,EAAG,MAAO,sBAEtC,MAAK,CACpB,OAAQ,CAAC,EAAG,WACZ,QAAA,SACA,MAAO,CAAC,KAAM,CAAC,QAAS,eAG1B,UAAU,KAAK,WACf,UAAU,KAAK,UAEf,YACI,aAAa,OAAQ,UAAW,SAAU,MAAO,cACrD,MAAO,sBAGO,aAChB,IAAK,qBAAsB,WAAY,YAAa,sBAGpD,UAAQ,CAAC,OAAQ,CAAC,EAAG,aAAc,QAAA,SAAS,MAAO,CAAC,MAAO,mBAElD,SACb,GAAI,aAAe,MACjB,UAAU,KAAK,UACf,SAAa,qBAAa,uBAAuB,aACjD,OAAS,YAAU,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,QAG5D,MAAA,WAAU,QAAQ,GAAK,SAAQ,8BAA8B,IACtD,OAGF,8BAA+C,CACpD,WAAY,mBACZ,YAAa,QACb,WAAY,oCC4DwB,CACpC,UACA,cACA,oBACA,WACA,YACA,aACA,WACA,YACA,WACA,WACA,cACA,cACA,YACA,aACA,aACA,YACA,aACA,iBACA,eACA,oBACA,mBACA,mBACA,iBACA,sBACA,gBACA,YACA,YACA,kBACA,kBACA,eACA,cACA,4BACA,2BACA,cACA,8BACA,0BACA,cACA,WACA,YACA,qBACA,cACA,qBACA,oBACA,2CACA,0CACA,6BACA,YACA,iBACA,WACA,eACA,aACA,WACA,WACA,kBACA,aACA,WACA,YACA,qBACA,aACA,gBACA,iBACA,mBACA,4BACA,gBACA,gBACA,eACA,oBACA,gBACA,YACA,YACA,gBACA,aACA,aACA,iBACA,YACA,iBACA,gBACA,aACA,WACA,kBACA,kBACA,iBACA,WACA,iBACA,eACA,oBACA,mBACA,yBACA,eACA,YACA,WACA,eACA,iBACA,WACA,mBACA,gBACA,WACA,2BACA,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", + "sources": ["../src/env/isNodejs.ts", "../src/index.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/imageToSquare.ts", "../src/dom/NetInput.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/common/getModelUris.ts", "../src/dom/loadWeightMap.ts", "../src/dom/matchDimensions.ts", "../src/NeuralNetwork.ts", "../src/common/depthwiseSeparableConv.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/types.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/xception/TinyXception.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts"], + "sourcesContent": ["export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}"], + "mappings": "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,EAAI,KAC7D,YAAc,SACd,cAAc,KAAK,UAGrB,UAAa,EAAG,EAAI,YAAa,EAAE,GACjC,gBAAoB,aAAK,kBAAkB,EAAoB,mBAC7C,SAAQ,eAAe,GAAI,QAAS,kBAElD,OAAM,CAAC,OAAQ,CAAC,EAAG,UAAW,EAAG,aAAc,QAAA,sBAE/C,OAAK,CAAC,OAAQ,CAAC,EAAG,MAAO,QAAA,SAAS,MAAO,CAAC,MAAO,mBAEjD,UAAS,CAAC,OAAQ,CAAC,EAAG,WAAY,EAAG,GAAI,QAAA,yBAEzC,MAAI,CAAC,OAAQ,CAAC,EAAG,OAAM,QAAA,SAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,IAAI,KAAK,eACT,cAAc,KAAK,WACnB,cAAc,KAAK,MACnB,cAAc,KAAK,YACnB,cAAc,KAAK,OACnB,cAAc,KAAK,eAGrB,WAAe,KAAK,CAAC,OAAQ,IAAK,QAAA,SAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,eAAc,QAAQ,GAAK,SAAQ,8BAA8B,IAE1D,OAGF,6BAA+C,CACpD,WAAY,mBACZ,YAAa,MACb,WAAY,mCC2FwB,CACpC,mBACA,UACA,WACA,YACA,UACA,WACA,UACA,UACA,aACA,aACA,WACA,YACA,WACA,YACA,YACA,cACA,gBACA,qBACA,mBACA,kBACA,gBACA,qBACA,eACA,WACA,WACA,WACA,cACA,iBACA,aACA,2BACA,0BACA,aACA,6BACA,4BACA,aACA,UACA,WACA,oBACA,aACA,oBACA,mBACA,4BACA,0CACA,yCACA,WACA,iBACA,8BACA,+BACA,cACA,UACA,eACA,YACA,UACA,UACA,iBACA,YACA,UACA,WACA,oBACA,YACA,eACA,kBACA,2BACA,eACA,eACA,cACA,mBACA,eACA,WACA,WACA,eACA,YACA,YACA,gBACA,WACA,gBACA,eACA,UACA,YACA,iBACA,iBACA,gBACA,UACA,cACA,cACA,cACA,gBACA,qBACA,mBACA,wBACA,UACA,WACA,UACA,cACA,gBACA,UACA,kBACA,eACA,UACA,0BACA,0BACA,0BACA,eACA,aACA,eACA,WACA,YACA,UACA,YACA,WAC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AAiB,UAAW,kBACjC,SAAQ,cAAc,QAAS,CAAC,GAAG,aAAa,OAG/D,GAFA,UAAU,KAAK,QAEX,OAAO,MAAM,KAAO,aACtB,MAAO,QAET,cAAkB,OAAM,CACtB,QAAA,SACA,MAAO,CAAC,MAAO,EAAG,KAAM,aAAa,KAAM,EAAG,MAAO,sBAEtC,MAAK,CACpB,OAAQ,CAAC,EAAG,WACZ,QAAA,SACA,MAAO,CAAC,KAAM,CAAC,QAAS,eAG1B,UAAU,KAAK,WACf,UAAU,KAAK,UAEf,YACI,aAAa,OAAQ,UAAW,SAAU,MAAO,cACrD,MAAO,sBAGO,aAChB,IAAK,qBAAsB,WAAY,YAAa,sBAGpD,UAAQ,CAAC,OAAQ,CAAC,EAAG,aAAc,QAAA,SAAS,MAAO,CAAC,MAAO,mBAElD,SACb,GAAI,aAAe,MACjB,UAAU,KAAK,UACf,SAAa,qBAAa,uBAAuB,aACjD,OAAS,YAAU,CAAC,OAAQ,CAAC,EAAG,QAAS,QAAA,SAAS,MAAO,CAAC,QAG5D,MAAA,WAAU,QAAQ,GAAK,SAAQ,8BAA8B,IACtD,OAGF,8BAA+C,CACpD,WAAY,mBACZ,YAAa,QACb,WAAY,oCC4DwB,CACpC,UACA,cACA,oBACA,WACA,YACA,aACA,WACA,YACA,WACA,WACA,cACA,cACA,YACA,aACA,aACA,YACA,aACA,iBACA,eACA,oBACA,mBACA,mBACA,iBACA,sBACA,gBACA,YACA,YACA,kBACA,kBACA,eACA,cACA,4BACA,2BACA,cACA,8BACA,0BACA,cACA,WACA,YACA,qBACA,cACA,qBACA,oBACA,2CACA,0CACA,6BACA,YACA,iBACA,WACA,eACA,aACA,WACA,WACA,kBACA,aACA,WACA,YACA,qBACA,aACA,gBACA,iBACA,mBACA,4BACA,gBACA,gBACA,eACA,oBACA,gBACA,YACA,YACA,gBACA,aACA,aACA,iBACA,YACA,iBACA,gBACA,aACA,WACA,kBACA,kBACA,iBACA,WACA,iBACA,eACA,oBACA,mBACA,yBACA,eACA,YACA,WACA,eACA,iBACA,WACA,mBACA,gBACA,WACA,2BACA,2BACA,2BACA,gBACA,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", "names": [] } diff --git a/dist/face-api.json b/dist/face-api.json index 9811e58..acbf340 100644 --- a/dist/face-api.json +++ b/dist/face-api.json @@ -1,15 +1,15 @@ { "inputs": { "dist/tfjs.esm.js": { - "bytes": 1572551, + "bytes": 1572418, "imports": [] }, "src/draw/drawContour.ts": { - "bytes": 526, + "bytes": 539, "imports": [] }, "src/classes/Dimensions.ts": { - "bytes": 737, + "bytes": 745, "imports": [ { "path": "src/utils/index.ts" @@ -17,7 +17,7 @@ ] }, "src/utils/index.ts": { - "bytes": 1776, + "bytes": 1845, "imports": [ { "path": "dist/tfjs.esm.js" @@ -31,11 +31,11 @@ ] }, "src/classes/Point.ts": { - "bytes": 923, + "bytes": 925, "imports": [] }, "src/classes/Box.ts": { - "bytes": 5477, + "bytes": 5690, "imports": [ { "path": "src/utils/index.ts" @@ -46,7 +46,7 @@ ] }, "src/classes/BoundingBox.ts": { - "bytes": 389, + "bytes": 402, "imports": [ { "path": "src/classes/Box.ts" @@ -54,7 +54,7 @@ ] }, "src/classes/ObjectDetection.ts": { - "bytes": 1395, + "bytes": 1424, "imports": [ { "path": "src/classes/Box.ts" @@ -65,7 +65,7 @@ ] }, "src/classes/FaceDetection.ts": { - "bytes": 651, + "bytes": 656, "imports": [ { "path": "src/classes/ObjectDetection.ts" @@ -73,11 +73,11 @@ ] }, "src/ops/iou.ts": { - "bytes": 468, + "bytes": 473, "imports": [] }, "src/ops/minBbox.ts": { - "bytes": 479, + "bytes": 498, "imports": [ { "path": "src/classes/index.ts" @@ -85,7 +85,7 @@ ] }, "src/ops/nonMaxSuppression.ts": { - "bytes": 908, + "bytes": 924, "imports": [ { "path": "src/ops/iou.ts" @@ -93,7 +93,7 @@ ] }, "src/ops/normalize.ts": { - "bytes": 478, + "bytes": 486, "imports": [ { "path": "dist/tfjs.esm.js" @@ -101,7 +101,7 @@ ] }, "src/ops/padToSquare.ts": { - "bytes": 1659, + "bytes": 1687, "imports": [ { "path": "dist/tfjs.esm.js" @@ -109,11 +109,11 @@ ] }, "src/ops/shuffleArray.ts": { - "bytes": 274, + "bytes": 273, "imports": [] }, "src/ops/index.ts": { - "bytes": 322, + "bytes": 331, "imports": [ { "path": "src/ops/iou.ts" @@ -136,7 +136,7 @@ ] }, "src/classes/Rect.ts": { - "bytes": 346, + "bytes": 359, "imports": [ { "path": "src/classes/Box.ts" @@ -144,7 +144,7 @@ ] }, "src/classes/FaceLandmarks.ts": { - "bytes": 4167, + "bytes": 4199, "imports": [ { "path": "src/ops/index.ts" @@ -170,7 +170,7 @@ ] }, "src/classes/FaceLandmarks5.ts": { - "bytes": 358, + "bytes": 360, "imports": [ { "path": "src/utils/index.ts" @@ -181,7 +181,7 @@ ] }, "src/classes/FaceLandmarks68.ts": { - "bytes": 905, + "bytes": 915, "imports": [ { "path": "src/utils/index.ts" @@ -192,7 +192,7 @@ ] }, "src/classes/FaceMatch.ts": { - "bytes": 570, + "bytes": 578, "imports": [ { "path": "src/utils/index.ts" @@ -200,7 +200,7 @@ ] }, "src/classes/LabeledBox.ts": { - "bytes": 641, + "bytes": 645, "imports": [ { "path": "src/utils/index.ts" @@ -211,11 +211,11 @@ ] }, "src/classes/LabeledFaceDescriptors.ts": { - "bytes": 1083, + "bytes": 1072, "imports": [] }, "src/classes/PredictedBox.ts": { - "bytes": 944, + "bytes": 952, "imports": [ { "path": "src/utils/index.ts" @@ -226,7 +226,7 @@ ] }, "src/classes/index.ts": { - "bytes": 427, + "bytes": 436, "imports": [ { "path": "src/classes/BoundingBox.ts" @@ -273,7 +273,7 @@ ] }, "src/factories/WithFaceDetection.ts": { - "bytes": 496, + "bytes": 486, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -281,15 +281,15 @@ ] }, "src/env/createBrowserEnv.ts": { - "bytes": 685, + "bytes": 636, "imports": [] }, "src/env/createFileSystem.ts": { - "bytes": 650, + "bytes": 654, "imports": [] }, "src/env/createNodejsEnv.ts": { - "bytes": 1170, + "bytes": 1202, "imports": [ { "path": "src/env/createFileSystem.ts" @@ -297,19 +297,19 @@ ] }, "src/env/isBrowser.ts": { - "bytes": 352, + "bytes": 354, "imports": [] }, "src/env/isNodejs.ts": { - "bytes": 293, + "bytes": 295, "imports": [] }, "src/env/types.ts": { - "bytes": 470, + "bytes": 570, "imports": [] }, "src/env/index.ts": { - "bytes": 1801, + "bytes": 1817, "imports": [ { "path": "src/env/createBrowserEnv.ts" @@ -332,7 +332,7 @@ ] }, "src/dom/resolveInput.ts": { - "bytes": 197, + "bytes": 200, "imports": [ { "path": "src/env/index.ts" @@ -340,7 +340,7 @@ ] }, "src/dom/getContext2dOrThrow.ts": { - "bytes": 666, + "bytes": 673, "imports": [ { "path": "src/env/index.ts" @@ -351,7 +351,7 @@ ] }, "src/draw/DrawTextField.ts": { - "bytes": 3710, + "bytes": 4094, "imports": [ { "path": "src/dom/getContext2dOrThrow.ts" @@ -362,7 +362,7 @@ ] }, "src/draw/DrawBox.ts": { - "bytes": 1750, + "bytes": 1831, "imports": [ { "path": "src/classes/index.ts" @@ -376,7 +376,7 @@ ] }, "src/draw/drawDetections.ts": { - "bytes": 1018, + "bytes": 1128, "imports": [ { "path": "src/classes/index.ts" @@ -396,7 +396,7 @@ ] }, "src/dom/isMediaLoaded.ts": { - "bytes": 276, + "bytes": 277, "imports": [ { "path": "src/env/index.ts" @@ -404,7 +404,7 @@ ] }, "src/dom/awaitMediaLoaded.ts": { - "bytes": 848, + "bytes": 963, "imports": [ { "path": "src/env/index.ts" @@ -415,7 +415,7 @@ ] }, "src/dom/bufferToImage.ts": { - "bytes": 691, + "bytes": 687, "imports": [ { "path": "src/env/index.ts" @@ -423,7 +423,7 @@ ] }, "src/dom/getMediaDimensions.ts": { - "bytes": 526, + "bytes": 529, "imports": [ { "path": "src/classes/Dimensions.ts" @@ -434,7 +434,7 @@ ] }, "src/dom/createCanvas.ts": { - "bytes": 1128, + "bytes": 1139, "imports": [ { "path": "src/env/index.ts" @@ -451,7 +451,7 @@ ] }, "src/dom/imageTensorToCanvas.ts": { - "bytes": 611, + "bytes": 618, "imports": [ { "path": "dist/tfjs.esm.js" @@ -465,7 +465,7 @@ ] }, "src/dom/isMediaElement.ts": { - "bytes": 226, + "bytes": 228, "imports": [ { "path": "src/env/index.ts" @@ -473,7 +473,7 @@ ] }, "src/dom/imageToSquare.ts": { - "bytes": 1162, + "bytes": 1175, "imports": [ { "path": "src/env/index.ts" @@ -490,7 +490,7 @@ ] }, "src/dom/NetInput.ts": { - "bytes": 5465, + "bytes": 5511, "imports": [ { "path": "dist/tfjs.esm.js" @@ -513,7 +513,7 @@ ] }, "src/dom/toNetInput.ts": { - "bytes": 2100, + "bytes": 2115, "imports": [ { "path": "src/utils/index.ts" @@ -533,7 +533,7 @@ ] }, "src/dom/extractFaces.ts": { - "bytes": 1755, + "bytes": 1782, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -556,7 +556,7 @@ ] }, "src/dom/extractFaceTensors.ts": { - "bytes": 1718, + "bytes": 1733, "imports": [ { "path": "dist/tfjs.esm.js" @@ -570,7 +570,7 @@ ] }, "src/dom/fetchOrThrow.ts": { - "bytes": 348, + "bytes": 390, "imports": [ { "path": "src/env/index.ts" @@ -578,7 +578,7 @@ ] }, "src/dom/fetchImage.ts": { - "bytes": 447, + "bytes": 451, "imports": [ { "path": "src/dom/bufferToImage.ts" @@ -589,7 +589,7 @@ ] }, "src/dom/fetchJson.ts": { - "bytes": 154, + "bytes": 155, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -597,7 +597,7 @@ ] }, "src/dom/fetchNetWeights.ts": { - "bytes": 199, + "bytes": 200, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -605,11 +605,11 @@ ] }, "src/common/getModelUris.ts": { - "bytes": 990, + "bytes": 1052, "imports": [] }, "src/dom/loadWeightMap.ts": { - "bytes": 549, + "bytes": 555, "imports": [ { "path": "dist/tfjs.esm.js" @@ -623,7 +623,7 @@ ] }, "src/dom/matchDimensions.ts": { - "bytes": 396, + "bytes": 401, "imports": [ { "path": "src/dom/getMediaDimensions.ts" @@ -631,11 +631,11 @@ ] }, "src/dom/types.ts": { - "bytes": 385, + "bytes": 386, "imports": [] }, "src/dom/index.ts": { - "bytes": 674, + "bytes": 696, "imports": [ { "path": "src/dom/awaitMediaLoaded.ts" @@ -720,7 +720,7 @@ ] }, "src/common/depthwiseSeparableConv.ts": { - "bytes": 411, + "bytes": 417, "imports": [ { "path": "dist/tfjs.esm.js" @@ -728,7 +728,7 @@ ] }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytes": 2021, + "bytes": 2041, "imports": [ { "path": "dist/tfjs.esm.js" @@ -739,7 +739,7 @@ ] }, "src/common/convLayer.ts": { - "bytes": 425, + "bytes": 431, "imports": [ { "path": "dist/tfjs.esm.js" @@ -747,11 +747,11 @@ ] }, "src/common/disposeUnusedWeightTensors.ts": { - "bytes": 284, + "bytes": 290, "imports": [] }, "src/common/extractConvParamsFactory.ts": { - "bytes": 768, + "bytes": 769, "imports": [ { "path": "dist/tfjs.esm.js" @@ -767,11 +767,11 @@ ] }, "src/common/types.ts": { - "bytes": 513, + "bytes": 800, "imports": [] }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytes": 1490, + "bytes": 1536, "imports": [ { "path": "dist/tfjs.esm.js" @@ -782,7 +782,7 @@ ] }, "src/common/extractWeightEntryFactory.ts": { - "bytes": 587, + "bytes": 579, "imports": [ { "path": "src/utils/index.ts" @@ -790,11 +790,11 @@ ] }, "src/common/extractWeightsFactory.ts": { - "bytes": 433, + "bytes": 441, "imports": [] }, "src/common/index.ts": { - "bytes": 388, + "bytes": 399, "imports": [ { "path": "src/common/convLayer.ts" @@ -829,7 +829,7 @@ ] }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytes": 1568, + "bytes": 1587, "imports": [ { "path": "src/common/index.ts" @@ -837,7 +837,7 @@ ] }, "src/faceFeatureExtractor/extractParams.ts": { - "bytes": 1008, + "bytes": 1030, "imports": [ { "path": "src/common/index.ts" @@ -848,11 +848,11 @@ ] }, "src/common/loadConvParamsFactory.ts": { - "bytes": 426, + "bytes": 469, "imports": [] }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytes": 1522, + "bytes": 1547, "imports": [ { "path": "src/common/index.ts" @@ -863,7 +863,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytes": 833, + "bytes": 841, "imports": [ { "path": "src/common/index.ts" @@ -874,7 +874,7 @@ ] }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytes": 1794, + "bytes": 1809, "imports": [ { "path": "dist/tfjs.esm.js" @@ -900,7 +900,7 @@ ] }, "src/common/fullyConnectedLayer.ts": { - "bytes": 275, + "bytes": 266, "imports": [ { "path": "dist/tfjs.esm.js" @@ -908,7 +908,7 @@ ] }, "src/faceProcessor/extractParams.ts": { - "bytes": 751, + "bytes": 759, "imports": [ { "path": "src/common/index.ts" @@ -916,7 +916,7 @@ ] }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytes": 839, + "bytes": 826, "imports": [ { "path": "src/common/index.ts" @@ -924,11 +924,11 @@ ] }, "src/faceProcessor/util.ts": { - "bytes": 417, + "bytes": 424, "imports": [] }, "src/faceProcessor/FaceProcessor.ts": { - "bytes": 3015, + "bytes": 3037, "imports": [ { "path": "dist/tfjs.esm.js" @@ -954,11 +954,11 @@ ] }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytes": 855, + "bytes": 869, "imports": [] }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytes": 1648, + "bytes": 1667, "imports": [ { "path": "dist/tfjs.esm.js" @@ -978,7 +978,7 @@ ] }, "src/faceExpressionNet/index.ts": { - "bytes": 71, + "bytes": 72, "imports": [ { "path": "src/faceExpressionNet/FaceExpressionNet.ts" @@ -989,7 +989,7 @@ ] }, "src/factories/WithFaceExpressions.ts": { - "bytes": 533, + "bytes": 524, "imports": [ { "path": "src/faceExpressionNet/FaceExpressions.ts" @@ -997,7 +997,7 @@ ] }, "src/draw/drawFaceExpressions.ts": { - "bytes": 1519, + "bytes": 1612, "imports": [ { "path": "src/classes/index.ts" @@ -1020,7 +1020,7 @@ ] }, "src/factories/WithFaceLandmarks.ts": { - "bytes": 1507, + "bytes": 1643, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -1034,7 +1034,7 @@ ] }, "src/draw/DrawFaceLandmarks.ts": { - "bytes": 3371, + "bytes": 3528, "imports": [ { "path": "src/classes/FaceLandmarks.ts" @@ -1054,7 +1054,7 @@ ] }, "src/draw/index.ts": { - "bytes": 194, + "bytes": 201, "imports": [ { "path": "src/draw/drawContour.ts" @@ -1076,8 +1076,12 @@ } ] }, + "package.json": { + "bytes": 1719, + "imports": [] + }, "src/xception/extractParams.ts": { - "bytes": 3412, + "bytes": 3440, "imports": [ { "path": "src/common/index.ts" @@ -1088,7 +1092,7 @@ ] }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytes": 3105, + "bytes": 3133, "imports": [ { "path": "src/common/index.ts" @@ -1102,7 +1106,7 @@ ] }, "src/xception/TinyXception.ts": { - "bytes": 3123, + "bytes": 3151, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1131,7 +1135,7 @@ ] }, "src/ageGenderNet/extractParams.ts": { - "bytes": 769, + "bytes": 778, "imports": [ { "path": "src/common/index.ts" @@ -1139,7 +1143,7 @@ ] }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytes": 906, + "bytes": 894, "imports": [ { "path": "src/common/index.ts" @@ -1147,11 +1151,11 @@ ] }, "src/ageGenderNet/types.ts": { - "bytes": 399, + "bytes": 528, "imports": [] }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytes": 4223, + "bytes": 4272, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1183,7 +1187,7 @@ ] }, "src/ageGenderNet/index.ts": { - "bytes": 56, + "bytes": 57, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1194,7 +1198,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytes": 3695, + "bytes": 3720, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1217,7 +1221,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytes": 619, + "bytes": 622, "imports": [ { "path": "src/faceFeatureExtractor/FaceFeatureExtractor.ts" @@ -1228,7 +1232,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytes": 797, + "bytes": 805, "imports": [ { "path": "src/common/index.ts" @@ -1239,7 +1243,7 @@ ] }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytes": 951, + "bytes": 960, "imports": [ { "path": "src/common/index.ts" @@ -1250,7 +1254,7 @@ ] }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytes": 1805, + "bytes": 1819, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1276,7 +1280,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytes": 656, + "bytes": 659, "imports": [ { "path": "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts" @@ -1287,7 +1291,7 @@ ] }, "src/faceLandmarkNet/index.ts": { - "bytes": 194, + "bytes": 195, "imports": [ { "path": "src/faceLandmarkNet/FaceLandmark68Net.ts" @@ -1301,7 +1305,7 @@ ] }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytes": 231, + "bytes": 232, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1309,7 +1313,7 @@ ] }, "src/faceRecognitionNet/convLayer.ts": { - "bytes": 844, + "bytes": 853, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1320,7 +1324,7 @@ ] }, "src/faceRecognitionNet/extractParams.ts": { - "bytes": 4855, + "bytes": 4910, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1334,7 +1338,7 @@ ] }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytes": 3121, + "bytes": 3104, "imports": [ { "path": "src/common/index.ts" @@ -1345,7 +1349,7 @@ ] }, "src/faceRecognitionNet/residualLayer.ts": { - "bytes": 1321, + "bytes": 1345, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1356,7 +1360,7 @@ ] }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytes": 2946, + "bytes": 2984, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1385,7 +1389,7 @@ ] }, "src/faceRecognitionNet/index.ts": { - "bytes": 248, + "bytes": 252, "imports": [ { "path": "src/faceRecognitionNet/FaceRecognitionNet.ts" @@ -1396,15 +1400,15 @@ ] }, "src/factories/WithFaceDescriptor.ts": { - "bytes": 310, + "bytes": 301, "imports": [] }, "src/factories/WithAge.ts": { - "bytes": 343, + "bytes": 334, "imports": [] }, "src/factories/WithGender.ts": { - "bytes": 633, + "bytes": 618, "imports": [ { "path": "src/ageGenderNet/types.ts" @@ -1415,7 +1419,7 @@ ] }, "src/factories/index.ts": { - "bytes": 201, + "bytes": 208, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1438,7 +1442,7 @@ ] }, "src/ssdMobilenetv1/extractParams.ts": { - "bytes": 8250, + "bytes": 8342, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1449,7 +1453,7 @@ ] }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytes": 5858, + "bytes": 5785, "imports": [ { "path": "src/common/index.ts" @@ -1460,7 +1464,7 @@ ] }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytes": 390, + "bytes": 394, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1468,7 +1472,7 @@ ] }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytes": 1794, + "bytes": 1814, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1479,11 +1483,11 @@ ] }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytes": 2193, + "bytes": 2190, "imports": [] }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytes": 2160, + "bytes": 2190, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1491,7 +1495,7 @@ ] }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytes": 612, + "bytes": 620, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1502,7 +1506,7 @@ ] }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytes": 2036, + "bytes": 2058, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1516,11 +1520,11 @@ ] }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytes": 872, + "bytes": 881, "imports": [] }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytes": 3784, + "bytes": 3829, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1561,7 +1565,7 @@ ] }, "src/ssdMobilenetv1/index.ts": { - "bytes": 466, + "bytes": 471, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1.ts" @@ -1575,7 +1579,7 @@ ] }, "src/tinyYolov2/const.ts": { - "bytes": 695, + "bytes": 704, "imports": [ { "path": "src/classes/index.ts" @@ -1583,11 +1587,11 @@ ] }, "src/tinyYolov2/config.ts": { - "bytes": 1696, + "bytes": 1701, "imports": [] }, "src/tinyYolov2/leaky.ts": { - "bytes": 269, + "bytes": 274, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1595,7 +1599,7 @@ ] }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytes": 528, + "bytes": 535, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1606,7 +1610,7 @@ ] }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytes": 500, + "bytes": 505, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1617,7 +1621,7 @@ ] }, "src/tinyYolov2/extractParams.ts": { - "bytes": 3862, + "bytes": 3921, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1634,7 +1638,7 @@ ] }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytes": 3265, + "bytes": 3287, "imports": [ { "path": "src/common/disposeUnusedWeightTensors.ts" @@ -1648,11 +1652,11 @@ ] }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytes": 987, + "bytes": 913, "imports": [] }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytes": 9605, + "bytes": 9703, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1705,7 +1709,7 @@ ] }, "src/tinyYolov2/TinyYolov2.ts": { - "bytes": 1792, + "bytes": 1804, "imports": [ { "path": "src/classes/index.ts" @@ -1719,11 +1723,11 @@ ] }, "src/tinyYolov2/types.ts": { - "bytes": 954, + "bytes": 955, "imports": [] }, "src/tinyYolov2/index.ts": { - "bytes": 342, + "bytes": 349, "imports": [ { "path": "src/tinyYolov2/TinyYolov2.ts" @@ -1740,7 +1744,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytes": 271, + "bytes": 272, "imports": [ { "path": "src/tinyYolov2/index.ts" @@ -1748,11 +1752,11 @@ ] }, "src/globalApi/ComposableTask.ts": { - "bytes": 273, + "bytes": 322, "imports": [] }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytes": 1848, + "bytes": 2040, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1766,7 +1770,7 @@ ] }, "src/tinyFaceDetector/const.ts": { - "bytes": 349, + "bytes": 354, "imports": [ { "path": "src/classes/index.ts" @@ -1774,7 +1778,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytes": 1463, + "bytes": 1473, "imports": [ { "path": "src/classes/index.ts" @@ -1788,7 +1792,7 @@ ] }, "src/globalApi/nets.ts": { - "bytes": 6529, + "bytes": 6336, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1817,7 +1821,7 @@ ] }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytes": 3635, + "bytes": 3830, "imports": [ { "path": "src/factories/WithFaceExpressions.ts" @@ -1840,7 +1844,7 @@ ] }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytes": 3815, + "bytes": 4011, "imports": [ { "path": "src/factories/WithAge.ts" @@ -1866,7 +1870,7 @@ ] }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytes": 3029, + "bytes": 3215, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1889,7 +1893,7 @@ ] }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytes": 3807, + "bytes": 4005, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1918,7 +1922,7 @@ ] }, "src/globalApi/DetectFacesTasks.ts": { - "bytes": 4073, + "bytes": 4604, "imports": [ { "path": "src/factories/WithFaceDetection.ts" @@ -1950,7 +1954,7 @@ ] }, "src/globalApi/detectFaces.ts": { - "bytes": 633, + "bytes": 638, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1Options.ts" @@ -1961,7 +1965,7 @@ ] }, "src/globalApi/allFaces.ts": { - "bytes": 1283, + "bytes": 1056, "imports": [ { "path": "src/ssdMobilenetv1/index.ts" @@ -1979,7 +1983,7 @@ "imports": [] }, "src/globalApi/FaceMatcher.ts": { - "bytes": 2973, + "bytes": 2992, "imports": [ { "path": "src/classes/FaceMatch.ts" @@ -1993,11 +1997,11 @@ ] }, "src/globalApi/types.ts": { - "bytes": 512, + "bytes": 556, "imports": [] }, "src/globalApi/index.ts": { - "bytes": 292, + "bytes": 300, "imports": [ { "path": "src/globalApi/allFaces.ts" @@ -2029,7 +2033,7 @@ ] }, "src/tinyFaceDetector/index.ts": { - "bytes": 281, + "bytes": 285, "imports": [ { "path": "src/tinyFaceDetector/TinyFaceDetector.ts" @@ -2062,12 +2066,8 @@ } ] }, - "package.json": { - "bytes": 1363, - "imports": [] - }, "src/index.ts": { - "bytes": 988, + "bytes": 1027, "imports": [ { "path": "dist/tfjs.esm.js" @@ -2078,6 +2078,9 @@ { "path": "src/utils/index.ts" }, + { + "path": "package.json" + }, { "path": "src/ageGenderNet/index.ts" }, @@ -2125,9 +2128,6 @@ }, { "path": "src/resizeResults.ts" - }, - { - "path": "package.json" } ] } @@ -2136,7 +2136,7 @@ "dist/face-api.js.map": { "imports": [], "inputs": {}, - "bytes": 2073250 + "bytes": 1350466 }, "dist/face-api.js": { "imports": [], @@ -2146,10 +2146,10 @@ "bytesInOutput": 224 }, "src/index.ts": { - "bytesInOutput": 4754 + "bytesInOutput": 4716 }, "dist/tfjs.esm.js": { - "bytesInOutput": 1571398 + "bytesInOutput": 1571399 }, "src/draw/index.ts": { "bytesInOutput": 451 @@ -2158,13 +2158,13 @@ "bytesInOutput": 313 }, "src/utils/index.ts": { - "bytesInOutput": 1522 + "bytesInOutput": 1520 }, "src/classes/Dimensions.ts": { "bytesInOutput": 398 }, "src/classes/Point.ts": { - "bytesInOutput": 490 + "bytesInOutput": 472 }, "src/classes/Box.ts": { "bytesInOutput": 3300 @@ -2197,7 +2197,7 @@ "bytesInOutput": 278 }, "src/ops/padToSquare.ts": { - "bytesInOutput": 825 + "bytesInOutput": 833 }, "src/ops/shuffleArray.ts": { "bytesInOutput": 195 @@ -2206,7 +2206,7 @@ "bytesInOutput": 135 }, "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1899 + "bytesInOutput": 1884 }, "src/classes/FaceLandmarks5.ts": { "bytesInOutput": 153 @@ -2227,22 +2227,22 @@ "bytesInOutput": 508 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 205 + "bytesInOutput": 194 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 491 + "bytesInOutput": 487 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 400 + "bytesInOutput": 376 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 826 + "bytesInOutput": 722 }, "src/env/isBrowser.ts": { "bytesInOutput": 275 }, "src/env/index.ts": { - "bytesInOutput": 1167 + "bytesInOutput": 1159 }, "src/dom/resolveInput.ts": { "bytesInOutput": 105 @@ -2254,7 +2254,7 @@ "bytesInOutput": 2254 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 831 + "bytesInOutput": 821 }, "src/draw/drawDetections.ts": { "bytesInOutput": 425 @@ -2269,7 +2269,7 @@ "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 482 + "bytesInOutput": 483 }, "src/dom/getMediaDimensions.ts": { "bytesInOutput": 275 @@ -2299,7 +2299,7 @@ "bytesInOutput": 722 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 222 + "bytesInOutput": 223 }, "src/dom/fetchImage.ts": { "bytesInOutput": 269 @@ -2338,19 +2338,19 @@ "bytesInOutput": 175 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 417 + "bytesInOutput": 410 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 385 + "bytesInOutput": 378 }, "src/common/types.ts": { "bytesInOutput": 177 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 906 + "bytesInOutput": 891 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 369 + "bytesInOutput": 362 }, "src/common/extractWeightsFactory.ts": { "bytesInOutput": 311 @@ -2362,7 +2362,7 @@ "bytesInOutput": 570 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 195 + "bytesInOutput": 187 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { "bytesInOutput": 984 @@ -2398,17 +2398,20 @@ "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 217 + "bytesInOutput": 206 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 784 + "bytesInOutput": 804 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 603 + "bytesInOutput": 592 }, "src/draw/DrawFaceLandmarks.ts": { "bytesInOutput": 1763 }, + "package.json": { + "bytesInOutput": 21 + }, "src/xception/extractParams.ts": { "bytesInOutput": 2444 }, @@ -2464,7 +2467,7 @@ "bytesInOutput": 3331 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2100 + "bytesInOutput": 2099 }, "src/faceRecognitionNet/residualLayer.ts": { "bytesInOutput": 713 @@ -2476,16 +2479,16 @@ "bytesInOutput": 113 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 128 + "bytesInOutput": 117 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 159 + "bytesInOutput": 148 }, "src/factories/WithGender.ts": { - "bytesInOutput": 279 + "bytesInOutput": 268 }, "src/ssdMobilenetv1/extractParams.ts": { "bytesInOutput": 5994 @@ -2542,13 +2545,13 @@ "bytesInOutput": 2042 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 901 + "bytesInOutput": 588 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5788 + "bytesInOutput": 5806 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 836 + "bytesInOutput": 821 }, "src/tinyYolov2/index.ts": { "bytesInOutput": 139 @@ -2572,10 +2575,10 @@ "bytesInOutput": 1532 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1703 + "bytesInOutput": 1697 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1797 + "bytesInOutput": 1791 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { "bytesInOutput": 1419 @@ -2584,13 +2587,13 @@ "bytesInOutput": 1863 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2229 + "bytesInOutput": 2231 }, "src/globalApi/detectFaces.ts": { "bytesInOutput": 228 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 624 + "bytesInOutput": 396 }, "src/globalApi/index.ts": { "bytesInOutput": 0 @@ -2606,12 +2609,9 @@ }, "src/resizeResults.ts": { "bytesInOutput": 824 - }, - "package.json": { - "bytesInOutput": 20 } }, - "bytes": 1708625 + "bytes": 1707773 } } } diff --git a/dist/face-api.node-gpu.js b/dist/face-api.node-gpu.js index f240107..f20a68b 100644 --- a/dist/face-api.node-gpu.js +++ b/dist/face-api.node-gpu.js @@ -5,5 +5,5 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2),require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node-gpu")))}),require_isNodejs=__commonJS((exports2,module2)=>{__export(exports2,{isNodejs:()=>isNodejs3});function isNodejs3(){return typeof global=="object"&&!0&&typeof module2!="undefined"&&typeof process!="undefined"&&!!process.version}});__export(exports,{AgeGenderNet:()=>AgeGenderNet,BoundingBox:()=>BoundingBox,Box:()=>Box,ComposableTask:()=>ComposableTask,ComputeAllFaceDescriptorsTask:()=>ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase:()=>ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask:()=>ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask:()=>DetectAllFaceLandmarksTask,DetectAllFacesTask:()=>DetectAllFacesTask,DetectFaceLandmarksTaskBase:()=>DetectFaceLandmarksTaskBase,DetectFacesTaskBase:()=>DetectFacesTaskBase,DetectSingleFaceLandmarksTask:()=>DetectSingleFaceLandmarksTask,DetectSingleFaceTask:()=>DetectSingleFaceTask,Dimensions:()=>Dimensions,FACE_EXPRESSION_LABELS:()=>FACE_EXPRESSION_LABELS,FaceDetection:()=>FaceDetection,FaceDetectionNet:()=>FaceDetectionNet,FaceExpressionNet:()=>FaceExpressionNet,FaceExpressions:()=>FaceExpressions,FaceLandmark68Net:()=>FaceLandmark68Net,FaceLandmark68TinyNet:()=>FaceLandmark68TinyNet,FaceLandmarkNet:()=>FaceLandmarkNet,FaceLandmarks:()=>FaceLandmarks,FaceLandmarks5:()=>FaceLandmarks5,FaceLandmarks68:()=>FaceLandmarks68,FaceMatch:()=>FaceMatch,FaceMatcher:()=>FaceMatcher,FaceRecognitionNet:()=>FaceRecognitionNet,Gender:()=>Gender,LabeledBox:()=>LabeledBox,LabeledFaceDescriptors:()=>LabeledFaceDescriptors,NetInput:()=>NetInput,NeuralNetwork:()=>NeuralNetwork,ObjectDetection:()=>ObjectDetection,Point:()=>Point,PredictedBox:()=>PredictedBox,Rect:()=>Rect,SsdMobilenetv1:()=>SsdMobilenetv1,SsdMobilenetv1Options:()=>SsdMobilenetv1Options,TinyFaceDetector:()=>TinyFaceDetector,TinyFaceDetectorOptions:()=>TinyFaceDetectorOptions,TinyYolov2:()=>TinyYolov2,TinyYolov2Options:()=>TinyYolov2Options,TinyYolov2SizeType:()=>TinyYolov2SizeType,allFaces:()=>allFaces,allFacesSsdMobilenetv1:()=>allFacesSsdMobilenetv1,allFacesTinyYolov2:()=>allFacesTinyYolov2,awaitMediaLoaded:()=>awaitMediaLoaded,bufferToImage:()=>bufferToImage,computeFaceDescriptor:()=>computeFaceDescriptor,createCanvas:()=>createCanvas,createCanvasFromMedia:()=>createCanvasFromMedia,createFaceDetectionNet:()=>createFaceDetectionNet,createFaceRecognitionNet:()=>createFaceRecognitionNet,createSsdMobilenetv1:()=>createSsdMobilenetv1,createTinyFaceDetector:()=>createTinyFaceDetector,createTinyYolov2:()=>createTinyYolov2,detectAllFaces:()=>detectAllFaces,detectFaceLandmarks:()=>detectFaceLandmarks,detectFaceLandmarksTiny:()=>detectFaceLandmarksTiny,detectLandmarks:()=>detectLandmarks,detectSingleFace:()=>detectSingleFace,draw:()=>draw_exports,env:()=>env,euclideanDistance:()=>euclideanDistance,extendWithAge:()=>extendWithAge,extendWithFaceDescriptor:()=>extendWithFaceDescriptor,extendWithFaceDetection:()=>extendWithFaceDetection,extendWithFaceExpressions:()=>extendWithFaceExpressions,extendWithFaceLandmarks:()=>extendWithFaceLandmarks,extendWithGender:()=>extendWithGender,extractFaceTensors:()=>extractFaceTensors,extractFaces:()=>extractFaces,fetchImage:()=>fetchImage,fetchJson:()=>fetchJson,fetchNetWeights:()=>fetchNetWeights,fetchOrThrow:()=>fetchOrThrow,getContext2dOrThrow:()=>getContext2dOrThrow,getMediaDimensions:()=>getMediaDimensions,imageTensorToCanvas:()=>imageTensorToCanvas,imageToSquare:()=>imageToSquare,inverseSigmoid:()=>inverseSigmoid,iou:()=>iou,isMediaElement:()=>isMediaElement,isMediaLoaded:()=>isMediaLoaded,isWithAge:()=>isWithAge,isWithFaceDetection:()=>isWithFaceDetection,isWithFaceExpressions:()=>isWithFaceExpressions,isWithFaceLandmarks:()=>isWithFaceLandmarks,isWithGender:()=>isWithGender,loadAgeGenderModel:()=>loadAgeGenderModel,loadFaceDetectionModel:()=>loadFaceDetectionModel,loadFaceExpressionModel:()=>loadFaceExpressionModel,loadFaceLandmarkModel:()=>loadFaceLandmarkModel,loadFaceLandmarkTinyModel:()=>loadFaceLandmarkTinyModel,loadFaceRecognitionModel:()=>loadFaceRecognitionModel,loadSsdMobilenetv1Model:()=>loadSsdMobilenetv1Model,loadTinyFaceDetectorModel:()=>loadTinyFaceDetectorModel,loadTinyYolov2Model:()=>loadTinyYolov2Model,loadWeightMap:()=>loadWeightMap,locateFaces:()=>locateFaces,matchDimensions:()=>matchDimensions,minBbox:()=>minBbox,nets:()=>nets,nonMaxSuppression:()=>nonMaxSuppression,normalize:()=>normalize,padToSquare:()=>padToSquare,predictAgeAndGender:()=>predictAgeAndGender,recognizeFaceExpressions:()=>recognizeFaceExpressions,resizeResults:()=>resizeResults,resolveInput:()=>resolveInput,shuffleArray:()=>shuffleArray,sigmoid:()=>sigmoid,ssdMobilenetv1:()=>ssdMobilenetv1,tf:()=>tf42,tinyFaceDetector:()=>tinyFaceDetector,tinyYolov2:()=>tinyYolov23,toNetInput:()=>toNetInput,utils:()=>utils_exports,validateConfig:()=>validateConfig,version:()=>version2});var tf42=__toModule(require_tfjs_esm()),draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range,round:()=>round});var tf=__toModule(require_tfjs_esm()),Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof tf.Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!==0}function isEven(num){return num%2===0}function round(num,prec=2){let f=Math.pow(10,prec);return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale2=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale2),Math.round(height*scale2))}function getCenterPoint(pts){return pts.reduce((sum,pt)=>sum.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range(num,start,step){return Array(num).fill(0).map((_,i)=>start+i*step)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&0<=num&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min,x)=>xymaxmax({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}var tf2=__toModule(require_tfjs_esm());function normalize(x,meanRgb){return tf2.tidy(()=>{let[r,g,b]=meanRgb,avg_r=tf2.fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=tf2.fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=tf2.fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=tf2.concat([avg_r,avg_g,avg_b],3);return tf2.sub(x,avg_rgb)})}var tf3=__toModule(require_tfjs_esm());function padToSquare(imgTensor,isCenterImage=!1){return tf3.tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmount2=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmount2,tf3.fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>tf3.cast(t,"float32"));return tf3.concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array=inputArray.slice();for(let i=array.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array[i];array[i]=array[j],array[j]=x}return array}function sigmoid(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},options);return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json){let descriptors=json.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return Object.assign({},sourceObj,extension)}function createBrowserEnv(){let fetch=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")},readFile=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?function(filePath){return new Promise((res,rej)=>{fs.readFile(filePath,function(err,buffer){return err?rej(err):res(buffer)})})}:function(){throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=function(){if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=function(){if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch=global.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch,...fileSystem}}function isBrowser(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env16){environment=env16}function initialize(){if(isBrowser())return setEnv(createBrowserEnv());if(isNodejs.isNodejs())return setEnv(createNodejsEnv())}function monkeyPatch(env16){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env16;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env16.createCanvasElement||(()=>new Canvas),environment.createImageElement=env16.createImageElement||(()=>new Image),environment.ImageData=env16.ImageData||environment.ImageData,environment.Video=env16.Video||environment.Video,environment.fetch=env16.fetch||environment.fetch,environment.readFile=env16.readFile||environment.readFile}var env={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions(Object.assign({},defaultDrawLabelOptions,drawLabelOptions))}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}var tf18=__toModule(require_tfjs_esm());function isMediaLoaded(media){let{Image,Video}=env.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{if(!(buf instanceof Blob))return reject("bufferToImage - expected buf to be of type: Blob");let reader=new FileReader;reader.onload=()=>{if(typeof reader.result!="string")return reject("bufferToImage - expected reader.result to be a string, in onload");let img=env.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input){let{Image,Video}=env.getEnv();return input instanceof Image?new Dimensions(input.naturalWidth,input.naturalHeight):input instanceof Video?new Dimensions(input.videoWidth,input.videoHeight):new Dimensions(input.width,input.height)}function createCanvas({width,height}){let{createCanvasElement}=env.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}var tf4=__toModule(require_tfjs_esm());async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tf4.tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await tf4.browser.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input){let{Image,Canvas,Video}=env.getEnv();return input instanceof Image||input instanceof Canvas||input instanceof Video}var tf5=__toModule(require_tfjs_esm());function imageToSquare(input,inputSize,centerImage=!1){let{Image,Canvas}=env.getEnv();if(!(input instanceof Image||input instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input),scale2=inputSize/Math.max(dims.height,dims.width),width=scale2*dims.width,height=scale2*dims.height,targetCanvas=createCanvas({width:inputSize,height:inputSize}),inputCanvas=input instanceof Canvas?input:createCanvasFromMedia(input),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input)){this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape;return}if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape.slice(1);return}let canvas=input instanceof env.getEnv().Canvas?input:createCanvasFromMedia(input);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tf5.tidy(()=>{let inputTensors=range(this.batchSize,0,1).map(batchIdx=>{let input=this.getInput(batchIdx);if(input instanceof tf5.Tensor){let imgTensor=isTensor4D(input)?input:input.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=tf5.image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input instanceof env.getEnv().Canvas)return tf5.browser.fromPixels(imageToSquare(input,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)}),batchTensor=tf5.stack(inputTensors.map(t=>tf5.cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input,i)=>{if(!isMediaElement(input)&&!isTensor3D(input)&&!isTensor4D(input))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input=>isMediaElement(input)&&awaitMediaLoaded(input))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input,detections){let{Canvas}=env.getEnv(),canvas=input;if(!(input instanceof Canvas)){let netInput=await toNetInput(input);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}var tf6=__toModule(require_tfjs_esm());async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tf6.tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>tf6.slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init){let fetch=env.getEnv().fetch,res=await fetch(url,init);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}var tf7=__toModule(require_tfjs_esm());function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return tf7.io.loadWeights(manifest,modelBaseUri)}function matchDimensions(input,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input.width=width,input.height=height,{width,height}}var tf15=__toModule(require_tfjs_esm()),tf8=__toModule(require_tfjs_esm()),NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof tf8.Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof tf8.Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable})=>{let tensor2=tf8.tensor(variable.dataSync());variable.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights=tf8.io.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof tf8.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}},tf10=__toModule(require_tfjs_esm()),tf9=__toModule(require_tfjs_esm());function depthwiseSeparableConv(x,params,stride){return tf9.tidy(()=>{let out=tf9.separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=tf9.add(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=tf10.relu(tf10.add(out1,tf10.add(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,tf10.add(out3,out4))))})}var tf11=__toModule(require_tfjs_esm());function convLayer(x,params,padding="same",withRelu=!1){return tf11.tidy(()=>{let out=tf11.add(tf11.conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?tf11.relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}var tf12=__toModule(require_tfjs_esm());function extractConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,filterSize,mappedPrefix){let filters=tf12.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf12.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}var tf13=__toModule(require_tfjs_esm());function extractFCParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let fc_weights=tf13.tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tf13.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var tf14=__toModule(require_tfjs_esm()),SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let depthwise_filter=tf14.tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tf14.tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tf14.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return function(prefix){let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return function(originalPath,paramRank,mappedPath){let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return function(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tf15.tidy(()=>{let batchTensor=tf15.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf15.scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=tf15.avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}},tf17=__toModule(require_tfjs_esm()),tf16=__toModule(require_tfjs_esm());function fullyConnectedLayer(x,params){return tf16.tidy(()=>tf16.add(tf16.matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf17.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input){return tf18.tidy(()=>tf18.softmax(this.runNet(input)))}async forward(input){return this.forwardInput(await toNetInput(input))}async predictExpressions(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(tf18.unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return Object.assign({},sourceObj,extension)}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(expr2=>expr2.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(expr2=>`${expr2.expression} (${round(expr2.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return Object.assign({},sourceObj,extension)}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var tf20=__toModule(require_tfjs_esm()),tf19=__toModule(require_tfjs_esm());function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return tf19.add(tf19.conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?tf19.relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=tf19.maxPool(out,[3,3],[2,2],"same"),out=tf19.add(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(tf19.relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv2,[1,1]),out=tf19.add(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tf19.tidy(()=>{let batchTensor=tf19.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf19.scalar(256)),out=tf19.relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=tf19.relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf20.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input,pooled=tf20.avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input){return tf20.tidy(()=>{let{age,gender}=this.runNet(input);return{age,gender:tf20.softmax(gender)}})}async forward(input){return this.forwardInput(await toNetInput(input))}async predictAgeAndGender(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),ages=tf20.unstack(out.age),genders=tf20.unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var tf21=__toModule(require_tfjs_esm()),FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale2=inputSize/Math.max(height,width);return{width:width*scale2,height:height*scale2}}),batchSize=inputDimensions.length;return tf21.tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>tf21.stack([tf21.fill([68],fillX,"float32"),tf21.fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding(batchIdx,(w,h)=>wgetPadding(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(tf21.stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input){return tf21.tidy(()=>{let out=this.runNet(input);return this.postProcess(out,input.inputSize,input.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input){return this.forwardInput(await toNetInput(input))}async detectLandmarks(input){let netInput=await toNetInput(input),landmarkTensors=tf21.tidy(()=>tf21.unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven(i)),yCoords=landmarksArray.filter((_,i)=>!isEven(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var tf22=__toModule(require_tfjs_esm());function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tf22.tidy(()=>{let batchTensor=tf22.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf22.scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=tf22.avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};var tf27=__toModule(require_tfjs_esm()),tf24=__toModule(require_tfjs_esm()),tf23=__toModule(require_tfjs_esm());function scale(x,params){return tf23.add(tf23.mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=tf24.conv2d(x,filters,strides,padding);return out=tf24.add(out,bias),out=scale(out,params.scale),withRelu?tf24.relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}var tf25=__toModule(require_tfjs_esm());function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tf25.tidy(()=>tf25.transpose(tf25.tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tf25.tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tf25.tensor1d(extractWeights(numWeights)),biases=tf25.tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale2=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale2}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tf25.tidy(()=>tf25.transpose(tf25.tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale2=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale2}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),fc=weightMap.fc;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf26=__toModule(require_tfjs_esm());function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=tf26.add(out,x),out=tf26.relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=tf26.avgPool(x,2,2,"valid"),zeros2=tf26.zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=tf26.zeros(padShapeX);out=tf26.concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=tf26.zeros(padShapeY);out=tf26.concat([out,zerosH],2)}return pooled=isPad?tf26.concat([pooled,zeros2],3):pooled,out=tf26.add(pooled,out),out=tf26.relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tf27.tidy(()=>{let batchTensor=tf27.cast(input.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf27.scalar(256)),out=convDown(normalized,params.conv32_down);out=tf27.maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=tf27.matMul(globalAvg,params.fc);return fullyConnected})}async forward(input){return this.forwardInput(await toNetInput(input))}async computeFaceDescriptor(input){let netInput=await toNetInput(input),faceDescriptorTensors=tf27.tidy(()=>tf27.unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return Object.assign({},sourceObj,extension)}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return Object.assign({},sourceObj,extension)}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return Object.assign({},sourceObj,extension)}var tf34=__toModule(require_tfjs_esm()),tf28=__toModule(require_tfjs_esm());function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tf28.tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tf28.tensor1d(extractWeights(numChannels)),batch_norm_offset=tf28.tensor1d(extractWeights(numChannels)),batch_norm_mean=tf28.tensor1d(extractWeights(numChannels)),batch_norm_variance=tf28.tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tf28.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf28.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tf28.tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf30=__toModule(require_tfjs_esm()),tf29=__toModule(require_tfjs_esm());function pointwiseConvLayer(x,params,strides){return tf29.tidy(()=>{let out=tf29.conv2d(x,params.filters,strides,"same");return out=tf29.add(out,params.batch_norm_offset),tf29.clipByValue(out,0,6)})}var epsilon=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tf30.tidy(()=>{let out=tf30.depthwiseConv2d(x,params.filters,strides,"same");return out=tf30.batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon),tf30.clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tf30.tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function nonMaxSuppression2(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}var tf31=__toModule(require_tfjs_esm());function getCenterCoordinatesAndSizesLayer(x){let vec=tf31.unstack(tf31.transpose(x,[1,0])),sizes=[tf31.sub(vec[2],vec[0]),tf31.sub(vec[3],vec[1])],centers=[tf31.add(vec[0],tf31.div(sizes[0],tf31.scalar(2))),tf31.add(vec[1],tf31.div(sizes[1],tf31.scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=tf31.unstack(tf31.transpose(x1,[1,0])),div0_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[2],tf31.scalar(5))),sizes[0]),tf31.scalar(2)),add0_out=tf31.add(tf31.mul(tf31.div(vec[0],tf31.scalar(10)),sizes[0]),centers[0]),div1_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[3],tf31.scalar(5))),sizes[1]),tf31.scalar(2)),add1_out=tf31.add(tf31.mul(tf31.div(vec[1],tf31.scalar(10)),sizes[1]),centers[1]);return tf31.transpose(tf31.stack([tf31.sub(add0_out,div0_out),tf31.sub(add1_out,div1_out),tf31.add(add0_out,div0_out),tf31.add(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tf31.tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(tf31.reshape(tf31.tile(params.extra_dim,[batchSize,1,1]),[-1,4]),tf31.reshape(boxPredictions,[-1,4]));boxes=tf31.reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=tf31.sigmoid(tf31.slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=tf31.slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=tf31.reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=tf31.unstack(boxes),scoresByBatch=tf31.unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}var tf33=__toModule(require_tfjs_esm()),tf32=__toModule(require_tfjs_esm());function boxPredictionLayer(x,params){return tf32.tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=tf32.reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=tf32.reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tf33.tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=tf33.concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=tf33.concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tf34.tidy(()=>{let batchTensor=tf34.cast(input.toBatchTensor(512,!1),"float32"),x=tf34.sub(tf34.mul(batchTensor,tf34.scalar(.007843137718737125)),tf34.scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input){return this.forwardInput(await toNetInput(input))}async locateFaces(input,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression2(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",tf39=__toModule(require_tfjs_esm()),isNumber=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber(a.x)&&isNumber(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}var tf36=__toModule(require_tfjs_esm()),tf35=__toModule(require_tfjs_esm());function leaky(x){return tf35.tidy(()=>{let min=tf35.mul(x,tf35.scalar(.10000000149011612));return tf35.add(tf35.relu(tf35.sub(x,min)),min)})}function convWithBatchNorm(x,params){return tf36.tidy(()=>{let out=tf36.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf36.conv2d(out,params.conv.filters,[1,1],"valid"),out=tf36.sub(out,params.bn.sub),out=tf36.mul(out,params.bn.truediv),out=tf36.add(out,params.conv.bias),leaky(out)})}var tf37=__toModule(require_tfjs_esm());function depthwiseSeparableConv3(x,params){return tf37.tidy(()=>{let out=tf37.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf37.separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=tf37.add(out,params.bias),leaky(out)})}var tf38=__toModule(require_tfjs_esm());function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub6=tf38.tensor1d(extractWeights(size)),truediv=tf38.tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub6,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub6=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub6,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2SizeType;(function(TinyYolov2SizeType2){TinyYolov2SizeType2[TinyYolov2SizeType2.XS=224]="XS",TinyYolov2SizeType2[TinyYolov2SizeType2.SM=320]="SM",TinyYolov2SizeType2[TinyYolov2SizeType2.MD=416]="MD",TinyYolov2SizeType2[TinyYolov2SizeType2.LG=608]="LG"})(TinyYolov2SizeType||(TinyYolov2SizeType={}));var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tf39.tidy(()=>{let batchTensor=tf39.cast(input.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(tf39.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input,inputSize){return await this.forwardInput(await toNetInput(input),inputSize)}async detect(input,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input),out=await this.forwardInput(netInput,inputSize),out0=tf39.tidy(()=>tf39.unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tf39.tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?tf39.softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):tf39.scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,width2=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,height2=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-width2/2,y=ctY-height2/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+width2,y+height2),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max,curr)=>max.classScore>curr.classScore?max:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2=Object.assign({},{withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"]},withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0});super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}},tf41=__toModule(require_tfjs_esm()),tf40=__toModule(require_tfjs_esm());async function extractAllFacesAndComputeResults(parentResults,input,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input instanceof tf40.Tensor?await extractFaceTensors(input,faceBoxes):await extractFaces(input,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof tf40.Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input,options)=>nets.ssdMobilenetv1.locateFaces(input,options),tinyFaceDetector=(input,options)=>nets.tinyFaceDetector.locateFaces(input,options),tinyYolov23=(input,options)=>nets.tinyYolov2.locateFaces(input,options),detectFaceLandmarks=input=>nets.faceLandmark68Net.detectLandmarks(input),detectFaceLandmarksTiny=input=>nets.faceLandmark68TinyNet.detectLandmarks(input),computeFaceDescriptor=input=>nets.faceRecognitionNet.computeFaceDescriptor(input),recognizeFaceExpressions=input=>nets.faceExpressionNet.predictExpressions(input),predictAgeAndGender=input=>nets.ageGenderNet.predictAgeAndGender(input),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input){super();this.parentTask=parentTask;this.input=input}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input,options=new SsdMobilenetv1Options){super();this.input=input;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input2=>nets.tinyFaceDetector.locateFaces(input2,options):options instanceof SsdMobilenetv1Options?input2=>nets.ssdMobilenetv1.locateFaces(input2,options):options instanceof TinyYolov2Options?input2=>nets.tinyYolov2.locateFaces(input2,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input)}runAndExtendWithFaceDetections(){return new Promise(async res=>{let detections=await this.run();return res(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async res=>{let detection=await this.run();return res(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input,options)}function detectAllFaces(input,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input,options)}async function allFacesSsdMobilenetv1(input,minConfidence){return console.warn("allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input,forwardParams={}){return console.warn("allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count=1,createUniqueLabel=()=>`person ${count++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json){let labeledDescriptors=json.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var version="0.9.5",node=typeof process!="undefined",browser3=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version2={faceapi:version,node,browser:browser3}; +var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2),require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node-gpu")))}),require_isNodejs=__commonJS((exports2,module2)=>{__export(exports2,{isNodejs:()=>isNodejs3});function isNodejs3(){return typeof global=="object"&&!0&&typeof module2!="undefined"&&typeof process!="undefined"&&!!process.version}});__export(exports,{AgeGenderNet:()=>AgeGenderNet,BoundingBox:()=>BoundingBox,Box:()=>Box,ComposableTask:()=>ComposableTask,ComputeAllFaceDescriptorsTask:()=>ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase:()=>ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask:()=>ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask:()=>DetectAllFaceLandmarksTask,DetectAllFacesTask:()=>DetectAllFacesTask,DetectFaceLandmarksTaskBase:()=>DetectFaceLandmarksTaskBase,DetectFacesTaskBase:()=>DetectFacesTaskBase,DetectSingleFaceLandmarksTask:()=>DetectSingleFaceLandmarksTask,DetectSingleFaceTask:()=>DetectSingleFaceTask,Dimensions:()=>Dimensions,FACE_EXPRESSION_LABELS:()=>FACE_EXPRESSION_LABELS,FaceDetection:()=>FaceDetection,FaceDetectionNet:()=>FaceDetectionNet,FaceExpressionNet:()=>FaceExpressionNet,FaceExpressions:()=>FaceExpressions,FaceLandmark68Net:()=>FaceLandmark68Net,FaceLandmark68TinyNet:()=>FaceLandmark68TinyNet,FaceLandmarkNet:()=>FaceLandmarkNet,FaceLandmarks:()=>FaceLandmarks,FaceLandmarks5:()=>FaceLandmarks5,FaceLandmarks68:()=>FaceLandmarks68,FaceMatch:()=>FaceMatch,FaceMatcher:()=>FaceMatcher,FaceRecognitionNet:()=>FaceRecognitionNet,Gender:()=>Gender,LabeledBox:()=>LabeledBox,LabeledFaceDescriptors:()=>LabeledFaceDescriptors,NetInput:()=>NetInput,NeuralNetwork:()=>NeuralNetwork,ObjectDetection:()=>ObjectDetection,Point:()=>Point,PredictedBox:()=>PredictedBox,Rect:()=>Rect,SsdMobilenetv1:()=>SsdMobilenetv1,SsdMobilenetv1Options:()=>SsdMobilenetv1Options,TinyFaceDetector:()=>TinyFaceDetector,TinyFaceDetectorOptions:()=>TinyFaceDetectorOptions,TinyYolov2:()=>TinyYolov2,TinyYolov2Options:()=>TinyYolov2Options,allFaces:()=>allFaces,allFacesSsdMobilenetv1:()=>allFacesSsdMobilenetv1,allFacesTinyYolov2:()=>allFacesTinyYolov2,awaitMediaLoaded:()=>awaitMediaLoaded,bufferToImage:()=>bufferToImage,computeFaceDescriptor:()=>computeFaceDescriptor,createCanvas:()=>createCanvas,createCanvasFromMedia:()=>createCanvasFromMedia,createFaceDetectionNet:()=>createFaceDetectionNet,createFaceRecognitionNet:()=>createFaceRecognitionNet,createSsdMobilenetv1:()=>createSsdMobilenetv1,createTinyFaceDetector:()=>createTinyFaceDetector,createTinyYolov2:()=>createTinyYolov2,detectAllFaces:()=>detectAllFaces,detectFaceLandmarks:()=>detectFaceLandmarks,detectFaceLandmarksTiny:()=>detectFaceLandmarksTiny,detectLandmarks:()=>detectLandmarks,detectSingleFace:()=>detectSingleFace,draw:()=>draw_exports,env:()=>env,euclideanDistance:()=>euclideanDistance,extendWithAge:()=>extendWithAge,extendWithFaceDescriptor:()=>extendWithFaceDescriptor,extendWithFaceDetection:()=>extendWithFaceDetection,extendWithFaceExpressions:()=>extendWithFaceExpressions,extendWithFaceLandmarks:()=>extendWithFaceLandmarks,extendWithGender:()=>extendWithGender,extractFaceTensors:()=>extractFaceTensors,extractFaces:()=>extractFaces,fetchImage:()=>fetchImage,fetchJson:()=>fetchJson,fetchNetWeights:()=>fetchNetWeights,fetchOrThrow:()=>fetchOrThrow,getContext2dOrThrow:()=>getContext2dOrThrow,getMediaDimensions:()=>getMediaDimensions,imageTensorToCanvas:()=>imageTensorToCanvas,imageToSquare:()=>imageToSquare,inverseSigmoid:()=>inverseSigmoid,iou:()=>iou,isMediaElement:()=>isMediaElement,isMediaLoaded:()=>isMediaLoaded,isWithAge:()=>isWithAge,isWithFaceDetection:()=>isWithFaceDetection,isWithFaceExpressions:()=>isWithFaceExpressions,isWithFaceLandmarks:()=>isWithFaceLandmarks,isWithGender:()=>isWithGender,loadAgeGenderModel:()=>loadAgeGenderModel,loadFaceDetectionModel:()=>loadFaceDetectionModel,loadFaceExpressionModel:()=>loadFaceExpressionModel,loadFaceLandmarkModel:()=>loadFaceLandmarkModel,loadFaceLandmarkTinyModel:()=>loadFaceLandmarkTinyModel,loadFaceRecognitionModel:()=>loadFaceRecognitionModel,loadSsdMobilenetv1Model:()=>loadSsdMobilenetv1Model,loadTinyFaceDetectorModel:()=>loadTinyFaceDetectorModel,loadTinyYolov2Model:()=>loadTinyYolov2Model,loadWeightMap:()=>loadWeightMap,locateFaces:()=>locateFaces,matchDimensions:()=>matchDimensions,minBbox:()=>minBbox,nets:()=>nets,nonMaxSuppression:()=>nonMaxSuppression,normalize:()=>normalize,padToSquare:()=>padToSquare,predictAgeAndGender:()=>predictAgeAndGender,recognizeFaceExpressions:()=>recognizeFaceExpressions,resizeResults:()=>resizeResults,resolveInput:()=>resolveInput,shuffleArray:()=>shuffleArray,sigmoid:()=>sigmoid,ssdMobilenetv1:()=>ssdMobilenetv1,tf:()=>tf42,tinyFaceDetector:()=>tinyFaceDetector,tinyYolov2:()=>tinyYolov23,toNetInput:()=>toNetInput,utils:()=>utils_exports,validateConfig:()=>validateConfig,version:()=>version2});var tf42=__toModule(require_tfjs_esm()),draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range,round:()=>round});var tf=__toModule(require_tfjs_esm()),Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof tf.Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!==0}function isEven(num){return num%2===0}function round(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale2=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale2),Math.round(height*scale2))}function getCenterPoint(pts){return pts.reduce((sum,pt)=>sum.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range(num,start,step){return Array(num).fill(0).map((_,i)=>start+i*step)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min,x)=>xymaxmax({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}var tf2=__toModule(require_tfjs_esm());function normalize(x,meanRgb){return tf2.tidy(()=>{let[r,g,b]=meanRgb,avg_r=tf2.fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=tf2.fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=tf2.fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=tf2.concat([avg_r,avg_g,avg_b],3);return tf2.sub(x,avg_rgb)})}var tf3=__toModule(require_tfjs_esm());function padToSquare(imgTensor,isCenterImage=!1){return tf3.tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,tf3.fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>tf3.cast(t,"float32"));return tf3.concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array=inputArray.slice();for(let i=array.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array[i];array[i]=array[j],array[j]=x}return array}function sigmoid(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json){let descriptors=json.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return{...sourceObj,...extension}}function createBrowserEnv(){let fetch=window.fetch;if(!fetch)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer)=>err?reject(err):resolve(buffer))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch,...fileSystem}}function isBrowser(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env16){environment=env16}function initialize(){return isBrowser()?setEnv(createBrowserEnv()):isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env16){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env16;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env16.createCanvasElement||(()=>new Canvas),environment.createImageElement=env16.createImageElement||(()=>new Image),environment.ImageData=env16.ImageData||environment.ImageData,environment.Video=env16.Video||environment.Video,environment.fetch=env16.fetch||environment.fetch,environment.readFile=env16.readFile||environment.readFile}var env={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}var tf18=__toModule(require_tfjs_esm());function isMediaLoaded(media){let{Image,Video}=env.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input){let{Image,Video}=env.getEnv();return input instanceof Image?new Dimensions(input.naturalWidth,input.naturalHeight):input instanceof Video?new Dimensions(input.videoWidth,input.videoHeight):new Dimensions(input.width,input.height)}function createCanvas({width,height}){let{createCanvasElement}=env.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}var tf4=__toModule(require_tfjs_esm());async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tf4.tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await tf4.browser.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input){let{Image,Canvas,Video}=env.getEnv();return input instanceof Image||input instanceof Canvas||input instanceof Video}var tf5=__toModule(require_tfjs_esm());function imageToSquare(input,inputSize,centerImage=!1){let{Image,Canvas}=env.getEnv();if(!(input instanceof Image||input instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input),scale2=inputSize/Math.max(dims.height,dims.width),width=scale2*dims.width,height=scale2*dims.height,targetCanvas=createCanvas({width:inputSize,height:inputSize}),inputCanvas=input instanceof Canvas?input:createCanvasFromMedia(input),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input)){this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape;return}if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape.slice(1);return}let canvas=input instanceof env.getEnv().Canvas?input:createCanvasFromMedia(input);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tf5.tidy(()=>{let inputTensors=range(this.batchSize,0,1).map(batchIdx=>{let input=this.getInput(batchIdx);if(input instanceof tf5.Tensor){let imgTensor=isTensor4D(input)?input:input.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=tf5.image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input instanceof env.getEnv().Canvas)return tf5.browser.fromPixels(imageToSquare(input,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)}),batchTensor=tf5.stack(inputTensors.map(t=>tf5.cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input,i)=>{if(!isMediaElement(input)&&!isTensor3D(input)&&!isTensor4D(input))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input=>isMediaElement(input)&&awaitMediaLoaded(input))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input,detections){let{Canvas}=env.getEnv(),canvas=input;if(!(input instanceof Canvas)){let netInput=await toNetInput(input);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}var tf6=__toModule(require_tfjs_esm());async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tf6.tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>tf6.slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init){let{fetch}=env.getEnv(),res=await fetch(url,init);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}var tf7=__toModule(require_tfjs_esm());function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return tf7.io.loadWeights(manifest,modelBaseUri)}function matchDimensions(input,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input.width=width,input.height=height,{width,height}}var tf15=__toModule(require_tfjs_esm()),tf8=__toModule(require_tfjs_esm()),NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof tf8.Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof tf8.Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable})=>{let tensor2=tf8.tensor(variable.dataSync());variable.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights=tf8.io.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof tf8.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}},tf10=__toModule(require_tfjs_esm()),tf9=__toModule(require_tfjs_esm());function depthwiseSeparableConv(x,params,stride){return tf9.tidy(()=>{let out=tf9.separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=tf9.add(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=tf10.relu(tf10.add(out1,tf10.add(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,tf10.add(out3,out4))))})}var tf11=__toModule(require_tfjs_esm());function convLayer(x,params,padding="same",withRelu=!1){return tf11.tidy(()=>{let out=tf11.add(tf11.conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?tf11.relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}var tf12=__toModule(require_tfjs_esm());function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tf12.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf12.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}var tf13=__toModule(require_tfjs_esm());function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tf13.tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tf13.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var tf14=__toModule(require_tfjs_esm()),SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tf14.tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tf14.tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tf14.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tf15.tidy(()=>{let batchTensor=tf15.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf15.scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=tf15.avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}},tf17=__toModule(require_tfjs_esm()),tf16=__toModule(require_tfjs_esm());function fullyConnectedLayer(x,params){return tf16.tidy(()=>tf16.add(tf16.matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf17.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input){return tf18.tidy(()=>tf18.softmax(this.runNet(input)))}async forward(input){return this.forwardInput(await toNetInput(input))}async predictExpressions(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(tf18.unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return{...sourceObj,...extension}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round(exprLocal.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return{...sourceObj,...extension}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version="0.9.5",tf20=__toModule(require_tfjs_esm()),tf19=__toModule(require_tfjs_esm());function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return tf19.add(tf19.conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?tf19.relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=tf19.maxPool(out,[3,3],[2,2],"same"),out=tf19.add(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(tf19.relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv2,[1,1]),out=tf19.add(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tf19.tidy(()=>{let batchTensor=tf19.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf19.scalar(256)),out=tf19.relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=tf19.relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf20.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input,pooled=tf20.avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input){return tf20.tidy(()=>{let{age,gender}=this.runNet(input);return{age,gender:tf20.softmax(gender)}})}async forward(input){return this.forwardInput(await toNetInput(input))}async predictAgeAndGender(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),ages=tf20.unstack(out.age),genders=tf20.unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var tf21=__toModule(require_tfjs_esm()),FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale2=inputSize/Math.max(height,width);return{width:width*scale2,height:height*scale2}}),batchSize=inputDimensions.length;return tf21.tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>tf21.stack([tf21.fill([68],fillX,"float32"),tf21.fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding(batchIdx,(w,h)=>wgetPadding(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(tf21.stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input){return tf21.tidy(()=>{let out=this.runNet(input);return this.postProcess(out,input.inputSize,input.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input){return this.forwardInput(await toNetInput(input))}async detectLandmarks(input){let netInput=await toNetInput(input),landmarkTensors=tf21.tidy(()=>tf21.unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven(i)),yCoords=landmarksArray.filter((_,i)=>!isEven(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var tf22=__toModule(require_tfjs_esm());function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tf22.tidy(()=>{let batchTensor=tf22.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf22.scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=tf22.avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};var tf27=__toModule(require_tfjs_esm()),tf24=__toModule(require_tfjs_esm()),tf23=__toModule(require_tfjs_esm());function scale(x,params){return tf23.add(tf23.mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=tf24.conv2d(x,filters,strides,padding);return out=tf24.add(out,bias),out=scale(out,params.scale),withRelu?tf24.relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}var tf25=__toModule(require_tfjs_esm());function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tf25.tidy(()=>tf25.transpose(tf25.tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tf25.tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tf25.tensor1d(extractWeights(numWeights)),biases=tf25.tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale2=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale2}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tf25.tidy(()=>tf25.transpose(tf25.tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale2=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale2}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf26=__toModule(require_tfjs_esm());function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=tf26.add(out,x),out=tf26.relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=tf26.avgPool(x,2,2,"valid"),zeros2=tf26.zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=tf26.zeros(padShapeX);out=tf26.concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=tf26.zeros(padShapeY);out=tf26.concat([out,zerosH],2)}return pooled=isPad?tf26.concat([pooled,zeros2],3):pooled,out=tf26.add(pooled,out),out=tf26.relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tf27.tidy(()=>{let batchTensor=tf27.cast(input.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf27.scalar(256)),out=convDown(normalized,params.conv32_down);out=tf27.maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=tf27.matMul(globalAvg,params.fc);return fullyConnected})}async forward(input){return this.forwardInput(await toNetInput(input))}async computeFaceDescriptor(input){let netInput=await toNetInput(input),faceDescriptorTensors=tf27.tidy(()=>tf27.unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return{...sourceObj,...extension}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return{...sourceObj,...extension}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return{...sourceObj,...extension}}var tf34=__toModule(require_tfjs_esm()),tf28=__toModule(require_tfjs_esm());function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tf28.tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tf28.tensor1d(extractWeights(numChannels)),batch_norm_offset=tf28.tensor1d(extractWeights(numChannels)),batch_norm_mean=tf28.tensor1d(extractWeights(numChannels)),batch_norm_variance=tf28.tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tf28.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf28.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tf28.tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf30=__toModule(require_tfjs_esm()),tf29=__toModule(require_tfjs_esm());function pointwiseConvLayer(x,params,strides){return tf29.tidy(()=>{let out=tf29.conv2d(x,params.filters,strides,"same");return out=tf29.add(out,params.batch_norm_offset),tf29.clipByValue(out,0,6)})}var epsilon=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tf30.tidy(()=>{let out=tf30.depthwiseConv2d(x,params.filters,strides,"same");return out=tf30.batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon),tf30.clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tf30.tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression2(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}var tf31=__toModule(require_tfjs_esm());function getCenterCoordinatesAndSizesLayer(x){let vec=tf31.unstack(tf31.transpose(x,[1,0])),sizes=[tf31.sub(vec[2],vec[0]),tf31.sub(vec[3],vec[1])],centers=[tf31.add(vec[0],tf31.div(sizes[0],tf31.scalar(2))),tf31.add(vec[1],tf31.div(sizes[1],tf31.scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=tf31.unstack(tf31.transpose(x1,[1,0])),div0_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[2],tf31.scalar(5))),sizes[0]),tf31.scalar(2)),add0_out=tf31.add(tf31.mul(tf31.div(vec[0],tf31.scalar(10)),sizes[0]),centers[0]),div1_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[3],tf31.scalar(5))),sizes[1]),tf31.scalar(2)),add1_out=tf31.add(tf31.mul(tf31.div(vec[1],tf31.scalar(10)),sizes[1]),centers[1]);return tf31.transpose(tf31.stack([tf31.sub(add0_out,div0_out),tf31.sub(add1_out,div1_out),tf31.add(add0_out,div0_out),tf31.add(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tf31.tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(tf31.reshape(tf31.tile(params.extra_dim,[batchSize,1,1]),[-1,4]),tf31.reshape(boxPredictions,[-1,4]));boxes=tf31.reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=tf31.sigmoid(tf31.slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=tf31.slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=tf31.reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=tf31.unstack(boxes),scoresByBatch=tf31.unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}var tf33=__toModule(require_tfjs_esm()),tf32=__toModule(require_tfjs_esm());function boxPredictionLayer(x,params){return tf32.tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=tf32.reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=tf32.reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tf33.tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=tf33.concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=tf33.concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tf34.tidy(()=>{let batchTensor=tf34.cast(input.toBatchTensor(512,!1),"float32"),x=tf34.sub(tf34.mul(batchTensor,tf34.scalar(.007843137718737125)),tf34.scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input){return this.forwardInput(await toNetInput(input))}async locateFaces(input,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression2(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",tf39=__toModule(require_tfjs_esm()),isNumber=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber(a.x)&&isNumber(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}var tf36=__toModule(require_tfjs_esm()),tf35=__toModule(require_tfjs_esm());function leaky(x){return tf35.tidy(()=>{let min=tf35.mul(x,tf35.scalar(.10000000149011612));return tf35.add(tf35.relu(tf35.sub(x,min)),min)})}function convWithBatchNorm(x,params){return tf36.tidy(()=>{let out=tf36.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf36.conv2d(out,params.conv.filters,[1,1],"valid"),out=tf36.sub(out,params.bn.sub),out=tf36.mul(out,params.bn.truediv),out=tf36.add(out,params.conv.bias),leaky(out)})}var tf37=__toModule(require_tfjs_esm());function depthwiseSeparableConv3(x,params){return tf37.tidy(()=>{let out=tf37.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf37.separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=tf37.add(out,params.bias),leaky(out)})}var tf38=__toModule(require_tfjs_esm());function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub6=tf38.tensor1d(extractWeights(size)),truediv=tf38.tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub6,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub6=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub6,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tf39.tidy(()=>{let batchTensor=tf39.cast(input.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(tf39.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input,inputSize){return this.forwardInput(await toNetInput(input),inputSize)}async detect(input,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input),out=await this.forwardInput(netInput,inputSize),out0=tf39.tidy(()=>tf39.unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tf39.tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?tf39.softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):tf39.scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max,curr)=>max.classScore>curr.classScore?max:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}},tf41=__toModule(require_tfjs_esm()),tf40=__toModule(require_tfjs_esm());async function extractAllFacesAndComputeResults(parentResults,input,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input instanceof tf40.Tensor?await extractFaceTensors(input,faceBoxes):await extractFaces(input,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof tf40.Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input,options)=>nets.ssdMobilenetv1.locateFaces(input,options),tinyFaceDetector=(input,options)=>nets.tinyFaceDetector.locateFaces(input,options),tinyYolov23=(input,options)=>nets.tinyYolov2.locateFaces(input,options),detectFaceLandmarks=input=>nets.faceLandmark68Net.detectLandmarks(input),detectFaceLandmarksTiny=input=>nets.faceLandmark68TinyNet.detectLandmarks(input),computeFaceDescriptor=input=>nets.faceRecognitionNet.computeFaceDescriptor(input),recognizeFaceExpressions=input=>nets.faceExpressionNet.predictExpressions(input),predictAgeAndGender=input=>nets.ageGenderNet.predictAgeAndGender(input),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input){super();this.parentTask=parentTask;this.input=input}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input,options=new SsdMobilenetv1Options){super();this.input=input;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input2=>nets.tinyFaceDetector.locateFaces(input2,options):options instanceof SsdMobilenetv1Options?input2=>nets.ssdMobilenetv1.locateFaces(input2,options):options instanceof TinyYolov2Options?input2=>nets.tinyYolov2.locateFaces(input2,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input,options)}function detectAllFaces(input,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input,options)}async function allFacesSsdMobilenetv1(input,minConfidence){return detectAllFaces(input,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input,forwardParams={}){return detectAllFaces(input,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count=1,createUniqueLabel=()=>`person ${count++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json){let labeledDescriptors=json.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser3=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version2={faceapi:version,node,browser:browser3}; //# sourceMappingURL=face-api.node-gpu.js.map diff --git a/dist/face-api.node-gpu.js.map b/dist/face-api.node-gpu.js.map index def4d5a..d35e421 100644 --- a/dist/face-api.node-gpu.js.map +++ b/dist/face-api.node-gpu.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/tfjs/tf-node-gpu.js", "../src/env/isNodejs.ts", "../src/index.ts", "../src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/utils/index.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/NetInput.ts", "../src/dom/imageToSquare.ts", "../src/dom/NetInput.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/dom/loadWeightMap.ts", "../src/common/getModelUris.ts", "../src/dom/loadWeightMap.ts", "../src/dom/matchDimensions.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/NeuralNetwork.ts", "../src/NeuralNetwork.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/depthwiseSeparableConv.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/types.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/xception/TinyXception.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/xception/TinyXception.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts", "../src/index.ts"], - "sourcesContent": ["export * from '@tensorflow/tfjs-node-gpu';\n", "export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "export * from './drawContour'\nexport * from './drawDetections'\nexport * from './drawFaceExpressions'\nexport * from './DrawBox'\nexport * from './DrawFaceLandmarks'\nexport * from './DrawTextField'", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false\n) {\n ctx.beginPath()\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx]\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(x, y)\n })\n\n if (isClosed) {\n const from = points[points.length - 1]\n const to = points[0]\n if (!from || !to) {\n return\n }\n\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(to.x, to.y)\n }\n\n ctx.stroke()\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n\n private _width: number\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`)\n }\n\n this._width = width\n this._height = height\n }\n\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x\n this._y = y\n }\n\n get x(): number { return this._x }\n get y(): number { return this._y }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y)\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y)\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y)\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y)\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y))\n }\n\n public magnitude(): number {\n return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2))\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y))\n }\n}", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber)\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`)\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)\n }\n }\n\n private _x: number\n private _y: number\n private _width: number\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber)\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber)\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`)\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top]\n\n Box.assertIsValidBox({ x, y, width, height }, 'Box.constructor', allowNegativeDimensions)\n\n this._x = x\n this._y = y\n this._width = width\n this._height = height\n }\n\n public get x(): number { return this._x }\n public get y(): number { return this._y }\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n public get left(): number { return this.x }\n public get top(): number { return this.y }\n public get right(): number { return this.x + this.width }\n public get bottom(): number { return this.y + this.height }\n public get area(): number { return this.width * this.height }\n public get topLeft(): Point { return new Point(this.left, this.top) }\n public get topRight(): Point { return new Point(this.right, this.top) }\n public get bottomLeft(): Point { return new Point(this.left, this.bottom) }\n public get bottomRight(): Point { return new Point(this.right, this.bottom) }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.round(val))\n return new Box({ x, y, width, height })\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.floor(val))\n return new Box({ x, y, width, height })\n }\n\n public toSquare(): Box {\n let { x, y, width, height } = this\n const diff = Math.abs(width - height)\n if (width < height) {\n x -= (diff / 2)\n width += diff\n }\n if (height < width) {\n y -= (diff / 2)\n height += diff\n }\n\n return new Box({ x, y, width, height })\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY\n })\n }\n\n public pad(padX: number, padY: number): Box {\n let [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY\n ]\n return new Box({ x, y, width, height })\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const { x, y, right, bottom } = this\n const clippedX = Math.max(x, 0)\n const clippedY = Math.max(y, 0)\n\n const newWidth = right - clippedX\n const newHeight = bottom - clippedY\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX)\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY)\n\n return (new Box({ x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight})).floor()\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this\n const x = this.x + sx\n const y = this.y + sy\n\n return new Box({ x, y, width, height })\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1\n const h = this.height + 1\n\n let dx = 1\n let dy = 1\n let edx = w\n let edy = h\n\n let x = this.left\n let y = this.top\n let ex = this.right\n let ey = this.bottom\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w\n ex = imageWidth\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h\n ey = imageHeight\n }\n if (x < 1) {\n edy = 2 - x\n x = 1\n }\n if (y < 1) {\n edy = 2 - y\n y = 1\n }\n\n return { dy, edy, dx, edx, y, ey, x, ex, w, h }\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height)\n }).toSquare().round()\n }\n}", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({ left, top, right, bottom }, allowNegativeDimensions)\n }\n}", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n private _classScore: number\n private _className: string\n private _box: Rect\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height)\n this._score = score\n this._classScore = classScore\n this._className = className\n this._box = new Box(relativeBox).rescale(this._imageDims)\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n public get className(): string { return this._className }\n public get box(): Box { return this._box }\n public get imageDims(): Dimensions { return this._imageDims }\n public get imageWidth(): number { return this.imageDims.width }\n public get imageHeight(): number { return this.imageDims.height }\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()) }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height}\n )\n }\n}", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions\n ) {\n super(score, score, '', relativeBox, imageDims)\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height)\n return new FaceDetection(score, relativeBox, imageDims)\n }\n}", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left))\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top))\n const interSection = width * height\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area)\n}", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map(pt => pt.x)\n const ys = pts.map(pt => pt.y)\n const minX = xs.reduce((min, x) => x < min ? x : min, Infinity)\n const minY = ys.reduce((min, y) => y < min ? y : min, Infinity)\n const maxX = xs.reduce((max, x) => max < x ? x : max, 0)\n const maxY = ys.reduce((max, y) => max < y ? y : max, 0)\n\n return new BoundingBox(minX, minY, maxX, maxY)\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true\n): number[] {\n\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map(c => c.boxIndex)\n\n const pick: number[] = []\n\n while(indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number\n pick.push(curr)\n\n const indices = indicesSortedByScore\n\n const outputs: number[] = []\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i]\n\n const currBox = boxes[curr]\n const idxBox = boxes[idx]\n\n outputs.push(iou(currBox, idxBox, isIOU))\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold\n )\n }\n\n return pick\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32')\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32')\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32')\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3)\n\n return tf.sub(x, avg_rgb)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n\n const [height, width] = imgTensor.shape.slice(1)\n if (height === width) {\n return imgTensor\n }\n\n const dimDiff = Math.abs(height - width)\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1))\n const paddingAxis = height > width ? 2 : 1\n\n const createPaddingTensor = (paddingAmount: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice()\n paddingTensorShape[paddingAxis] = paddingAmount\n return tf.fill(paddingTensorShape, 0, 'float32')\n }\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount)\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number)\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend\n ]\n .filter(t => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[]\n return tf.concat(tensorsToStack, paddingAxis)\n\n })\n}", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice()\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n const x = array[i]\n array[i] = array[j]\n array[j] = x\n }\n return array\n}", "export * from './iou'\nexport * from './minBbox'\nexport * from './nonMaxSuppression'\nexport * from './normalize'\nexport * from './padToSquare'\nexport * from './shuffleArray'\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x))\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x))\n}", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({ x, y, width, height }, allowNegativeDimensions)\n }\n}", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5\nconst relY = 0.43\nconst relScale = 0.45\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n protected _positions: Point[]\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0)\n ) {\n const { width, height } = imgDims\n this._imgDims = new Dimensions(width, height)\n this._shift = shift\n this._positions = relativeFaceLandmarkPositions.map(\n pt => pt.mul(new Point(width, height)).add(shift)\n )\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y) }\n public get imageWidth(): number { return this._imgDims.width }\n public get imageHeight(): number { return this._imgDims.height }\n public get positions(): Point[] { return this._positions }\n public get relativePositions(): Point[] {\n return this._positions.map(\n pt => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight))\n )\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height }\n )\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y)\n )\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y)\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { }\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection)\n\n return this.shiftBy(box.x, box.y).align(null, options)\n }\n\n const { useDlibAlignment, minBoxPadding } = Object.assign({}, { useDlibAlignment: false, minBoxPadding: 0.2 }, options)\n\n if (useDlibAlignment) {\n return this.alignDlib()\n }\n\n return this.alignMinBbox(minBoxPadding)\n }\n\n private alignDlib(): Box {\n\n const centers = this.getRefPointsForAlignment()\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude()\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2\n\n const size = Math.floor(eyeToMouthDist / relScale)\n\n const refPoint = getCenterPoint(centers)\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)))\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)))\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y))\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions)\n return box.pad(box.width * padding, box.height * padding)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class')\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]])\n ]\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17)\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22)\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27)\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36)\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42)\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48)\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth()\n ].map(getCenterPoint)\n }\n}", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label\n this._distance = distance\n }\n\n public get label(): string { return this._label }\n public get distance(): number { return this._distance }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`\n }\n}", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee)\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`)\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box)\n this._label = label\n }\n\n public get label(): number { return this._label }\n\n}", "export class LabeledFaceDescriptors {\n private _label: string\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string')\n }\n\n if (!Array.isArray(descriptors) || descriptors.some(desc => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array')\n }\n\n this._label = label\n this._descriptors = descriptors\n }\n\n public get label(): string { return this._label }\n public get descriptors(): Float32Array[] { return this._descriptors }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d))\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => {\n return new Float32Array(d);\n });\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n\n}", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee)\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)\n }\n }\n\n private _score: number\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label)\n this._score = score\n this._classScore = classScore\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n\n}", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj['detection'] instanceof FaceDetection\n}\n\nexport function extendWithFaceDetection<\n TSource\n> (\n sourceObj: TSource,\n detection: FaceDetection\n): WithFaceDetection {\n\n const extension = { detection }\n return Object.assign({}, sourceObj, extension)\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n\n const fetch = window['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for browser environment')\n }\n\n const readFile = function() {\n throw new Error('readFile - filesystem not available for browser environment')\n }\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D: CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData: ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile\n }\n}", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n\n let requireFsError = ''\n\n if (!fs) {\n try {\n fs = require('fs')\n } catch (err) {\n requireFsError = err.toString()\n }\n }\n\n const readFile = fs\n ? function(filePath: string) {\n return new Promise((res, rej) => {\n fs.readFile(filePath, function(err: any, buffer: Buffer) {\n return err ? rej(err) : res(buffer)\n })\n })\n }\n : function() {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)\n }\n\n return {\n readFile\n }\n}", "import { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n\n const Canvas = global['Canvas'] || global['HTMLCanvasElement']\n const Image = global['Image'] || global['HTMLImageElement']\n\n const createCanvasElement = function() {\n if (Canvas) {\n return new Canvas()\n }\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment')\n }\n\n const createImageElement = function() {\n if (Image) {\n return new Image()\n }\n throw new Error('createImageElement - missing Image implementation for nodejs environment')\n }\n\n const fetch = global['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for nodejs environment')\n }\n\n const fileSystem = createFileSystem()\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global['CanvasRenderingContext2D'] || class {},\n Image: Image || class {},\n ImageData: global['ImageData'] || class {},\n Video: global['HTMLVideoElement'] || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem\n }\n}", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined'\n}", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()')\n }\n return environment\n}\n\nfunction setEnv(env: Environment) {\n environment = env\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) {\n return setEnv(createBrowserEnv())\n }\n if (isNodejs()) {\n return setEnv(createNodejsEnv())\n }\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize()\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()')\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env\n environment.Canvas = Canvas\n environment.Image = Image\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas())\n environment.createImageElement = env.createImageElement || (() => new Image())\n\n environment.ImageData = env.ImageData || environment.ImageData\n environment.Video = env.Video || environment.Video\n environment.fetch = env.fetch || environment.fetch\n environment.readFile = env.readFile || environment.readFile\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs\n}\n\ninitialize()\n\nexport * from './types'\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg)\n }\n return arg\n}", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n\n const { Canvas, CanvasRenderingContext2D } = env.getEnv()\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg\n }\n\n const canvas = resolveInput(canvasArg)\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas')\n }\n\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null')\n }\n\n return ctx\n}", "import { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\nexport enum AnchorPosition {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n public backgroundColor: string\n public fontColor: string\n public fontSize: number\n public fontStyle: string\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const { anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding } = options\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)'\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)'\n this.fontSize = fontSize || 14\n this.fontStyle = fontStyle || 'Georgia'\n this.padding = padding || 4\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n public anchor : IPoint\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {}\n ) {\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text)\n this.anchor = anchor\n this.options = new DrawTextFieldOptions(options)\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options\n return this.text.map(l => ctx.measureText(l).width).reduce((w0, w1) => w0 < w1 ? w1 : w0, 0) + (2 * padding)\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options\n return this.text.length * fontSize + (2 * padding)\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT\n\n const textFieldWidth = this.measureWidth(ctx)\n const textFieldHeight = this.measureHeight()\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x)\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0)\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0)\n return { x: newX, y: newY }\n }\n return { x, y }\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg)\n const ctx = getContext2dOrThrow(canvas)\n\n const { backgroundColor, fontColor, fontSize, fontStyle, padding } = this.options\n\n ctx.font = `${fontSize}px ${fontStyle}`\n const maxTextWidth = this.measureWidth(ctx)\n const textHeight = this.measureHeight()\n\n ctx.fillStyle = backgroundColor\n const upperLeft = this.getUpperLeft(ctx, canvas)\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight)\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x\n const y = padding + upperLeft.y + ((i + 1) * fontSize)\n ctx.fillText(textLine, x, y)\n })\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions } from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n public lineWidth: number\n public drawLabelOptions: DrawTextFieldOptions\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const { boxColor, lineWidth, label, drawLabelOptions } = options\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)'\n this.lineWidth = lineWidth || 2\n this.label = label\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor\n }\n this.drawLabelOptions = new DrawTextFieldOptions(Object.assign({}, defaultDrawLabelOptions, drawLabelOptions))\n }\n}\n\nexport class DrawBox {\n public box: Box\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {}\n ) {\n this.box = new Box(box)\n this.options = new DrawBoxOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { boxColor, lineWidth } = this.options\n\n const { x, y, width, height } = this.box\n ctx.strokeStyle = boxColor\n ctx.lineWidth = lineWidth\n ctx.strokeRect(x, y, width, height)\n\n const { label } = this.options\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg)\n }\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections]\n\n detectionsArray.forEach(det => {\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined)\n\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det))\n\n const label = score ? `${round(score)}` : undefined\n new DrawBox(box, { label }).draw(canvasArg)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor)\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)))\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async t => {\n const data = await t.data()\n t.dispose()\n return data\n }))\n out.dispose()\n\n const predictionsByBatch = probabilitesByBatch\n .map(probabilites => new FaceExpressions(probabilites as Float32Array))\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n\n protected getClassifierChannelsOut(): number {\n return 7\n }\n}", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n\n const { Image, Video } = env.getEnv()\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3)\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null)\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n resolve(e)\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n reject(e)\n }\n\n media.addEventListener('load', onLoad)\n media.addEventListener('error', onError)\n })\n}", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) {\n return reject('bufferToImage - expected buf to be of type: Blob')\n }\n\n const reader = new FileReader()\n reader.onload = () => {\n if (typeof reader.result !== 'string') {\n return reject('bufferToImage - expected reader.result to be a string, in onload')\n }\n\n const img = env.getEnv().createImageElement()\n img.onload = () => resolve(img)\n img.onerror = reject\n img.src = reader.result\n }\n reader.onerror = reject\n reader.readAsDataURL(buf)\n })\n}", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n\n const { Image, Video } = env.getEnv()\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight)\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight)\n }\n return new Dimensions(input.width, input.height)\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n\n const { createCanvasElement } = env.getEnv()\n const canvas = createCanvasElement()\n canvas.width = width\n canvas.height = height\n return canvas\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n\n const { ImageData } = env.getEnv()\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet')\n }\n\n const { width, height } = dims || getMediaDimensions(media)\n const canvas = createCanvas({ width, height })\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0)\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height)\n }\n return canvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement\n): Promise {\n\n const targetCanvas = canvas || env.getEnv().createCanvasElement()\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0)\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt())\n await tf.browser.toPixels(imgTensor3D, targetCanvas)\n\n imgTensor3D.dispose()\n\n return targetCanvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement\n): Promise {\n\n const targetCanvas = canvas || env.getEnv().createCanvasElement()\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0)\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt())\n await tf.browser.toPixels(imgTensor3D, targetCanvas)\n\n imgTensor3D.dispose()\n\n return targetCanvas\n}", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n\n const { Image, Canvas, Video } = env.getEnv()\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport { computeReshapedDimensions, isTensor3D, isTensor4D, range } from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n private _canvases: HTMLCanvasElement[] = []\n private _batchSize: number\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`)\n }\n\n this._treatAsBatchInput = treatAsBatchInput\n this._batchSize = inputs.length\n\n inputs.forEach((input, idx) => {\n\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = input.shape\n return\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0]\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = (input as any).shape.slice(1)\n return\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input)\n this._canvases[idx] = canvas\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3]\n })\n }\n\n public get imageTensors(): Array {\n return this._imageTensors\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput\n }\n\n public get batchSize(): number {\n return this._batchSize\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx)\n )\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx]\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx]\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0]\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1]\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet')\n }\n\n const width = this.getInputWidth(batchIdx)\n const height = this.getInputHeight(batchIdx)\n return computeReshapedDimensions({ width, height }, this.inputSize)\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n\n this._inputSize = inputSize\n\n return tf.tidy(() => {\n\n const inputTensors = range(this.batchSize, 0, 1).map(batchIdx => {\n const input = this.getInput(batchIdx)\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims()\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs)\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize])\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3)\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs))\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)\n })\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map(t => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3)\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n \n return batchTensor\n })\n }\n}", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n\n const { Image, Canvas } = env.getEnv()\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement')\n }\n\n const dims = getMediaDimensions(input)\n const scale = inputSize / Math.max(dims.height, dims.width)\n const width = scale * dims.width\n const height = scale * dims.height\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize })\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input)\n\n const offset = Math.abs(width - height) / 2\n const dx = centerImage && width < height ? offset : 0\n const dy = centerImage && height < width ? offset : 0\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height)\n\n return targetCanvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport { computeReshapedDimensions, isTensor3D, isTensor4D, range } from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n private _canvases: HTMLCanvasElement[] = []\n private _batchSize: number\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`)\n }\n\n this._treatAsBatchInput = treatAsBatchInput\n this._batchSize = inputs.length\n\n inputs.forEach((input, idx) => {\n\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = input.shape\n return\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0]\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = (input as any).shape.slice(1)\n return\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input)\n this._canvases[idx] = canvas\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3]\n })\n }\n\n public get imageTensors(): Array {\n return this._imageTensors\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput\n }\n\n public get batchSize(): number {\n return this._batchSize\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx)\n )\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx]\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx]\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0]\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1]\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet')\n }\n\n const width = this.getInputWidth(batchIdx)\n const height = this.getInputHeight(batchIdx)\n return computeReshapedDimensions({ width, height }, this.inputSize)\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n\n this._inputSize = inputSize\n\n return tf.tidy(() => {\n\n const inputTensors = range(this.batchSize, 0, 1).map(batchIdx => {\n const input = this.getInput(batchIdx)\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims()\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs)\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize])\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3)\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs))\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)\n })\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map(t => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3)\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n \n return batchTensor\n })\n }\n}", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs\n }\n\n let inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs]\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input')\n }\n\n const getIdxHint = (idx: number) => Array.isArray(inputs) ? ` at input index ${idx}:` : ''\n\n const inputArray = inputArgArray.map(resolveInput)\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`)\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`)\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0]\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n }\n })\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map(input => isMediaElement(input) && awaitMediaLoaded(input))\n )\n\n return new NetInput(inputArray, Array.isArray(inputs))\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array\n): Promise {\n\n const { Canvas } = env.getEnv()\n\n let canvas = input as HTMLCanvasElement\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input)\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported')\n }\n\n const tensorOrCanvas = netInput.getInput(0)\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas)\n }\n\n const ctx = getContext2dOrThrow(canvas)\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det\n )\n .map(box => box.clipAtImageBorders(canvas.width, canvas.height))\n\n return boxes.map(({ x, y, width, height }) => {\n const faceImg = createCanvas({ width, height })\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0)\n return faceImg\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array\n): Promise {\n\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D')\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported')\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0)\n\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det\n )\n .map(box => box.clipAtImageBorders(imgWidth, imgHeight))\n\n const faceTensors = boxes.map(({ x, y, width, height }) =>\n tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels])\n )\n\n return faceTensors\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array\n): Promise {\n\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D')\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported')\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0)\n\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det\n )\n .map(box => box.clipAtImageBorders(imgWidth, imgHeight))\n\n const faceTensors = boxes.map(({ x, y, width, height }) =>\n tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels])\n )\n\n return faceTensors\n })\n}", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n init?: RequestInit\n): Promise {\n\n const fetch = env.getEnv().fetch\n const res = await fetch(url, init)\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`)\n }\n return res\n}", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri)\n const blob = await (res).blob()\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`)\n }\n return bufferToImage(blob)\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json()\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer())\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName)\n let manifest = await fetchJson(manifestUri)\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri)\n}", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename\n }\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`\n }\n }\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter(s => s)\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/')\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName)\n let manifest = await fetchJson(manifestUri)\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri)\n}", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference\n input.width = width\n input.height = height\n return { width, height }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('FaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock4(normalized, params.dense0, true)\n out = denseBlock4(out, params.dense1)\n out = denseBlock4(out, params.dense2)\n out = denseBlock4(out, params.dense3)\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n })\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number]\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same')\n out = tf.add(out, params.bias)\n return out\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n })\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias\n ) as tf.Tensor4D\n\n return withRelu ? tf.relu(out) : out\n })\n}", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach(path => {\n if (!paramMappings.some(pm => pm.originalPath === path)) {\n weightMap[path].dispose()\n }\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): FCParams {\n\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut])\n const fc_bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return {\n weights: fc_weights,\n bias: fc_bias\n }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1])\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut])\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n\nexport function loadSeparableConvParamsFactory(\n extractWeightEntry: (originalPath: string, paramRank: number) => T\n) {\n\n return function (prefix: string): SeparableConvParams {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4)\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n constructor(\n public depthwise_filter: tf.Tensor4D,\n public pointwise_filter: tf.Tensor4D,\n public bias: tf.Tensor1D\n ) {}\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1])\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut])\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n\nexport function loadSeparableConvParamsFactory(\n extractWeightEntry: (originalPath: string, paramRank: number) => T\n) {\n\n return function (prefix: string): SeparableConvParams {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4)\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n return function (originalPath: string, paramRank: number, mappedPath?: string): T {\n const tensor = weightMap[originalPath]\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`)\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath }\n )\n\n return tensor\n }\n\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights)\n remainingWeights = remainingWeights.slice(numWeights)\n return ret\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights\n }\n\n return {\n extractWeights,\n getRemainingWeights\n }\n}", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`)\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`)\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer)\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock4Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2')\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2, dense3 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return function(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return { filters, bias }\n }\n}", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock4Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('FaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock4(normalized, params.dense0, true)\n out = denseBlock4(out, params.dense1)\n out = denseBlock4(out, params.dense2)\n out = denseBlock4(out, params.dense3)\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name)\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract getClassifierChannelsIn(): number\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut())\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const cIn = this.getClassifierChannelsIn()\n const cOut = this.getClassifierChannelsOut()\n const classifierWeightSize = (cOut * cIn ) + cOut\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams\n): tf.Tensor2D {\n return tf.tidy(() =>\n tf.add(\n tf.matMul(x, params.weights),\n params.bias\n )\n )\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: extractFcParams('fc')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n\n const featureExtractorMap: tf.NamedTensorMap = {}\n const classifierMap: tf.NamedTensorMap = {}\n\n Object.keys(weightMap).forEach(key => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap\n map[key] = weightMap[key]\n })\n\n return { featureExtractorMap, classifierMap }\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name)\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract getClassifierChannelsIn(): number\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut())\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const cIn = this.getClassifierChannelsIn()\n const cOut = this.getClassifierChannelsOut()\n const classifierWeightSize = (cOut * cIn ) + cOut\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised']\n\nexport class FaceExpressions {\n public neutral: number\n public happy: number\n public sad: number\n public angry: number\n public fearful: number\n public disgusted: number\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`)\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx]\n })\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map(expression => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor)\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)))\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async t => {\n const data = await t.data()\n t.dispose()\n return data\n }))\n out.dispose()\n\n const predictionsByBatch = probabilitesByBatch\n .map(probabilites => new FaceExpressions(probabilites as Float32Array))\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n\n protected getClassifierChannelsOut(): number {\n return 7\n }\n}", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj['expressions'] instanceof FaceExpressions\n}\n\nexport function extendWithFaceExpressions<\n TSource\n> (\n sourceObj: TSource,\n expressions: FaceExpressions\n): WithFaceExpressions {\n\n const extension = { expressions }\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions]\n\n faceExpressionsArray.forEach(e => {\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined)\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof')\n }\n\n const sorted = expr.asSortedArray()\n const resultsToDisplay = sorted.filter(expr => expr.probability > minConfidence)\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0))\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map(expr => `${expr.expression} (${round(expr.probability)})`),\n anchor\n )\n drawTextField.draw(canvasArg)\n })\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n}\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n && obj['landmarks'] instanceof FaceLandmarks\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n && obj['alignedRect'] instanceof FaceDetection\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> (\n sourceObj: TSource,\n unshiftedLandmarks: TFaceLandmarks\n): WithFaceLandmarks {\n\n const { box: shift } = sourceObj.detection\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y)\n\n const rect = landmarks.align()\n const { imageDims } = sourceObj.detection\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims)\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect\n }\n\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n public drawPoints: boolean\n public lineWidth: number\n public pointSize: number\n public lineColor: string\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const { drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor } = options\n this.drawLines = drawLines\n this.drawPoints = drawPoints\n this.lineWidth = lineWidth || 1\n this.pointSize = pointSize || 2\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)'\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)'\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {}\n ) {\n this.faceLandmarks = faceLandmarks\n this.options = new DrawFaceLandmarksOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor } = this.options\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor\n ctx.lineWidth = lineWidth\n drawContour(ctx, this.faceLandmarks.getJawOutline())\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow())\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow())\n drawContour(ctx, this.faceLandmarks.getNose())\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true)\n drawContour(ctx, this.faceLandmarks.getRightEye(), true)\n drawContour(ctx, this.faceLandmarks.getMouth(), true)\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor\n ctx.fillStyle = pointColor\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath()\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI)\n ctx.fill()\n }\n this.faceLandmarks.positions.forEach(drawPoint)\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks]\n faceLandmarksArray.forEach(f => {\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined)\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof')\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { AgeAndGenderPrediction, Gender, NetOutput, NetParams } from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet')\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1)\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D()\n const gender = fullyConnectedLayer(pooled, params.fc.gender)\n return { age, gender }\n })\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input)\n return { age, gender: tf.softmax(gender) }\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n\n const ages = tf.unstack(out.age)\n const genders = tf.unstack(out.gender)\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i]\n }))\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0]\n const probMale = (await genderTensor.data())[0]\n const isMale = probMale > 0.5\n const gender = isMale ? Gender.MALE : Gender.FEMALE\n const genderProbability = isMale ? probMale : (1 - probMale)\n\n ageTensor.dispose()\n genderTensor.dispose()\n return { age, gender, genderProbability }\n })\n )\n out.age.dispose()\n out.gender.dispose()\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model'\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights)\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2)\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias)\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = tf.maxPool(out, [3, 3], [2, 2], 'same')\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]))\n return out\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1])\n out = tf.add(out, x)\n return out\n}\n\nexport class TinyXception extends NeuralNetwork {\n\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception')\n this._numMainBlocks = numMainBlocks\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyXception - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]))\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false)\n out = reductionBlock(out, params.entry_flow.reduction_block_1)\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`])\n })\n\n out = reductionBlock(out, params.exit_flow.reduction_block)\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]))\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks)\n }\n}", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = loadParamsFactory(weightMap, paramMappings)\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias)\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = tf.maxPool(out, [3, 3], [2, 2], 'same')\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]))\n return out\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1])\n out = tf.add(out, x)\n return out\n}\n\nexport class TinyXception extends NeuralNetwork {\n\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception')\n this._numMainBlocks = numMainBlocks\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyXception - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]))\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false)\n out = reductionBlock(out, params.entry_flow.reduction_block_1)\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`])\n })\n\n out = reductionBlock(out, params.exit_flow.reduction_block)\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]))\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks)\n }\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const age = extractFCParams(512, 1, 'fc/age')\n const gender = extractFCParams(512, 2, 'fc/gender')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport enum Gender {\n FEMALE = 'female',\n MALE = 'male'\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { AgeAndGenderPrediction, Gender, NetOutput, NetParams } from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet')\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1)\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D()\n const gender = fullyConnectedLayer(pooled, params.fc.gender)\n return { age, gender }\n })\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input)\n return { age, gender: tf.softmax(gender) }\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n\n const ages = tf.unstack(out.age)\n const genders = tf.unstack(out.gender)\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i]\n }))\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0]\n const probMale = (await genderTensor.data())[0]\n const isMale = probMale > 0.5\n const gender = isMale ? Gender.MALE : Gender.FEMALE\n const genderProbability = isMale ? probMale : (1 - probMale)\n\n ageTensor.dispose()\n genderTensor.dispose()\n return { age, gender, genderProbability }\n })\n )\n out.age.dispose()\n out.gender.dispose()\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model'\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights)\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2)\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width)\n return {\n width: width * scale,\n height: height * scale\n }\n })\n\n const batchSize = inputDimensions.length\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) =>\n tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D()\n\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx]\n return cond(width, height) ? Math.abs(width - height) / 2 : 0\n }\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h)\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w)\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx)\n )\n )))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height\n )\n )))\n\n return landmarkTensors as tf.Tensor2D\n })\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input)\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width }))\n )\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data())\n const xCoords = landmarksArray.filter((_, i) => isEven(i))\n const yCoords = landmarksArray.filter((_, i) => !isEven(i))\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width : netInput.getInputWidth(batchIdx),\n }\n )\n }\n ))\n\n landmarkTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width)\n return {\n width: width * scale,\n height: height * scale\n }\n })\n\n const batchSize = inputDimensions.length\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) =>\n tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D()\n\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx]\n return cond(width, height) ? Math.abs(width - height) / 2 : 0\n }\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h)\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w)\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx)\n )\n )))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height\n )\n )))\n\n return landmarkTensors as tf.Tensor2D\n })\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input)\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width }))\n )\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data())\n const xCoords = landmarksArray.filter((_, i) => isEven(i))\n const yCoords = landmarksArray.filter((_, i) => !isEven(i))\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width : netInput.getInputWidth(batchIdx),\n }\n )\n }\n ))\n\n landmarkTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136\n }\n}", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('TinyFaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock3(normalized, params.dense0, true)\n out = denseBlock3(out, params.dense1)\n out = denseBlock3(out, params.dense2)\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock3Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\n\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock3Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('TinyFaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock3(normalized, params.dense0, true)\n out = denseBlock3(out, params.dense1)\n out = denseBlock3(out, params.dense2)\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights)\n }\n}", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 128\n }\n}", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n\n constructor() {\n super('FaceRecognitionNet')\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = convDown(normalized, params.conv32_down)\n out = tf.maxPool(out, 3, 2, 'valid')\n\n out = residual(out, params.conv32_1)\n out = residual(out, params.conv32_2)\n out = residual(out, params.conv32_3)\n\n out = residualDown(out, params.conv64_down)\n out = residual(out, params.conv64_1)\n out = residual(out, params.conv64_2)\n out = residual(out, params.conv64_3)\n\n out = residualDown(out, params.conv128_down)\n out = residual(out, params.conv128_1)\n out = residual(out, params.conv128_2)\n\n out = residualDown(out, params.conv256_down)\n out = residual(out, params.conv256_1)\n out = residual(out, params.conv256_2)\n out = residualDown(out, params.conv256_down_out)\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D\n const fullyConnected = tf.matMul(globalAvg, params.fc)\n\n return fullyConnected\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n t => t.data()\n )) as Float32Array[]\n\n faceDescriptorTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same'\n): tf.Tensor4D {\n const { filters, bias } = params.conv\n\n let out = tf.conv2d(x, filters, strides, padding)\n out = tf.add(out, bias)\n out = scale(out, params.scale)\n return withRelu ? tf.relu(out) : out\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true)\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false)\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid')\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases)\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same'\n): tf.Tensor4D {\n const { filters, bias } = params.conv\n\n let out = tf.conv2d(x, filters, strides, padding)\n out = tf.add(out, bias)\n out = scale(out, params.scale)\n return withRelu ? tf.relu(out) : out\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true)\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false)\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid')\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping } from '../common/index';\nimport { isFloat } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues)\n const depth = weights.length / (numFilters * filterSize * filterSize)\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`)\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0]\n )\n )\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize)\n const bias = tf.tensor1d(extractWeights(numFilters))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n\n const weights = tf.tensor1d(extractWeights(numWeights))\n const biases = tf.tensor1d(extractWeights(numWeights))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` }\n )\n\n return {\n weights,\n biases\n }\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvLayerParams {\n\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`)\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`)\n\n return { conv, scale }\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false\n ): ResidualLayerParams {\n\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`)\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`)\n\n return { conv1, conv2 }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down')\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1')\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2')\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3')\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true)\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1')\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2')\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3')\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true)\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1')\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2')\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true)\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1')\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2')\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out')\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0])\n )\n paramMappings.push({ paramPath: `fc` })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping } from '../common/index';\nimport { isFloat } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues)\n const depth = weights.length / (numFilters * filterSize * filterSize)\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`)\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0]\n )\n )\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize)\n const bias = tf.tensor1d(extractWeights(numFilters))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n\n const weights = tf.tensor1d(extractWeights(numWeights))\n const biases = tf.tensor1d(extractWeights(numWeights))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` }\n )\n\n return {\n weights,\n biases\n }\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvLayerParams {\n\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`)\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`)\n\n return { conv, scale }\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false\n ): ResidualLayerParams {\n\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`)\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`)\n\n return { conv1, conv2 }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down')\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1')\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2')\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3')\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true)\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1')\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2')\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3')\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true)\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1')\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2')\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true)\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1')\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2')\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out')\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0])\n )\n paramMappings.push({ paramPath: `fc` })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1)\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1)\n\n return { weights, biases }\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1)\n const scale = extractScaleLayerParams(prefix)\n\n return { conv: { filters, bias }, scale }\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`)\n }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const conv32_down = extractConvLayerParams('conv32_down')\n const conv32_1 = extractResidualLayerParams('conv32_1')\n const conv32_2 = extractResidualLayerParams('conv32_2')\n const conv32_3 = extractResidualLayerParams('conv32_3')\n\n const conv64_down = extractResidualLayerParams('conv64_down')\n const conv64_1 = extractResidualLayerParams('conv64_1')\n const conv64_2 = extractResidualLayerParams('conv64_2')\n const conv64_3 = extractResidualLayerParams('conv64_3')\n\n const conv128_down = extractResidualLayerParams('conv128_down')\n const conv128_1 = extractResidualLayerParams('conv128_1')\n const conv128_2 = extractResidualLayerParams('conv128_2')\n\n const conv256_down = extractResidualLayerParams('conv256_down')\n const conv256_1 = extractResidualLayerParams('conv256_1')\n const conv256_2 = extractResidualLayerParams('conv256_2')\n const conv256_down_out = extractResidualLayerParams('conv256_down_out')\n\n const fc = weightMap['fc']\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' })\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n out = tf.add(out, x)\n out = tf.relu(out)\n return out\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D\n const zeros = tf.zeros(pooled.shape)\n const isPad = pooled.shape[3] !== out.shape[3]\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number]\n padShapeX[1] = 1\n const zerosW = tf.zeros(padShapeX)\n out = tf.concat([out, zerosW], 1)\n\n const padShapeY = [...out.shape] as [number, number, number, number]\n padShapeY[2] = 1\n const zerosH = tf.zeros(padShapeY)\n out = tf.concat([out, zerosH], 2)\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled\n out = tf.add(pooled, out) as tf.Tensor4D\n\n out = tf.relu(out)\n return out\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n out = tf.add(out, x)\n out = tf.relu(out)\n return out\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D\n const zeros = tf.zeros(pooled.shape)\n const isPad = pooled.shape[3] !== out.shape[3]\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number]\n padShapeX[1] = 1\n const zerosW = tf.zeros(padShapeX)\n out = tf.concat([out, zerosW], 1)\n\n const padShapeY = [...out.shape] as [number, number, number, number]\n padShapeY[2] = 1\n const zerosH = tf.zeros(padShapeY)\n out = tf.concat([out, zerosH], 2)\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled\n out = tf.add(pooled, out) as tf.Tensor4D\n\n out = tf.relu(out)\n return out\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n\n constructor() {\n super('FaceRecognitionNet')\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = convDown(normalized, params.conv32_down)\n out = tf.maxPool(out, 3, 2, 'valid')\n\n out = residual(out, params.conv32_1)\n out = residual(out, params.conv32_2)\n out = residual(out, params.conv32_3)\n\n out = residualDown(out, params.conv64_down)\n out = residual(out, params.conv64_1)\n out = residual(out, params.conv64_2)\n out = residual(out, params.conv64_3)\n\n out = residualDown(out, params.conv128_down)\n out = residual(out, params.conv128_1)\n out = residual(out, params.conv128_2)\n\n out = residualDown(out, params.conv256_down)\n out = residual(out, params.conv256_1)\n out = residual(out, params.conv256_2)\n out = residualDown(out, params.conv256_down_out)\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D\n const fullyConnected = tf.matMul(globalAvg, params.fc)\n\n return fullyConnected\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n t => t.data()\n )) as Float32Array[]\n\n faceDescriptorTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet()\n net.extractWeights(weights)\n return net\n}", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n> (\n sourceObj: TSource,\n descriptor: Float32Array\n): WithFaceDescriptor {\n\n const extension = { descriptor }\n return Object.assign({}, sourceObj, extension)\n}\n\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj['age'] === 'number'\n}\n\nexport function extendWithAge<\n TSource\n> (\n sourceObj: TSource,\n age: number\n): WithAge {\n\n const extension = { age }\n return Object.assign({}, sourceObj, extension)\n}", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj['gender'] === Gender.MALE || obj['gender'] === Gender.FEMALE)\n && isValidProbablitiy(obj['genderProbability'])\n}\n\nexport function extendWithGender<\n TSource\n> (\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number\n): WithGender {\n\n const extension = { gender, genderProbability }\n return Object.assign({}, sourceObj, extension)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n\n constructor() {\n super('SsdMobilenetv1')\n }\n\n public forwardInput(input: NetInput) {\n\n const { params } = this\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D\n const features = mobileNetV1(x, params.mobilenetv1)\n\n const {\n boxPredictions,\n classPredictions\n } = predictionLayer(features.out, features.conv11, params.prediction_layer)\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer)\n })\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {}\n ): Promise {\n\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options)\n\n const netInput = await toNetInput(input)\n\n const {\n boxes: _boxes,\n scores: _scores\n } = this.forwardInput(netInput)\n\n\n // TODO batches\n const boxes = _boxes[0]\n const scores = _scores[0]\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose()\n _scores[i].dispose()\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data())\n\n const iouThreshold = 0.5\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence\n )\n\n const reshapedDims = netInput.getReshapedInputDimensions(0)\n const inputSize = netInput.inputSize as number\n const padX = inputSize / reshapedDims.width\n const padY = inputSize / reshapedDims.height\n\n const boxesData = boxes.arraySync()\n const results = indices\n .map(idx => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2])\n ].map(val => val * padY)\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3])\n ].map(val => val * padX)\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0)\n }\n )\n })\n\n boxes.dispose()\n scores.dispose()\n\n return results\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common/index';\nimport { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1])\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` }\n )\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n }\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }\n )\n\n return { filters, bias }\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): PointwiseConvParams {\n\n const {\n filters,\n bias\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true)\n\n return {\n filters,\n batch_norm_offset: bias\n }\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): MobileNetV1.ConvPairParams {\n\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`)\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`)\n\n return { depthwise_conv, pointwise_conv }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0')\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1')\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2')\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3')\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4')\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5')\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6')\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7')\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8')\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9')\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10')\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11')\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12')\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13')\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13\n }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0')\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1')\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2')\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3')\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4')\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5')\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6')\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7')\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor')\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor')\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor')\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor')\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor')\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor')\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor')\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor')\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor')\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor')\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor')\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor')\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0\n }\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1\n }\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2\n }\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3\n }\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4\n }\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5\n }\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const mobilenetv1 = extractMobilenetV1Params()\n const prediction_layer = extractPredictionLayerParams()\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4]\n )\n const output_layer = {\n extra_dim\n }\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer\n },\n paramMappings\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common/index';\nimport { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1])\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` }\n )\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n }\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }\n )\n\n return { filters, bias }\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): PointwiseConvParams {\n\n const {\n filters,\n bias\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true)\n\n return {\n filters,\n batch_norm_offset: bias\n }\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): MobileNetV1.ConvPairParams {\n\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`)\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`)\n\n return { depthwise_conv, pointwise_conv }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0')\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1')\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2')\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3')\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4')\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5')\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6')\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7')\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8')\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9')\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10')\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11')\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12')\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13')\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13\n }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0')\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1')\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2')\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3')\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4')\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5')\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6')\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7')\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor')\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor')\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor')\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor')\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor')\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor')\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor')\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor')\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor')\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor')\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor')\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor')\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0\n }\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1\n }\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2\n }\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3\n }\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4\n }\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5\n }\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const mobilenetv1 = extractMobilenetV1Params()\n const prediction_layer = extractPredictionLayerParams()\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4]\n )\n const output_layer = {\n extra_dim\n }\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer\n },\n paramMappings\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport { BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`)\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`)\n\n return { filters, batch_norm_offset }\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n\n const mappedPrefix = `mobilenetv1/conv_${idx}`\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`)\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`)\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`)\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`)\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`)\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv)\n }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13)\n }\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`)\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`)\n\n return { filters, bias }\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`\n )\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`\n )\n\n return { box_encoding_predictor, class_predictor }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5)\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const extra_dim = weightMap['Output/extra_dim']\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' })\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`)\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same')\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon\n )\n return tf.clipByValue(out, 0, 6)\n\n })\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1]\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2])\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13\n ]\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx)\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides)\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1])\n if (layerIdx === 11) {\n conv11 = out\n }\n })\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null')\n }\n\n return {\n out,\n conv11: conv11 as any\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.conv2d(x, params.filters, strides, 'same')\n out = tf.add(out, params.batch_norm_offset)\n return tf.clipByValue(out, 0, 6)\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same')\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon\n )\n return tf.clipByValue(out, 0, 6)\n\n })\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1]\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2])\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13\n ]\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx)\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides)\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1])\n if (layerIdx === 11) {\n conv11 = out\n }\n })\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null')\n }\n\n return {\n out,\n conv11: conv11 as any\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number\n): number[] {\n\n const numBoxes = boxes.shape[0]\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes\n )\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter(c => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score)\n\n const suppressFunc = (x: number) => x <= iouThreshold ? 1 : 0\n\n const selected: number[] = []\n\n candidates.forEach(c => {\n if (selected.length >= outputSize) {\n return\n }\n const originalScore = c.score\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j])\n if (iou === 0.0) {\n continue\n }\n c.score *= suppressFunc(iou)\n if (c.score <= scoreThreshold) {\n break\n }\n }\n\n if (originalScore === c.score) {\n selected.push(c.boxIndex)\n }\n })\n\n return selected\n}\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync()\n const yminI = Math.min(boxesData[i][0], boxesData[i][2])\n const xminI = Math.min(boxesData[i][1], boxesData[i][3])\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2])\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3])\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2])\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3])\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2])\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3])\n const areaI = (ymaxI - yminI) * (xmaxI - xminI)\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ)\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0\n }\n const intersectionYmin = Math.max(yminI, yminJ)\n const intersectionXmin = Math.max(xminI, xminJ)\n const intersectionYmax = Math.min(ymaxI, ymaxJ)\n const intersectionXmax = Math.min(xmaxI, xmaxJ)\n const intersectionArea =\n Math.max(intersectionYmax - intersectionYmin, 0.0) *\n Math.max(intersectionXmax - intersectionXmin, 0.0)\n return intersectionArea / (areaI + areaJ - intersectionArea)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]))\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1])\n ]\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2)))\n ]\n\n return {\n sizes,\n centers\n }\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers\n } = getCenterCoordinatesAndSizesLayer(x0)\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]))\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2))\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0])\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2))\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1])\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out)\n ]),\n [1, 0]\n )\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams\n) {\n return tf.tidy(() => {\n\n const batchSize = boxPredictions.shape[0]\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D\n )\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4]\n )\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]))\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number]\n )\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[]\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[]\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams\n) {\n return tf.tidy(() => {\n\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1])\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2])\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1])\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2])\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1])\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2])\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1])\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2])\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0)\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1)\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2)\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3)\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4)\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5)\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding\n ], 1) as tf.Tensor4D\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction\n ], 1) as tf.Tensor4D\n\n return {\n boxPredictions,\n classPredictions\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams\n) {\n return tf.tidy(() => {\n\n const batchSize = x.shape[0]\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4]\n )\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3]\n )\n\n return {\n boxPredictionEncoding,\n classPrediction\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams\n) {\n return tf.tidy(() => {\n\n const batchSize = x.shape[0]\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4]\n )\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3]\n )\n\n return {\n boxPredictionEncoding,\n classPrediction\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams\n) {\n return tf.tidy(() => {\n\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1])\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2])\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1])\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2])\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1])\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2])\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1])\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2])\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0)\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1)\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2)\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3)\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4)\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5)\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding\n ], 1) as tf.Tensor4D\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction\n ], 1) as tf.Tensor4D\n\n return {\n boxPredictions,\n classPredictions\n }\n })\n}", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5\n this._maxResults = maxResults || 100\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`)\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`)\n }\n }\n\n get minConfidence(): number { return this._minConfidence }\n get maxResults(): number { return this._maxResults }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n\n constructor() {\n super('SsdMobilenetv1')\n }\n\n public forwardInput(input: NetInput) {\n\n const { params } = this\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D\n const features = mobileNetV1(x, params.mobilenetv1)\n\n const {\n boxPredictions,\n classPredictions\n } = predictionLayer(features.out, features.conv11, params.prediction_layer)\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer)\n })\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {}\n ): Promise {\n\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options)\n\n const netInput = await toNetInput(input)\n\n const {\n boxes: _boxes,\n scores: _scores\n } = this.forwardInput(netInput)\n\n\n // TODO batches\n const boxes = _boxes[0]\n const scores = _scores[0]\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose()\n _scores[i].dispose()\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data())\n\n const iouThreshold = 0.5\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence\n )\n\n const reshapedDims = netInput.getReshapedInputDimensions(0)\n const inputSize = netInput.inputSize as number\n const padX = inputSize / reshapedDims.width\n const padY = inputSize / reshapedDims.height\n\n const boxesData = boxes.arraySync()\n const results = indices\n .map(idx => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2])\n ].map(val => val * padY)\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3])\n ].map(val => val * padX)\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0)\n }\n )\n })\n\n boxes.dispose()\n scores.dispose()\n\n return results\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1()\n net.extractWeights(weights)\n return net\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights)\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741)\n]\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404]\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model'\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model'", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2')\n validateConfig(config)\n this._config = config\n }\n\n public get config(): TinyYolov2Config {\n return this._config\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0)\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n\n let out = convWithBatchNorm(x, params.conv0)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = convWithBatchNorm(out, params.conv6)\n out = convWithBatchNorm(out, params.conv7)\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference')\n }\n\n return tf.tidy(() => {\n\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams)\n })\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return await this.forwardInput(await toNetInput(input), inputSize)\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams)\n\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput, inputSize)\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0)\n }\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold)\n out.dispose()\n out0.dispose()\n\n const boxes = results.map(res => res.box)\n const scores = results.map(res => res.score)\n const classScores = results.map(res => res.classScore)\n const classNames = results.map(res => this.config.classes[res.label])\n\n const indices = nonMaxSuppression(\n boxes.map(box => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true\n )\n\n const detections = indices.map(idx =>\n new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions\n )\n )\n\n return detections\n }\n\n protected getDefaultModelName(): string {\n return ''\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config)\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES\n\n const numFilters = filterSizes ? filterSizes.length : undefined\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`)\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes)\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number\n ) {\n\n const { width, height } = inputBlobDimensions\n const inputSize = Math.max(width, height)\n const correctionFactorX = inputSize / width\n const correctionFactorY = inputSize / height\n\n const numCells = outputTensor.shape[1]\n const numBoxes = this.config.anchors.length\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize])\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4])\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1])\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0)\n return [boxes, scores, classScores]\n })\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array()\n const boxesData = await boxesTensor.array()\n for (let row = 0; row < numCells; row ++) {\n for (let col = 0; col < numCells; col ++) {\n for (let anchor = 0; anchor < numBoxes; anchor ++) {\n\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY\n const width = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX\n const height = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY\n\n const x = (ctX - (width / 2))\n const y = (ctY - (height / 2))\n\n const pos = { row, col, anchor }\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 }\n\n results.push({\n box: new BoundingBox(x, y, x + width, y + height),\n score: score,\n classScore: score * classScore,\n label,\n ...pos\n })\n }\n }\n }\n }\n\n boxesTensor.dispose()\n scoresTensor.dispose()\n classScoresTensor.dispose()\n\n return results\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number },) {\n const { row, col, anchor } = pos\n const classesData = await classesTensor.array()\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label\n }))\n .reduce((max, curr) => max.classScore > curr.classScore ? max : curr)\n }\n}", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number'\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`)\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`)\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`)\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`)\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`)\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid')\n out = tf.sub(out, params.bn.sub)\n out = tf.mul(out, params.bn.truediv)\n out = tf.add(out, params.conv.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612))\n return tf.add(tf.relu(tf.sub(x, min)), min)\n //return tf.maximum(x, min)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid')\n out = tf.sub(out, params.bn.sub)\n out = tf.mul(out, params.bn.truediv)\n out = tf.add(out, params.conv.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid')\n out = tf.add(out, params.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid')\n out = tf.add(out, params.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n\n const sub = tf.tensor1d(extractWeights(size))\n const truediv = tf.tensor1d(extractWeights(size))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` }\n )\n\n return { sub, truediv }\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`)\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`)\n\n return { conv, bn }\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[]\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0')\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1')\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2')\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3')\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4')\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5')\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0',)\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1')\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2')\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3')\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4')\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5')\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6')\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7')\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n\n const sub = tf.tensor1d(extractWeights(size))\n const truediv = tf.tensor1d(extractWeights(size))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` }\n )\n\n return { sub, truediv }\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`)\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`)\n\n return { conv, bn }\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[]\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0')\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1')\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2')\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3')\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4')\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5')\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0',)\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1')\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2')\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3')\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4')\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5')\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6')\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7')\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1)\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1)\n return { sub, truediv }\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { filters, bias }\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`)\n const bn = extractBatchNormParams(`${prefix}/bn`)\n return { conv, bn }\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(weightMap, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const numFilters = (config.filterSizes && config.filterSizes.length || 9)\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8')\n }\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "export enum TinyYolov2SizeType {\n XS = 224,\n SM = 320,\n MD = 416,\n LG = 608\n}\n\nexport interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416\n this._scoreThreshold = scoreThreshold || 0.5\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`)\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)\n }\n }\n\n get inputSize(): number { return this._inputSize }\n get scoreThreshold(): number { return this._scoreThreshold }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2')\n validateConfig(config)\n this._config = config\n }\n\n public get config(): TinyYolov2Config {\n return this._config\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0)\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n\n let out = convWithBatchNorm(x, params.conv0)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = convWithBatchNorm(out, params.conv6)\n out = convWithBatchNorm(out, params.conv7)\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference')\n }\n\n return tf.tidy(() => {\n\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams)\n })\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return await this.forwardInput(await toNetInput(input), inputSize)\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams)\n\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput, inputSize)\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0)\n }\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold)\n out.dispose()\n out0.dispose()\n\n const boxes = results.map(res => res.box)\n const scores = results.map(res => res.score)\n const classScores = results.map(res => res.classScore)\n const classNames = results.map(res => this.config.classes[res.label])\n\n const indices = nonMaxSuppression(\n boxes.map(box => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true\n )\n\n const detections = indices.map(idx =>\n new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions\n )\n )\n\n return detections\n }\n\n protected getDefaultModelName(): string {\n return ''\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config)\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES\n\n const numFilters = filterSizes ? filterSizes.length : undefined\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`)\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes)\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number\n ) {\n\n const { width, height } = inputBlobDimensions\n const inputSize = Math.max(width, height)\n const correctionFactorX = inputSize / width\n const correctionFactorY = inputSize / height\n\n const numCells = outputTensor.shape[1]\n const numBoxes = this.config.anchors.length\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize])\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4])\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1])\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0)\n return [boxes, scores, classScores]\n })\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array()\n const boxesData = await boxesTensor.array()\n for (let row = 0; row < numCells; row ++) {\n for (let col = 0; col < numCells; col ++) {\n for (let anchor = 0; anchor < numBoxes; anchor ++) {\n\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY\n const width = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX\n const height = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY\n\n const x = (ctX - (width / 2))\n const y = (ctY - (height / 2))\n\n const pos = { row, col, anchor }\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 }\n\n results.push({\n box: new BoundingBox(x, y, x + width, y + height),\n score: score,\n classScore: score * classScore,\n label,\n ...pos\n })\n }\n }\n }\n }\n\n boxesTensor.dispose()\n scoresTensor.dispose()\n classScoresTensor.dispose()\n\n return results\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number },) {\n const { row, col, anchor } = pos\n const classesData = await classesTensor.array()\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label\n }))\n .reduce((max, curr) => max.classScore > curr.classScore ? max : curr)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n\n constructor(withSeparableConvs: boolean = true) {\n const config = Object.assign({}, {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face']\n },\n withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true\n }\n )\n\n super(config)\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config'\nexport * from './types'\n\nexport { TinyYolov2 }\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs)\n net.extractWeights(weights)\n return net\n}", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}", "export class ComposableTask {\n\n public async then(\n onfulfilled: (value: T) => T | PromiseLike\n ): Promise {\n return onfulfilled(await this.run())\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented')\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected useTinyLandmarkNet: boolean\n ) {\n super()\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n const detections = parentResults.map(res => res.detection)\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections)\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n face => this.landmarkNet.detectLandmarks(face)\n )) as FaceLandmarks68[]\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return parentResults.map((parentResult, i) =>\n extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i])\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection])\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return extendWithFaceLandmarks(parentResult, landmarks)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect\n) {\n const faceBoxes = parentResults.map(parentResult =>\n isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection\n )\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n )\n\n const results = await computeResults(faces)\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return results\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async faces => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment\n )\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect\n) {\n const faceBoxes = parentResults.map(parentResult =>\n isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection\n )\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n )\n\n const results = await computeResults(faces)\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return results\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async faces => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment\n )\n}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404]", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512]\n }\n\n super(config)\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks5 } from '../classes/FaceLandmarks5';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet()\n}\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise =>\n nets.ssdMobilenetv1.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise =>\n nets.tinyFaceDetector.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise =>\n nets.tinyYolov2.locateFaces(input, options)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise =>\n nets.faceLandmark68Net.detectLandmarks(input)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise =>\n nets.faceLandmark68TinyNet.detectLandmarks(input)\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise =>\n nets.faceRecognitionNet.computeFaceDescriptor(input)\n\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise =>\n nets.faceExpressionNet.predictExpressions(input)\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise =>\n nets.ageGenderNet.predictAgeAndGender(input)\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url)\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url)\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url)\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url)\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url)\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url)\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url)\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url)\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model\nexport const locateFaces = ssdMobilenetv1\nexport const detectLandmarks = detectFaceLandmarks", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.faceExpressionNet.predictExpressions(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i])\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithFaceExpressions(parentResult, faceExpressions)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n\n public async run(): Promise>[]> {\n\n const parentResults = await this.parentTask\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i]\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n })\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n\n public async run(): Promise> | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput\n ) {\n super()\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n faces => Promise.all(faces.map(face =>\n nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise\n )),\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor))\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return extendWithFaceDescriptor(parentResult, descriptor)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected useTinyLandmarkNet: boolean\n ) {\n super()\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n const detections = parentResults.map(res => res.detection)\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections)\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n face => this.landmarkNet.detectLandmarks(face)\n )) as FaceLandmarks68[]\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return parentResults.map((parentResult, i) =>\n extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i])\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection])\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return extendWithFaceLandmarks(parentResult, landmarks)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n protected input: TNetInput,\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options()\n ) {\n super()\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n\n const { input, options } = this\n\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n options instanceof SsdMobilenetv1Options\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n )\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options')\n }\n\n return faceDetectionFunction(input)\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n return new Promise[]>(async res => {\n const detections = await this.run()\n return res(detections.map(detection => extendWithFaceDetection({}, detection)))\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask (\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach(faceDetection => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n return new Promise | undefined>(async res => {\n const detection = await this.run()\n return res(detection ? extendWithFaceDetection<{}>({}, detection) : undefined)\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n}", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options)\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options)\n}", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number\n): Promise>>[]> {\n console.warn('allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {}\n): Promise>>[]> {\n console.warn('allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport const allFaces = allFacesSsdMobilenetv1\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n\n private _labeledDescriptors: LabeledFaceDescriptors[]\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6\n ) {\n\n this._distanceThreshold = distanceThreshold\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs]\n\n if (!inputArray.length) {\n throw new Error(`FaceRecognizer.constructor - expected atleast one input`)\n }\n\n let count = 1\n const createUniqueLabel = () => `person ${count++}`\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc])\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor])\n }\n\n throw new Error(`FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>`)\n })\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors }\n public get distanceThreshold(): number { return this._distanceThreshold }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map(d => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1)\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors)\n ))\n .reduce((best, curr) => best.distance < curr.distance ? best : curr)\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor)\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance)\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON())\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n\n}", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector()\n net.extractWeights(weights)\n return net\n}", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n"], - "mappings": "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", + "sources": ["../src/tfjs/tf-node-gpu.js", "../src/env/isNodejs.ts", "../src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/NetInput.ts", "../src/dom/imageToSquare.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/dom/loadWeightMap.ts", "../src/common/getModelUris.ts", "../src/dom/matchDimensions.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/NeuralNetwork.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/depthwiseSeparableConv.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/types.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/xception/TinyXception.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts"], + "sourcesContent": ["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable node/no-unpublished-import */\n\nexport * from '@tensorflow/tfjs-node-gpu';\n", "export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}"], + "mappings": "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", "names": [] } diff --git a/dist/face-api.node-gpu.json b/dist/face-api.node-gpu.json index f867a3b..dcb726a 100644 --- a/dist/face-api.node-gpu.json +++ b/dist/face-api.node-gpu.json @@ -5,11 +5,11 @@ "imports": [] }, "src/draw/drawContour.ts": { - "bytes": 526, + "bytes": 539, "imports": [] }, "src/classes/Dimensions.ts": { - "bytes": 737, + "bytes": 745, "imports": [ { "path": "src/utils/index.ts" @@ -17,7 +17,7 @@ ] }, "src/utils/index.ts": { - "bytes": 1776, + "bytes": 1845, "imports": [ { "path": "dist/tfjs.esm.js" @@ -31,11 +31,11 @@ ] }, "src/classes/Point.ts": { - "bytes": 923, + "bytes": 925, "imports": [] }, "src/classes/Box.ts": { - "bytes": 5477, + "bytes": 5690, "imports": [ { "path": "src/utils/index.ts" @@ -46,7 +46,7 @@ ] }, "src/classes/BoundingBox.ts": { - "bytes": 389, + "bytes": 402, "imports": [ { "path": "src/classes/Box.ts" @@ -54,7 +54,7 @@ ] }, "src/classes/ObjectDetection.ts": { - "bytes": 1395, + "bytes": 1424, "imports": [ { "path": "src/classes/Box.ts" @@ -65,7 +65,7 @@ ] }, "src/classes/FaceDetection.ts": { - "bytes": 651, + "bytes": 656, "imports": [ { "path": "src/classes/ObjectDetection.ts" @@ -73,11 +73,11 @@ ] }, "src/ops/iou.ts": { - "bytes": 468, + "bytes": 473, "imports": [] }, "src/ops/minBbox.ts": { - "bytes": 479, + "bytes": 498, "imports": [ { "path": "src/classes/index.ts" @@ -85,7 +85,7 @@ ] }, "src/ops/nonMaxSuppression.ts": { - "bytes": 908, + "bytes": 924, "imports": [ { "path": "src/ops/iou.ts" @@ -93,7 +93,7 @@ ] }, "src/ops/normalize.ts": { - "bytes": 478, + "bytes": 486, "imports": [ { "path": "dist/tfjs.esm.js" @@ -101,7 +101,7 @@ ] }, "src/ops/padToSquare.ts": { - "bytes": 1659, + "bytes": 1687, "imports": [ { "path": "dist/tfjs.esm.js" @@ -109,11 +109,11 @@ ] }, "src/ops/shuffleArray.ts": { - "bytes": 274, + "bytes": 273, "imports": [] }, "src/ops/index.ts": { - "bytes": 322, + "bytes": 331, "imports": [ { "path": "src/ops/iou.ts" @@ -136,7 +136,7 @@ ] }, "src/classes/Rect.ts": { - "bytes": 346, + "bytes": 359, "imports": [ { "path": "src/classes/Box.ts" @@ -144,7 +144,7 @@ ] }, "src/classes/FaceLandmarks.ts": { - "bytes": 4167, + "bytes": 4199, "imports": [ { "path": "src/ops/index.ts" @@ -170,7 +170,7 @@ ] }, "src/classes/FaceLandmarks5.ts": { - "bytes": 358, + "bytes": 360, "imports": [ { "path": "src/utils/index.ts" @@ -181,7 +181,7 @@ ] }, "src/classes/FaceLandmarks68.ts": { - "bytes": 905, + "bytes": 915, "imports": [ { "path": "src/utils/index.ts" @@ -192,7 +192,7 @@ ] }, "src/classes/FaceMatch.ts": { - "bytes": 570, + "bytes": 578, "imports": [ { "path": "src/utils/index.ts" @@ -200,7 +200,7 @@ ] }, "src/classes/LabeledBox.ts": { - "bytes": 641, + "bytes": 645, "imports": [ { "path": "src/utils/index.ts" @@ -211,11 +211,11 @@ ] }, "src/classes/LabeledFaceDescriptors.ts": { - "bytes": 1083, + "bytes": 1072, "imports": [] }, "src/classes/PredictedBox.ts": { - "bytes": 944, + "bytes": 952, "imports": [ { "path": "src/utils/index.ts" @@ -226,7 +226,7 @@ ] }, "src/classes/index.ts": { - "bytes": 427, + "bytes": 436, "imports": [ { "path": "src/classes/BoundingBox.ts" @@ -273,7 +273,7 @@ ] }, "src/factories/WithFaceDetection.ts": { - "bytes": 496, + "bytes": 486, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -281,15 +281,15 @@ ] }, "src/env/createBrowserEnv.ts": { - "bytes": 685, + "bytes": 636, "imports": [] }, "src/env/createFileSystem.ts": { - "bytes": 650, + "bytes": 654, "imports": [] }, "src/env/createNodejsEnv.ts": { - "bytes": 1170, + "bytes": 1202, "imports": [ { "path": "src/env/createFileSystem.ts" @@ -297,19 +297,19 @@ ] }, "src/env/isBrowser.ts": { - "bytes": 352, + "bytes": 354, "imports": [] }, "src/env/isNodejs.ts": { - "bytes": 293, + "bytes": 295, "imports": [] }, "src/env/types.ts": { - "bytes": 470, + "bytes": 570, "imports": [] }, "src/env/index.ts": { - "bytes": 1801, + "bytes": 1817, "imports": [ { "path": "src/env/createBrowserEnv.ts" @@ -332,7 +332,7 @@ ] }, "src/dom/resolveInput.ts": { - "bytes": 197, + "bytes": 200, "imports": [ { "path": "src/env/index.ts" @@ -340,7 +340,7 @@ ] }, "src/dom/getContext2dOrThrow.ts": { - "bytes": 666, + "bytes": 673, "imports": [ { "path": "src/env/index.ts" @@ -351,7 +351,7 @@ ] }, "src/draw/DrawTextField.ts": { - "bytes": 3710, + "bytes": 4094, "imports": [ { "path": "src/dom/getContext2dOrThrow.ts" @@ -362,7 +362,7 @@ ] }, "src/draw/DrawBox.ts": { - "bytes": 1750, + "bytes": 1831, "imports": [ { "path": "src/classes/index.ts" @@ -376,7 +376,7 @@ ] }, "src/draw/drawDetections.ts": { - "bytes": 1018, + "bytes": 1128, "imports": [ { "path": "src/classes/index.ts" @@ -396,7 +396,7 @@ ] }, "src/dom/isMediaLoaded.ts": { - "bytes": 276, + "bytes": 277, "imports": [ { "path": "src/env/index.ts" @@ -404,7 +404,7 @@ ] }, "src/dom/awaitMediaLoaded.ts": { - "bytes": 848, + "bytes": 963, "imports": [ { "path": "src/env/index.ts" @@ -415,7 +415,7 @@ ] }, "src/dom/bufferToImage.ts": { - "bytes": 691, + "bytes": 687, "imports": [ { "path": "src/env/index.ts" @@ -423,7 +423,7 @@ ] }, "src/dom/getMediaDimensions.ts": { - "bytes": 526, + "bytes": 529, "imports": [ { "path": "src/classes/Dimensions.ts" @@ -434,7 +434,7 @@ ] }, "src/dom/createCanvas.ts": { - "bytes": 1128, + "bytes": 1139, "imports": [ { "path": "src/env/index.ts" @@ -451,7 +451,7 @@ ] }, "src/dom/imageTensorToCanvas.ts": { - "bytes": 611, + "bytes": 618, "imports": [ { "path": "dist/tfjs.esm.js" @@ -465,7 +465,7 @@ ] }, "src/dom/isMediaElement.ts": { - "bytes": 226, + "bytes": 228, "imports": [ { "path": "src/env/index.ts" @@ -473,7 +473,7 @@ ] }, "src/dom/imageToSquare.ts": { - "bytes": 1162, + "bytes": 1175, "imports": [ { "path": "src/env/index.ts" @@ -490,7 +490,7 @@ ] }, "src/dom/NetInput.ts": { - "bytes": 5465, + "bytes": 5511, "imports": [ { "path": "dist/tfjs.esm.js" @@ -513,7 +513,7 @@ ] }, "src/dom/toNetInput.ts": { - "bytes": 2100, + "bytes": 2115, "imports": [ { "path": "src/utils/index.ts" @@ -533,7 +533,7 @@ ] }, "src/dom/extractFaces.ts": { - "bytes": 1755, + "bytes": 1782, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -556,7 +556,7 @@ ] }, "src/dom/extractFaceTensors.ts": { - "bytes": 1718, + "bytes": 1733, "imports": [ { "path": "dist/tfjs.esm.js" @@ -570,7 +570,7 @@ ] }, "src/dom/fetchOrThrow.ts": { - "bytes": 348, + "bytes": 390, "imports": [ { "path": "src/env/index.ts" @@ -578,7 +578,7 @@ ] }, "src/dom/fetchImage.ts": { - "bytes": 447, + "bytes": 451, "imports": [ { "path": "src/dom/bufferToImage.ts" @@ -589,7 +589,7 @@ ] }, "src/dom/fetchJson.ts": { - "bytes": 154, + "bytes": 155, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -597,7 +597,7 @@ ] }, "src/dom/fetchNetWeights.ts": { - "bytes": 199, + "bytes": 200, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -605,11 +605,11 @@ ] }, "src/common/getModelUris.ts": { - "bytes": 990, + "bytes": 1052, "imports": [] }, "src/dom/loadWeightMap.ts": { - "bytes": 549, + "bytes": 555, "imports": [ { "path": "dist/tfjs.esm.js" @@ -623,7 +623,7 @@ ] }, "src/dom/matchDimensions.ts": { - "bytes": 396, + "bytes": 401, "imports": [ { "path": "src/dom/getMediaDimensions.ts" @@ -631,11 +631,11 @@ ] }, "src/dom/types.ts": { - "bytes": 385, + "bytes": 386, "imports": [] }, "src/dom/index.ts": { - "bytes": 674, + "bytes": 696, "imports": [ { "path": "src/dom/awaitMediaLoaded.ts" @@ -720,7 +720,7 @@ ] }, "src/common/depthwiseSeparableConv.ts": { - "bytes": 411, + "bytes": 417, "imports": [ { "path": "dist/tfjs.esm.js" @@ -728,7 +728,7 @@ ] }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytes": 2021, + "bytes": 2041, "imports": [ { "path": "dist/tfjs.esm.js" @@ -739,7 +739,7 @@ ] }, "src/common/convLayer.ts": { - "bytes": 425, + "bytes": 431, "imports": [ { "path": "dist/tfjs.esm.js" @@ -747,11 +747,11 @@ ] }, "src/common/disposeUnusedWeightTensors.ts": { - "bytes": 284, + "bytes": 290, "imports": [] }, "src/common/extractConvParamsFactory.ts": { - "bytes": 768, + "bytes": 769, "imports": [ { "path": "dist/tfjs.esm.js" @@ -767,11 +767,11 @@ ] }, "src/common/types.ts": { - "bytes": 513, + "bytes": 800, "imports": [] }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytes": 1490, + "bytes": 1536, "imports": [ { "path": "dist/tfjs.esm.js" @@ -782,7 +782,7 @@ ] }, "src/common/extractWeightEntryFactory.ts": { - "bytes": 587, + "bytes": 579, "imports": [ { "path": "src/utils/index.ts" @@ -790,11 +790,11 @@ ] }, "src/common/extractWeightsFactory.ts": { - "bytes": 433, + "bytes": 441, "imports": [] }, "src/common/index.ts": { - "bytes": 388, + "bytes": 399, "imports": [ { "path": "src/common/convLayer.ts" @@ -829,7 +829,7 @@ ] }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytes": 1568, + "bytes": 1587, "imports": [ { "path": "src/common/index.ts" @@ -837,7 +837,7 @@ ] }, "src/faceFeatureExtractor/extractParams.ts": { - "bytes": 1008, + "bytes": 1030, "imports": [ { "path": "src/common/index.ts" @@ -848,11 +848,11 @@ ] }, "src/common/loadConvParamsFactory.ts": { - "bytes": 426, + "bytes": 469, "imports": [] }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytes": 1522, + "bytes": 1547, "imports": [ { "path": "src/common/index.ts" @@ -863,7 +863,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytes": 833, + "bytes": 841, "imports": [ { "path": "src/common/index.ts" @@ -874,7 +874,7 @@ ] }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytes": 1794, + "bytes": 1809, "imports": [ { "path": "dist/tfjs.esm.js" @@ -900,7 +900,7 @@ ] }, "src/common/fullyConnectedLayer.ts": { - "bytes": 275, + "bytes": 266, "imports": [ { "path": "dist/tfjs.esm.js" @@ -908,7 +908,7 @@ ] }, "src/faceProcessor/extractParams.ts": { - "bytes": 751, + "bytes": 759, "imports": [ { "path": "src/common/index.ts" @@ -916,7 +916,7 @@ ] }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytes": 839, + "bytes": 826, "imports": [ { "path": "src/common/index.ts" @@ -924,11 +924,11 @@ ] }, "src/faceProcessor/util.ts": { - "bytes": 417, + "bytes": 424, "imports": [] }, "src/faceProcessor/FaceProcessor.ts": { - "bytes": 3015, + "bytes": 3037, "imports": [ { "path": "dist/tfjs.esm.js" @@ -954,11 +954,11 @@ ] }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytes": 855, + "bytes": 869, "imports": [] }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytes": 1648, + "bytes": 1667, "imports": [ { "path": "dist/tfjs.esm.js" @@ -978,7 +978,7 @@ ] }, "src/faceExpressionNet/index.ts": { - "bytes": 71, + "bytes": 72, "imports": [ { "path": "src/faceExpressionNet/FaceExpressionNet.ts" @@ -989,7 +989,7 @@ ] }, "src/factories/WithFaceExpressions.ts": { - "bytes": 533, + "bytes": 524, "imports": [ { "path": "src/faceExpressionNet/FaceExpressions.ts" @@ -997,7 +997,7 @@ ] }, "src/draw/drawFaceExpressions.ts": { - "bytes": 1519, + "bytes": 1612, "imports": [ { "path": "src/classes/index.ts" @@ -1020,7 +1020,7 @@ ] }, "src/factories/WithFaceLandmarks.ts": { - "bytes": 1507, + "bytes": 1643, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -1034,7 +1034,7 @@ ] }, "src/draw/DrawFaceLandmarks.ts": { - "bytes": 3371, + "bytes": 3528, "imports": [ { "path": "src/classes/FaceLandmarks.ts" @@ -1054,7 +1054,7 @@ ] }, "src/draw/index.ts": { - "bytes": 194, + "bytes": 201, "imports": [ { "path": "src/draw/drawContour.ts" @@ -1076,8 +1076,12 @@ } ] }, + "package.json": { + "bytes": 1719, + "imports": [] + }, "src/xception/extractParams.ts": { - "bytes": 3412, + "bytes": 3440, "imports": [ { "path": "src/common/index.ts" @@ -1088,7 +1092,7 @@ ] }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytes": 3105, + "bytes": 3133, "imports": [ { "path": "src/common/index.ts" @@ -1102,7 +1106,7 @@ ] }, "src/xception/TinyXception.ts": { - "bytes": 3123, + "bytes": 3151, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1131,7 +1135,7 @@ ] }, "src/ageGenderNet/extractParams.ts": { - "bytes": 769, + "bytes": 778, "imports": [ { "path": "src/common/index.ts" @@ -1139,7 +1143,7 @@ ] }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytes": 906, + "bytes": 894, "imports": [ { "path": "src/common/index.ts" @@ -1147,11 +1151,11 @@ ] }, "src/ageGenderNet/types.ts": { - "bytes": 399, + "bytes": 528, "imports": [] }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytes": 4223, + "bytes": 4272, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1183,7 +1187,7 @@ ] }, "src/ageGenderNet/index.ts": { - "bytes": 56, + "bytes": 57, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1194,7 +1198,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytes": 3695, + "bytes": 3720, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1217,7 +1221,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytes": 619, + "bytes": 622, "imports": [ { "path": "src/faceFeatureExtractor/FaceFeatureExtractor.ts" @@ -1228,7 +1232,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytes": 797, + "bytes": 805, "imports": [ { "path": "src/common/index.ts" @@ -1239,7 +1243,7 @@ ] }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytes": 951, + "bytes": 960, "imports": [ { "path": "src/common/index.ts" @@ -1250,7 +1254,7 @@ ] }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytes": 1805, + "bytes": 1819, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1276,7 +1280,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytes": 656, + "bytes": 659, "imports": [ { "path": "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts" @@ -1287,7 +1291,7 @@ ] }, "src/faceLandmarkNet/index.ts": { - "bytes": 194, + "bytes": 195, "imports": [ { "path": "src/faceLandmarkNet/FaceLandmark68Net.ts" @@ -1301,7 +1305,7 @@ ] }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytes": 231, + "bytes": 232, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1309,7 +1313,7 @@ ] }, "src/faceRecognitionNet/convLayer.ts": { - "bytes": 844, + "bytes": 853, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1320,7 +1324,7 @@ ] }, "src/faceRecognitionNet/extractParams.ts": { - "bytes": 4855, + "bytes": 4910, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1334,7 +1338,7 @@ ] }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytes": 3121, + "bytes": 3104, "imports": [ { "path": "src/common/index.ts" @@ -1345,7 +1349,7 @@ ] }, "src/faceRecognitionNet/residualLayer.ts": { - "bytes": 1321, + "bytes": 1345, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1356,7 +1360,7 @@ ] }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytes": 2946, + "bytes": 2984, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1385,7 +1389,7 @@ ] }, "src/faceRecognitionNet/index.ts": { - "bytes": 248, + "bytes": 252, "imports": [ { "path": "src/faceRecognitionNet/FaceRecognitionNet.ts" @@ -1396,15 +1400,15 @@ ] }, "src/factories/WithFaceDescriptor.ts": { - "bytes": 310, + "bytes": 301, "imports": [] }, "src/factories/WithAge.ts": { - "bytes": 343, + "bytes": 334, "imports": [] }, "src/factories/WithGender.ts": { - "bytes": 633, + "bytes": 618, "imports": [ { "path": "src/ageGenderNet/types.ts" @@ -1415,7 +1419,7 @@ ] }, "src/factories/index.ts": { - "bytes": 201, + "bytes": 208, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1438,7 +1442,7 @@ ] }, "src/ssdMobilenetv1/extractParams.ts": { - "bytes": 8250, + "bytes": 8342, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1449,7 +1453,7 @@ ] }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytes": 5858, + "bytes": 5785, "imports": [ { "path": "src/common/index.ts" @@ -1460,7 +1464,7 @@ ] }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytes": 390, + "bytes": 394, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1468,7 +1472,7 @@ ] }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytes": 1794, + "bytes": 1814, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1479,11 +1483,11 @@ ] }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytes": 2193, + "bytes": 2190, "imports": [] }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytes": 2160, + "bytes": 2190, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1491,7 +1495,7 @@ ] }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytes": 612, + "bytes": 620, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1502,7 +1506,7 @@ ] }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytes": 2036, + "bytes": 2058, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1516,11 +1520,11 @@ ] }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytes": 872, + "bytes": 881, "imports": [] }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytes": 3784, + "bytes": 3829, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1561,7 +1565,7 @@ ] }, "src/ssdMobilenetv1/index.ts": { - "bytes": 466, + "bytes": 471, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1.ts" @@ -1575,7 +1579,7 @@ ] }, "src/tinyYolov2/const.ts": { - "bytes": 695, + "bytes": 704, "imports": [ { "path": "src/classes/index.ts" @@ -1583,11 +1587,11 @@ ] }, "src/tinyYolov2/config.ts": { - "bytes": 1696, + "bytes": 1701, "imports": [] }, "src/tinyYolov2/leaky.ts": { - "bytes": 269, + "bytes": 274, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1595,7 +1599,7 @@ ] }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytes": 528, + "bytes": 535, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1606,7 +1610,7 @@ ] }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytes": 500, + "bytes": 505, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1617,7 +1621,7 @@ ] }, "src/tinyYolov2/extractParams.ts": { - "bytes": 3862, + "bytes": 3921, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1634,7 +1638,7 @@ ] }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytes": 3265, + "bytes": 3287, "imports": [ { "path": "src/common/disposeUnusedWeightTensors.ts" @@ -1648,11 +1652,11 @@ ] }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytes": 987, + "bytes": 913, "imports": [] }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytes": 9605, + "bytes": 9703, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1705,7 +1709,7 @@ ] }, "src/tinyYolov2/TinyYolov2.ts": { - "bytes": 1792, + "bytes": 1804, "imports": [ { "path": "src/classes/index.ts" @@ -1719,11 +1723,11 @@ ] }, "src/tinyYolov2/types.ts": { - "bytes": 954, + "bytes": 955, "imports": [] }, "src/tinyYolov2/index.ts": { - "bytes": 342, + "bytes": 349, "imports": [ { "path": "src/tinyYolov2/TinyYolov2.ts" @@ -1740,7 +1744,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytes": 271, + "bytes": 272, "imports": [ { "path": "src/tinyYolov2/index.ts" @@ -1748,11 +1752,11 @@ ] }, "src/globalApi/ComposableTask.ts": { - "bytes": 273, + "bytes": 322, "imports": [] }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytes": 1848, + "bytes": 2040, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1766,7 +1770,7 @@ ] }, "src/tinyFaceDetector/const.ts": { - "bytes": 349, + "bytes": 354, "imports": [ { "path": "src/classes/index.ts" @@ -1774,7 +1778,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytes": 1463, + "bytes": 1473, "imports": [ { "path": "src/classes/index.ts" @@ -1788,7 +1792,7 @@ ] }, "src/globalApi/nets.ts": { - "bytes": 6529, + "bytes": 6336, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1817,7 +1821,7 @@ ] }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytes": 3635, + "bytes": 3830, "imports": [ { "path": "src/factories/WithFaceExpressions.ts" @@ -1840,7 +1844,7 @@ ] }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytes": 3815, + "bytes": 4011, "imports": [ { "path": "src/factories/WithAge.ts" @@ -1866,7 +1870,7 @@ ] }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytes": 3029, + "bytes": 3215, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1889,7 +1893,7 @@ ] }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytes": 3807, + "bytes": 4005, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1918,7 +1922,7 @@ ] }, "src/globalApi/DetectFacesTasks.ts": { - "bytes": 4073, + "bytes": 4604, "imports": [ { "path": "src/factories/WithFaceDetection.ts" @@ -1950,7 +1954,7 @@ ] }, "src/globalApi/detectFaces.ts": { - "bytes": 633, + "bytes": 638, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1Options.ts" @@ -1961,7 +1965,7 @@ ] }, "src/globalApi/allFaces.ts": { - "bytes": 1283, + "bytes": 1056, "imports": [ { "path": "src/ssdMobilenetv1/index.ts" @@ -1979,7 +1983,7 @@ "imports": [] }, "src/globalApi/FaceMatcher.ts": { - "bytes": 2973, + "bytes": 2992, "imports": [ { "path": "src/classes/FaceMatch.ts" @@ -1993,11 +1997,11 @@ ] }, "src/globalApi/types.ts": { - "bytes": 512, + "bytes": 556, "imports": [] }, "src/globalApi/index.ts": { - "bytes": 292, + "bytes": 300, "imports": [ { "path": "src/globalApi/allFaces.ts" @@ -2029,7 +2033,7 @@ ] }, "src/tinyFaceDetector/index.ts": { - "bytes": 281, + "bytes": 285, "imports": [ { "path": "src/tinyFaceDetector/TinyFaceDetector.ts" @@ -2062,12 +2066,8 @@ } ] }, - "package.json": { - "bytes": 1363, - "imports": [] - }, "src/index.ts": { - "bytes": 988, + "bytes": 1027, "imports": [ { "path": "dist/tfjs.esm.js" @@ -2078,6 +2078,9 @@ { "path": "src/utils/index.ts" }, + { + "path": "package.json" + }, { "path": "src/ageGenderNet/index.ts" }, @@ -2125,9 +2128,6 @@ }, { "path": "src/resizeResults.ts" - }, - { - "path": "package.json" } ] } @@ -2136,7 +2136,7 @@ "dist/face-api.node-gpu.js.map": { "imports": [], "inputs": {}, - "bytes": 392036 + "bytes": 303804 }, "dist/face-api.node-gpu.js": { "imports": [], @@ -2149,7 +2149,7 @@ "bytesInOutput": 229 }, "src/index.ts": { - "bytesInOutput": 4767 + "bytesInOutput": 4729 }, "src/draw/index.ts": { "bytesInOutput": 447 @@ -2158,13 +2158,13 @@ "bytesInOutput": 313 }, "src/utils/index.ts": { - "bytesInOutput": 1563 + "bytesInOutput": 1561 }, "src/classes/Dimensions.ts": { "bytesInOutput": 394 }, "src/classes/Point.ts": { - "bytesInOutput": 490 + "bytesInOutput": 472 }, "src/classes/Box.ts": { "bytesInOutput": 3300 @@ -2197,7 +2197,7 @@ "bytesInOutput": 341 }, "src/ops/padToSquare.ts": { - "bytesInOutput": 880 + "bytesInOutput": 888 }, "src/ops/shuffleArray.ts": { "bytesInOutput": 188 @@ -2206,7 +2206,7 @@ "bytesInOutput": 135 }, "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1899 + "bytesInOutput": 1884 }, "src/classes/FaceLandmarks5.ts": { "bytesInOutput": 153 @@ -2227,22 +2227,22 @@ "bytesInOutput": 508 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 205 + "bytesInOutput": 194 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 483 + "bytesInOutput": 478 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 398 + "bytesInOutput": 374 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 818 + "bytesInOutput": 714 }, "src/env/isBrowser.ts": { "bytesInOutput": 274 }, "src/env/index.ts": { - "bytesInOutput": 1154 + "bytesInOutput": 1146 }, "src/dom/resolveInput.ts": { "bytesInOutput": 104 @@ -2254,7 +2254,7 @@ "bytesInOutput": 2254 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 831 + "bytesInOutput": 821 }, "src/draw/drawDetections.ts": { "bytesInOutput": 424 @@ -2272,7 +2272,7 @@ "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 481 + "bytesInOutput": 482 }, "src/dom/getMediaDimensions.ts": { "bytesInOutput": 265 @@ -2302,7 +2302,7 @@ "bytesInOutput": 769 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 217 + "bytesInOutput": 212 }, "src/dom/fetchImage.ts": { "bytesInOutput": 269 @@ -2344,19 +2344,19 @@ "bytesInOutput": 175 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 467 + "bytesInOutput": 460 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 435 + "bytesInOutput": 428 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 960 + "bytesInOutput": 945 }, "src/common/types.ts": { "bytesInOutput": 173 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 373 + "bytesInOutput": 366 }, "src/common/extractWeightsFactory.ts": { "bytesInOutput": 311 @@ -2368,7 +2368,7 @@ "bytesInOutput": 570 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 195 + "bytesInOutput": 187 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { "bytesInOutput": 984 @@ -2398,19 +2398,22 @@ "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 217 + "bytesInOutput": 206 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 783 + "bytesInOutput": 803 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 603 + "bytesInOutput": 592 }, "src/draw/DrawFaceLandmarks.ts": { "bytesInOutput": 1763 }, + "package.json": { + "bytesInOutput": 19 + }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytesInOutput": 2558 + "bytesInOutput": 2554 }, "src/xception/TinyXception.ts": { "bytesInOutput": 1917 @@ -2467,7 +2470,7 @@ "bytesInOutput": 3416 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2100 + "bytesInOutput": 2099 }, "src/faceRecognitionNet/residualLayer.ts": { "bytesInOutput": 806 @@ -2476,16 +2479,16 @@ "bytesInOutput": 113 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 128 + "bytesInOutput": 117 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 159 + "bytesInOutput": 148 }, "src/factories/WithGender.ts": { - "bytesInOutput": 279 + "bytesInOutput": 268 }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { "bytesInOutput": 1928 @@ -2524,7 +2527,7 @@ "bytesInOutput": 485 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5910 + "bytesInOutput": 5928 }, "src/tinyYolov2/config.ts": { "bytesInOutput": 1186 @@ -2545,10 +2548,10 @@ "bytesInOutput": 2042 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 901 + "bytesInOutput": 588 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 833 + "bytesInOutput": 818 }, "src/tinyYolov2/index.ts": { "bytesInOutput": 139 @@ -2575,22 +2578,22 @@ "bytesInOutput": 1516 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1701 + "bytesInOutput": 1695 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1795 + "bytesInOutput": 1789 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { "bytesInOutput": 1417 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2219 + "bytesInOutput": 2221 }, "src/globalApi/detectFaces.ts": { "bytesInOutput": 224 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 620 + "bytesInOutput": 392 }, "src/globalApi/index.ts": { "bytesInOutput": 0 @@ -2606,12 +2609,9 @@ }, "src/resizeResults.ts": { "bytesInOutput": 824 - }, - "package.json": { - "bytesInOutput": 19 } }, - "bytes": 134184 + "bytes": 133321 } } } diff --git a/dist/face-api.node.js b/dist/face-api.node.js index b0a4552..54deaff 100644 --- a/dist/face-api.node.js +++ b/dist/face-api.node.js @@ -5,5 +5,5 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2),require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node")))}),require_isNodejs=__commonJS((exports2,module2)=>{__export(exports2,{isNodejs:()=>isNodejs3});function isNodejs3(){return typeof global=="object"&&!0&&typeof module2!="undefined"&&typeof process!="undefined"&&!!process.version}});__export(exports,{AgeGenderNet:()=>AgeGenderNet,BoundingBox:()=>BoundingBox,Box:()=>Box,ComposableTask:()=>ComposableTask,ComputeAllFaceDescriptorsTask:()=>ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase:()=>ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask:()=>ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask:()=>DetectAllFaceLandmarksTask,DetectAllFacesTask:()=>DetectAllFacesTask,DetectFaceLandmarksTaskBase:()=>DetectFaceLandmarksTaskBase,DetectFacesTaskBase:()=>DetectFacesTaskBase,DetectSingleFaceLandmarksTask:()=>DetectSingleFaceLandmarksTask,DetectSingleFaceTask:()=>DetectSingleFaceTask,Dimensions:()=>Dimensions,FACE_EXPRESSION_LABELS:()=>FACE_EXPRESSION_LABELS,FaceDetection:()=>FaceDetection,FaceDetectionNet:()=>FaceDetectionNet,FaceExpressionNet:()=>FaceExpressionNet,FaceExpressions:()=>FaceExpressions,FaceLandmark68Net:()=>FaceLandmark68Net,FaceLandmark68TinyNet:()=>FaceLandmark68TinyNet,FaceLandmarkNet:()=>FaceLandmarkNet,FaceLandmarks:()=>FaceLandmarks,FaceLandmarks5:()=>FaceLandmarks5,FaceLandmarks68:()=>FaceLandmarks68,FaceMatch:()=>FaceMatch,FaceMatcher:()=>FaceMatcher,FaceRecognitionNet:()=>FaceRecognitionNet,Gender:()=>Gender,LabeledBox:()=>LabeledBox,LabeledFaceDescriptors:()=>LabeledFaceDescriptors,NetInput:()=>NetInput,NeuralNetwork:()=>NeuralNetwork,ObjectDetection:()=>ObjectDetection,Point:()=>Point,PredictedBox:()=>PredictedBox,Rect:()=>Rect,SsdMobilenetv1:()=>SsdMobilenetv1,SsdMobilenetv1Options:()=>SsdMobilenetv1Options,TinyFaceDetector:()=>TinyFaceDetector,TinyFaceDetectorOptions:()=>TinyFaceDetectorOptions,TinyYolov2:()=>TinyYolov2,TinyYolov2Options:()=>TinyYolov2Options,TinyYolov2SizeType:()=>TinyYolov2SizeType,allFaces:()=>allFaces,allFacesSsdMobilenetv1:()=>allFacesSsdMobilenetv1,allFacesTinyYolov2:()=>allFacesTinyYolov2,awaitMediaLoaded:()=>awaitMediaLoaded,bufferToImage:()=>bufferToImage,computeFaceDescriptor:()=>computeFaceDescriptor,createCanvas:()=>createCanvas,createCanvasFromMedia:()=>createCanvasFromMedia,createFaceDetectionNet:()=>createFaceDetectionNet,createFaceRecognitionNet:()=>createFaceRecognitionNet,createSsdMobilenetv1:()=>createSsdMobilenetv1,createTinyFaceDetector:()=>createTinyFaceDetector,createTinyYolov2:()=>createTinyYolov2,detectAllFaces:()=>detectAllFaces,detectFaceLandmarks:()=>detectFaceLandmarks,detectFaceLandmarksTiny:()=>detectFaceLandmarksTiny,detectLandmarks:()=>detectLandmarks,detectSingleFace:()=>detectSingleFace,draw:()=>draw_exports,env:()=>env,euclideanDistance:()=>euclideanDistance,extendWithAge:()=>extendWithAge,extendWithFaceDescriptor:()=>extendWithFaceDescriptor,extendWithFaceDetection:()=>extendWithFaceDetection,extendWithFaceExpressions:()=>extendWithFaceExpressions,extendWithFaceLandmarks:()=>extendWithFaceLandmarks,extendWithGender:()=>extendWithGender,extractFaceTensors:()=>extractFaceTensors,extractFaces:()=>extractFaces,fetchImage:()=>fetchImage,fetchJson:()=>fetchJson,fetchNetWeights:()=>fetchNetWeights,fetchOrThrow:()=>fetchOrThrow,getContext2dOrThrow:()=>getContext2dOrThrow,getMediaDimensions:()=>getMediaDimensions,imageTensorToCanvas:()=>imageTensorToCanvas,imageToSquare:()=>imageToSquare,inverseSigmoid:()=>inverseSigmoid,iou:()=>iou,isMediaElement:()=>isMediaElement,isMediaLoaded:()=>isMediaLoaded,isWithAge:()=>isWithAge,isWithFaceDetection:()=>isWithFaceDetection,isWithFaceExpressions:()=>isWithFaceExpressions,isWithFaceLandmarks:()=>isWithFaceLandmarks,isWithGender:()=>isWithGender,loadAgeGenderModel:()=>loadAgeGenderModel,loadFaceDetectionModel:()=>loadFaceDetectionModel,loadFaceExpressionModel:()=>loadFaceExpressionModel,loadFaceLandmarkModel:()=>loadFaceLandmarkModel,loadFaceLandmarkTinyModel:()=>loadFaceLandmarkTinyModel,loadFaceRecognitionModel:()=>loadFaceRecognitionModel,loadSsdMobilenetv1Model:()=>loadSsdMobilenetv1Model,loadTinyFaceDetectorModel:()=>loadTinyFaceDetectorModel,loadTinyYolov2Model:()=>loadTinyYolov2Model,loadWeightMap:()=>loadWeightMap,locateFaces:()=>locateFaces,matchDimensions:()=>matchDimensions,minBbox:()=>minBbox,nets:()=>nets,nonMaxSuppression:()=>nonMaxSuppression,normalize:()=>normalize,padToSquare:()=>padToSquare,predictAgeAndGender:()=>predictAgeAndGender,recognizeFaceExpressions:()=>recognizeFaceExpressions,resizeResults:()=>resizeResults,resolveInput:()=>resolveInput,shuffleArray:()=>shuffleArray,sigmoid:()=>sigmoid,ssdMobilenetv1:()=>ssdMobilenetv1,tf:()=>tf42,tinyFaceDetector:()=>tinyFaceDetector,tinyYolov2:()=>tinyYolov23,toNetInput:()=>toNetInput,utils:()=>utils_exports,validateConfig:()=>validateConfig,version:()=>version2});var tf42=__toModule(require_tfjs_esm()),draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range,round:()=>round});var tf=__toModule(require_tfjs_esm()),Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof tf.Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!==0}function isEven(num){return num%2===0}function round(num,prec=2){let f=Math.pow(10,prec);return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale2=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale2),Math.round(height*scale2))}function getCenterPoint(pts){return pts.reduce((sum,pt)=>sum.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range(num,start,step){return Array(num).fill(0).map((_,i)=>start+i*step)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&0<=num&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min,x)=>xymaxmax({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}var tf2=__toModule(require_tfjs_esm());function normalize(x,meanRgb){return tf2.tidy(()=>{let[r,g,b]=meanRgb,avg_r=tf2.fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=tf2.fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=tf2.fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=tf2.concat([avg_r,avg_g,avg_b],3);return tf2.sub(x,avg_rgb)})}var tf3=__toModule(require_tfjs_esm());function padToSquare(imgTensor,isCenterImage=!1){return tf3.tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmount2=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmount2,tf3.fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>tf3.cast(t,"float32"));return tf3.concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array=inputArray.slice();for(let i=array.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array[i];array[i]=array[j],array[j]=x}return array}function sigmoid(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},options);return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json){let descriptors=json.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return Object.assign({},sourceObj,extension)}function createBrowserEnv(){let fetch=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")},readFile=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?function(filePath){return new Promise((res,rej)=>{fs.readFile(filePath,function(err,buffer){return err?rej(err):res(buffer)})})}:function(){throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=function(){if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=function(){if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch=global.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch,...fileSystem}}function isBrowser(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env16){environment=env16}function initialize(){if(isBrowser())return setEnv(createBrowserEnv());if(isNodejs.isNodejs())return setEnv(createNodejsEnv())}function monkeyPatch(env16){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env16;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env16.createCanvasElement||(()=>new Canvas),environment.createImageElement=env16.createImageElement||(()=>new Image),environment.ImageData=env16.ImageData||environment.ImageData,environment.Video=env16.Video||environment.Video,environment.fetch=env16.fetch||environment.fetch,environment.readFile=env16.readFile||environment.readFile}var env={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions(Object.assign({},defaultDrawLabelOptions,drawLabelOptions))}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}var tf18=__toModule(require_tfjs_esm());function isMediaLoaded(media){let{Image,Video}=env.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{if(!(buf instanceof Blob))return reject("bufferToImage - expected buf to be of type: Blob");let reader=new FileReader;reader.onload=()=>{if(typeof reader.result!="string")return reject("bufferToImage - expected reader.result to be a string, in onload");let img=env.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input){let{Image,Video}=env.getEnv();return input instanceof Image?new Dimensions(input.naturalWidth,input.naturalHeight):input instanceof Video?new Dimensions(input.videoWidth,input.videoHeight):new Dimensions(input.width,input.height)}function createCanvas({width,height}){let{createCanvasElement}=env.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}var tf4=__toModule(require_tfjs_esm());async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tf4.tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await tf4.browser.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input){let{Image,Canvas,Video}=env.getEnv();return input instanceof Image||input instanceof Canvas||input instanceof Video}var tf5=__toModule(require_tfjs_esm());function imageToSquare(input,inputSize,centerImage=!1){let{Image,Canvas}=env.getEnv();if(!(input instanceof Image||input instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input),scale2=inputSize/Math.max(dims.height,dims.width),width=scale2*dims.width,height=scale2*dims.height,targetCanvas=createCanvas({width:inputSize,height:inputSize}),inputCanvas=input instanceof Canvas?input:createCanvasFromMedia(input),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input)){this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape;return}if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape.slice(1);return}let canvas=input instanceof env.getEnv().Canvas?input:createCanvasFromMedia(input);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tf5.tidy(()=>{let inputTensors=range(this.batchSize,0,1).map(batchIdx=>{let input=this.getInput(batchIdx);if(input instanceof tf5.Tensor){let imgTensor=isTensor4D(input)?input:input.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=tf5.image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input instanceof env.getEnv().Canvas)return tf5.browser.fromPixels(imageToSquare(input,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)}),batchTensor=tf5.stack(inputTensors.map(t=>tf5.cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input,i)=>{if(!isMediaElement(input)&&!isTensor3D(input)&&!isTensor4D(input))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input=>isMediaElement(input)&&awaitMediaLoaded(input))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input,detections){let{Canvas}=env.getEnv(),canvas=input;if(!(input instanceof Canvas)){let netInput=await toNetInput(input);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}var tf6=__toModule(require_tfjs_esm());async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tf6.tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>tf6.slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init){let fetch=env.getEnv().fetch,res=await fetch(url,init);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}var tf7=__toModule(require_tfjs_esm());function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return tf7.io.loadWeights(manifest,modelBaseUri)}function matchDimensions(input,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input.width=width,input.height=height,{width,height}}var tf15=__toModule(require_tfjs_esm()),tf8=__toModule(require_tfjs_esm()),NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof tf8.Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof tf8.Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable})=>{let tensor2=tf8.tensor(variable.dataSync());variable.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights=tf8.io.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof tf8.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}},tf10=__toModule(require_tfjs_esm()),tf9=__toModule(require_tfjs_esm());function depthwiseSeparableConv(x,params,stride){return tf9.tidy(()=>{let out=tf9.separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=tf9.add(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=tf10.relu(tf10.add(out1,tf10.add(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,tf10.add(out3,out4))))})}var tf11=__toModule(require_tfjs_esm());function convLayer(x,params,padding="same",withRelu=!1){return tf11.tidy(()=>{let out=tf11.add(tf11.conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?tf11.relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}var tf12=__toModule(require_tfjs_esm());function extractConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,filterSize,mappedPrefix){let filters=tf12.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf12.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}var tf13=__toModule(require_tfjs_esm());function extractFCParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let fc_weights=tf13.tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tf13.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var tf14=__toModule(require_tfjs_esm()),SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return function(channelsIn,channelsOut,mappedPrefix){let depthwise_filter=tf14.tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tf14.tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tf14.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return function(prefix){let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return function(originalPath,paramRank,mappedPath){let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return function(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tf15.tidy(()=>{let batchTensor=tf15.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf15.scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=tf15.avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}},tf17=__toModule(require_tfjs_esm()),tf16=__toModule(require_tfjs_esm());function fullyConnectedLayer(x,params){return tf16.tidy(()=>tf16.add(tf16.matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf17.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input){return tf18.tidy(()=>tf18.softmax(this.runNet(input)))}async forward(input){return this.forwardInput(await toNetInput(input))}async predictExpressions(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(tf18.unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return Object.assign({},sourceObj,extension)}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(expr2=>expr2.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(expr2=>`${expr2.expression} (${round(expr2.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return Object.assign({},sourceObj,extension)}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var tf20=__toModule(require_tfjs_esm()),tf19=__toModule(require_tfjs_esm());function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return tf19.add(tf19.conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?tf19.relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=tf19.maxPool(out,[3,3],[2,2],"same"),out=tf19.add(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(tf19.relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv2,[1,1]),out=tf19.add(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tf19.tidy(()=>{let batchTensor=tf19.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf19.scalar(256)),out=tf19.relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=tf19.relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf20.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input,pooled=tf20.avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input){return tf20.tidy(()=>{let{age,gender}=this.runNet(input);return{age,gender:tf20.softmax(gender)}})}async forward(input){return this.forwardInput(await toNetInput(input))}async predictAgeAndGender(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),ages=tf20.unstack(out.age),genders=tf20.unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var tf21=__toModule(require_tfjs_esm()),FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale2=inputSize/Math.max(height,width);return{width:width*scale2,height:height*scale2}}),batchSize=inputDimensions.length;return tf21.tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>tf21.stack([tf21.fill([68],fillX,"float32"),tf21.fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding(batchIdx,(w,h)=>wgetPadding(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(tf21.stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input){return tf21.tidy(()=>{let out=this.runNet(input);return this.postProcess(out,input.inputSize,input.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input){return this.forwardInput(await toNetInput(input))}async detectLandmarks(input){let netInput=await toNetInput(input),landmarkTensors=tf21.tidy(()=>tf21.unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven(i)),yCoords=landmarksArray.filter((_,i)=>!isEven(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var tf22=__toModule(require_tfjs_esm());function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tf22.tidy(()=>{let batchTensor=tf22.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf22.scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=tf22.avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};var tf27=__toModule(require_tfjs_esm()),tf24=__toModule(require_tfjs_esm()),tf23=__toModule(require_tfjs_esm());function scale(x,params){return tf23.add(tf23.mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=tf24.conv2d(x,filters,strides,padding);return out=tf24.add(out,bias),out=scale(out,params.scale),withRelu?tf24.relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}var tf25=__toModule(require_tfjs_esm());function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tf25.tidy(()=>tf25.transpose(tf25.tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tf25.tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tf25.tensor1d(extractWeights(numWeights)),biases=tf25.tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale2=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale2}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tf25.tidy(()=>tf25.transpose(tf25.tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale2=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale2}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),fc=weightMap.fc;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf26=__toModule(require_tfjs_esm());function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=tf26.add(out,x),out=tf26.relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=tf26.avgPool(x,2,2,"valid"),zeros2=tf26.zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=tf26.zeros(padShapeX);out=tf26.concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=tf26.zeros(padShapeY);out=tf26.concat([out,zerosH],2)}return pooled=isPad?tf26.concat([pooled,zeros2],3):pooled,out=tf26.add(pooled,out),out=tf26.relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tf27.tidy(()=>{let batchTensor=tf27.cast(input.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf27.scalar(256)),out=convDown(normalized,params.conv32_down);out=tf27.maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=tf27.matMul(globalAvg,params.fc);return fullyConnected})}async forward(input){return this.forwardInput(await toNetInput(input))}async computeFaceDescriptor(input){let netInput=await toNetInput(input),faceDescriptorTensors=tf27.tidy(()=>tf27.unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return Object.assign({},sourceObj,extension)}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return Object.assign({},sourceObj,extension)}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return Object.assign({},sourceObj,extension)}var tf34=__toModule(require_tfjs_esm()),tf28=__toModule(require_tfjs_esm());function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tf28.tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tf28.tensor1d(extractWeights(numChannels)),batch_norm_offset=tf28.tensor1d(extractWeights(numChannels)),batch_norm_mean=tf28.tensor1d(extractWeights(numChannels)),batch_norm_variance=tf28.tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tf28.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf28.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tf28.tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf30=__toModule(require_tfjs_esm()),tf29=__toModule(require_tfjs_esm());function pointwiseConvLayer(x,params,strides){return tf29.tidy(()=>{let out=tf29.conv2d(x,params.filters,strides,"same");return out=tf29.add(out,params.batch_norm_offset),tf29.clipByValue(out,0,6)})}var epsilon=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tf30.tidy(()=>{let out=tf30.depthwiseConv2d(x,params.filters,strides,"same");return out=tf30.batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon),tf30.clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tf30.tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function nonMaxSuppression2(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}var tf31=__toModule(require_tfjs_esm());function getCenterCoordinatesAndSizesLayer(x){let vec=tf31.unstack(tf31.transpose(x,[1,0])),sizes=[tf31.sub(vec[2],vec[0]),tf31.sub(vec[3],vec[1])],centers=[tf31.add(vec[0],tf31.div(sizes[0],tf31.scalar(2))),tf31.add(vec[1],tf31.div(sizes[1],tf31.scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=tf31.unstack(tf31.transpose(x1,[1,0])),div0_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[2],tf31.scalar(5))),sizes[0]),tf31.scalar(2)),add0_out=tf31.add(tf31.mul(tf31.div(vec[0],tf31.scalar(10)),sizes[0]),centers[0]),div1_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[3],tf31.scalar(5))),sizes[1]),tf31.scalar(2)),add1_out=tf31.add(tf31.mul(tf31.div(vec[1],tf31.scalar(10)),sizes[1]),centers[1]);return tf31.transpose(tf31.stack([tf31.sub(add0_out,div0_out),tf31.sub(add1_out,div1_out),tf31.add(add0_out,div0_out),tf31.add(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tf31.tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(tf31.reshape(tf31.tile(params.extra_dim,[batchSize,1,1]),[-1,4]),tf31.reshape(boxPredictions,[-1,4]));boxes=tf31.reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=tf31.sigmoid(tf31.slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=tf31.slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=tf31.reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=tf31.unstack(boxes),scoresByBatch=tf31.unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}var tf33=__toModule(require_tfjs_esm()),tf32=__toModule(require_tfjs_esm());function boxPredictionLayer(x,params){return tf32.tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=tf32.reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=tf32.reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tf33.tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=tf33.concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=tf33.concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tf34.tidy(()=>{let batchTensor=tf34.cast(input.toBatchTensor(512,!1),"float32"),x=tf34.sub(tf34.mul(batchTensor,tf34.scalar(.007843137718737125)),tf34.scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input){return this.forwardInput(await toNetInput(input))}async locateFaces(input,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression2(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",tf39=__toModule(require_tfjs_esm()),isNumber=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber(a.x)&&isNumber(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}var tf36=__toModule(require_tfjs_esm()),tf35=__toModule(require_tfjs_esm());function leaky(x){return tf35.tidy(()=>{let min=tf35.mul(x,tf35.scalar(.10000000149011612));return tf35.add(tf35.relu(tf35.sub(x,min)),min)})}function convWithBatchNorm(x,params){return tf36.tidy(()=>{let out=tf36.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf36.conv2d(out,params.conv.filters,[1,1],"valid"),out=tf36.sub(out,params.bn.sub),out=tf36.mul(out,params.bn.truediv),out=tf36.add(out,params.conv.bias),leaky(out)})}var tf37=__toModule(require_tfjs_esm());function depthwiseSeparableConv3(x,params){return tf37.tidy(()=>{let out=tf37.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf37.separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=tf37.add(out,params.bias),leaky(out)})}var tf38=__toModule(require_tfjs_esm());function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub6=tf38.tensor1d(extractWeights(size)),truediv=tf38.tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub6,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub6=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub6,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2SizeType;(function(TinyYolov2SizeType2){TinyYolov2SizeType2[TinyYolov2SizeType2.XS=224]="XS",TinyYolov2SizeType2[TinyYolov2SizeType2.SM=320]="SM",TinyYolov2SizeType2[TinyYolov2SizeType2.MD=416]="MD",TinyYolov2SizeType2[TinyYolov2SizeType2.LG=608]="LG"})(TinyYolov2SizeType||(TinyYolov2SizeType={}));var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tf39.tidy(()=>{let batchTensor=tf39.cast(input.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(tf39.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input,inputSize){return await this.forwardInput(await toNetInput(input),inputSize)}async detect(input,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input),out=await this.forwardInput(netInput,inputSize),out0=tf39.tidy(()=>tf39.unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tf39.tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?tf39.softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):tf39.scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,width2=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,height2=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-width2/2,y=ctY-height2/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+width2,y+height2),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max,curr)=>max.classScore>curr.classScore?max:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2=Object.assign({},{withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"]},withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0});super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}},tf41=__toModule(require_tfjs_esm()),tf40=__toModule(require_tfjs_esm());async function extractAllFacesAndComputeResults(parentResults,input,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input instanceof tf40.Tensor?await extractFaceTensors(input,faceBoxes):await extractFaces(input,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof tf40.Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input,options)=>nets.ssdMobilenetv1.locateFaces(input,options),tinyFaceDetector=(input,options)=>nets.tinyFaceDetector.locateFaces(input,options),tinyYolov23=(input,options)=>nets.tinyYolov2.locateFaces(input,options),detectFaceLandmarks=input=>nets.faceLandmark68Net.detectLandmarks(input),detectFaceLandmarksTiny=input=>nets.faceLandmark68TinyNet.detectLandmarks(input),computeFaceDescriptor=input=>nets.faceRecognitionNet.computeFaceDescriptor(input),recognizeFaceExpressions=input=>nets.faceExpressionNet.predictExpressions(input),predictAgeAndGender=input=>nets.ageGenderNet.predictAgeAndGender(input),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>await Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input){super();this.parentTask=parentTask;this.input=input}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input,options=new SsdMobilenetv1Options){super();this.input=input;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input2=>nets.tinyFaceDetector.locateFaces(input2,options):options instanceof SsdMobilenetv1Options?input2=>nets.ssdMobilenetv1.locateFaces(input2,options):options instanceof TinyYolov2Options?input2=>nets.tinyYolov2.locateFaces(input2,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input)}runAndExtendWithFaceDetections(){return new Promise(async res=>{let detections=await this.run();return res(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async res=>{let detection=await this.run();return res(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input,options)}function detectAllFaces(input,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input,options)}async function allFacesSsdMobilenetv1(input,minConfidence){return console.warn("allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input,forwardParams={}){return console.warn("allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead"),await detectAllFaces(input,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count=1,createUniqueLabel=()=>`person ${count++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json){let labeledDescriptors=json.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var version="0.9.5",node=typeof process!="undefined",browser3=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version2={faceapi:version,node,browser:browser3}; +var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2),require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node")))}),require_isNodejs=__commonJS((exports2,module2)=>{__export(exports2,{isNodejs:()=>isNodejs3});function isNodejs3(){return typeof global=="object"&&!0&&typeof module2!="undefined"&&typeof process!="undefined"&&!!process.version}});__export(exports,{AgeGenderNet:()=>AgeGenderNet,BoundingBox:()=>BoundingBox,Box:()=>Box,ComposableTask:()=>ComposableTask,ComputeAllFaceDescriptorsTask:()=>ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase:()=>ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask:()=>ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask:()=>DetectAllFaceLandmarksTask,DetectAllFacesTask:()=>DetectAllFacesTask,DetectFaceLandmarksTaskBase:()=>DetectFaceLandmarksTaskBase,DetectFacesTaskBase:()=>DetectFacesTaskBase,DetectSingleFaceLandmarksTask:()=>DetectSingleFaceLandmarksTask,DetectSingleFaceTask:()=>DetectSingleFaceTask,Dimensions:()=>Dimensions,FACE_EXPRESSION_LABELS:()=>FACE_EXPRESSION_LABELS,FaceDetection:()=>FaceDetection,FaceDetectionNet:()=>FaceDetectionNet,FaceExpressionNet:()=>FaceExpressionNet,FaceExpressions:()=>FaceExpressions,FaceLandmark68Net:()=>FaceLandmark68Net,FaceLandmark68TinyNet:()=>FaceLandmark68TinyNet,FaceLandmarkNet:()=>FaceLandmarkNet,FaceLandmarks:()=>FaceLandmarks,FaceLandmarks5:()=>FaceLandmarks5,FaceLandmarks68:()=>FaceLandmarks68,FaceMatch:()=>FaceMatch,FaceMatcher:()=>FaceMatcher,FaceRecognitionNet:()=>FaceRecognitionNet,Gender:()=>Gender,LabeledBox:()=>LabeledBox,LabeledFaceDescriptors:()=>LabeledFaceDescriptors,NetInput:()=>NetInput,NeuralNetwork:()=>NeuralNetwork,ObjectDetection:()=>ObjectDetection,Point:()=>Point,PredictedBox:()=>PredictedBox,Rect:()=>Rect,SsdMobilenetv1:()=>SsdMobilenetv1,SsdMobilenetv1Options:()=>SsdMobilenetv1Options,TinyFaceDetector:()=>TinyFaceDetector,TinyFaceDetectorOptions:()=>TinyFaceDetectorOptions,TinyYolov2:()=>TinyYolov2,TinyYolov2Options:()=>TinyYolov2Options,allFaces:()=>allFaces,allFacesSsdMobilenetv1:()=>allFacesSsdMobilenetv1,allFacesTinyYolov2:()=>allFacesTinyYolov2,awaitMediaLoaded:()=>awaitMediaLoaded,bufferToImage:()=>bufferToImage,computeFaceDescriptor:()=>computeFaceDescriptor,createCanvas:()=>createCanvas,createCanvasFromMedia:()=>createCanvasFromMedia,createFaceDetectionNet:()=>createFaceDetectionNet,createFaceRecognitionNet:()=>createFaceRecognitionNet,createSsdMobilenetv1:()=>createSsdMobilenetv1,createTinyFaceDetector:()=>createTinyFaceDetector,createTinyYolov2:()=>createTinyYolov2,detectAllFaces:()=>detectAllFaces,detectFaceLandmarks:()=>detectFaceLandmarks,detectFaceLandmarksTiny:()=>detectFaceLandmarksTiny,detectLandmarks:()=>detectLandmarks,detectSingleFace:()=>detectSingleFace,draw:()=>draw_exports,env:()=>env,euclideanDistance:()=>euclideanDistance,extendWithAge:()=>extendWithAge,extendWithFaceDescriptor:()=>extendWithFaceDescriptor,extendWithFaceDetection:()=>extendWithFaceDetection,extendWithFaceExpressions:()=>extendWithFaceExpressions,extendWithFaceLandmarks:()=>extendWithFaceLandmarks,extendWithGender:()=>extendWithGender,extractFaceTensors:()=>extractFaceTensors,extractFaces:()=>extractFaces,fetchImage:()=>fetchImage,fetchJson:()=>fetchJson,fetchNetWeights:()=>fetchNetWeights,fetchOrThrow:()=>fetchOrThrow,getContext2dOrThrow:()=>getContext2dOrThrow,getMediaDimensions:()=>getMediaDimensions,imageTensorToCanvas:()=>imageTensorToCanvas,imageToSquare:()=>imageToSquare,inverseSigmoid:()=>inverseSigmoid,iou:()=>iou,isMediaElement:()=>isMediaElement,isMediaLoaded:()=>isMediaLoaded,isWithAge:()=>isWithAge,isWithFaceDetection:()=>isWithFaceDetection,isWithFaceExpressions:()=>isWithFaceExpressions,isWithFaceLandmarks:()=>isWithFaceLandmarks,isWithGender:()=>isWithGender,loadAgeGenderModel:()=>loadAgeGenderModel,loadFaceDetectionModel:()=>loadFaceDetectionModel,loadFaceExpressionModel:()=>loadFaceExpressionModel,loadFaceLandmarkModel:()=>loadFaceLandmarkModel,loadFaceLandmarkTinyModel:()=>loadFaceLandmarkTinyModel,loadFaceRecognitionModel:()=>loadFaceRecognitionModel,loadSsdMobilenetv1Model:()=>loadSsdMobilenetv1Model,loadTinyFaceDetectorModel:()=>loadTinyFaceDetectorModel,loadTinyYolov2Model:()=>loadTinyYolov2Model,loadWeightMap:()=>loadWeightMap,locateFaces:()=>locateFaces,matchDimensions:()=>matchDimensions,minBbox:()=>minBbox,nets:()=>nets,nonMaxSuppression:()=>nonMaxSuppression,normalize:()=>normalize,padToSquare:()=>padToSquare,predictAgeAndGender:()=>predictAgeAndGender,recognizeFaceExpressions:()=>recognizeFaceExpressions,resizeResults:()=>resizeResults,resolveInput:()=>resolveInput,shuffleArray:()=>shuffleArray,sigmoid:()=>sigmoid,ssdMobilenetv1:()=>ssdMobilenetv1,tf:()=>tf42,tinyFaceDetector:()=>tinyFaceDetector,tinyYolov2:()=>tinyYolov23,toNetInput:()=>toNetInput,utils:()=>utils_exports,validateConfig:()=>validateConfig,version:()=>version2});var tf42=__toModule(require_tfjs_esm()),draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range,round:()=>round});var tf=__toModule(require_tfjs_esm()),Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof tf.Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!==0}function isEven(num){return num%2===0}function round(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale2=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale2),Math.round(height*scale2))}function getCenterPoint(pts){return pts.reduce((sum,pt)=>sum.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range(num,start,step){return Array(num).fill(0).map((_,i)=>start+i*step)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}},Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}},BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}},FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min,x)=>xymaxmax({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}var tf2=__toModule(require_tfjs_esm());function normalize(x,meanRgb){return tf2.tidy(()=>{let[r,g,b]=meanRgb,avg_r=tf2.fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=tf2.fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=tf2.fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=tf2.concat([avg_r,avg_g,avg_b],3);return tf2.sub(x,avg_rgb)})}var tf3=__toModule(require_tfjs_esm());function padToSquare(imgTensor,isCenterImage=!1){return tf3.tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,tf3.fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],paddingTensorPrepend=isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,tensorsToStack=[paddingTensorPrepend,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>tf3.cast(t,"float32"));return tf3.concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array=inputArray.slice();for(let i=array.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array[i];array[i]=array[j],array[j]=x}return array}function sigmoid(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}},relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(!(typeof label=="string"))throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json){let descriptors=json.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){let extension={detection};return{...sourceObj,...extension}}function createBrowserEnv(){let fetch=window.fetch;if(!fetch)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}let readFile=fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer)=>err?reject(err):resolve(buffer))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)};return{readFile}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch,...fileSystem}}function isBrowser(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env16){environment=env16}function initialize(){return isBrowser()?setEnv(createBrowserEnv()):isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env16){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env16;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env16.createCanvasElement||(()=>new Canvas),environment.createImageElement=env16.createImageElement||(()=>new Image),environment.ImageData=env16.ImageData||environment.ImageData,environment.Video=env16.Video||environment.Video,environment.fetch=env16.fetch||environment.fetch,environment.readFile=env16.readFile||environment.readFile}var env={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser,isNodejs:isNodejs.isNodejs};initialize();function resolveInput(arg){return!env.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}},DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){let detectionsArray=Array.isArray(detections)?detections:[detections];detectionsArray.forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}var tf18=__toModule(require_tfjs_esm());function isMediaLoaded(media){let{Image,Video}=env.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e)}function onLoad(e){if(!e.currentTarget)return;e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e)}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input){let{Image,Video}=env.getEnv();return input instanceof Image?new Dimensions(input.naturalWidth,input.naturalHeight):input instanceof Video?new Dimensions(input.videoWidth,input.videoHeight):new Dimensions(input.width,input.height)}function createCanvas({width,height}){let{createCanvasElement}=env.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}var tf4=__toModule(require_tfjs_esm());async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tf4.tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await tf4.browser.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input){let{Image,Canvas,Video}=env.getEnv();return input instanceof Image||input instanceof Canvas||input instanceof Video}var tf5=__toModule(require_tfjs_esm());function imageToSquare(input,inputSize,centerImage=!1){let{Image,Canvas}=env.getEnv();if(!(input instanceof Image||input instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input),scale2=inputSize/Math.max(dims.height,dims.width),width=scale2*dims.width,height=scale2*dims.height,targetCanvas=createCanvas({width:inputSize,height:inputSize}),inputCanvas=input instanceof Canvas?input:createCanvasFromMedia(input),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input)){this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape;return}if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape.slice(1);return}let canvas=input instanceof env.getEnv().Canvas?input:createCanvasFromMedia(input);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tf5.tidy(()=>{let inputTensors=range(this.batchSize,0,1).map(batchIdx=>{let input=this.getInput(batchIdx);if(input instanceof tf5.Tensor){let imgTensor=isTensor4D(input)?input:input.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=tf5.image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input instanceof env.getEnv().Canvas)return tf5.browser.fromPixels(imageToSquare(input,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)}),batchTensor=tf5.stack(inputTensors.map(t=>tf5.cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3);return batchTensor})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input,i)=>{if(!isMediaElement(input)&&!isTensor3D(input)&&!isTensor4D(input))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input=>isMediaElement(input)&&awaitMediaLoaded(input))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input,detections){let{Canvas}=env.getEnv(),canvas=input;if(!(input instanceof Canvas)){let netInput=await toNetInput(input);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height));return boxes.map(({x,y,width,height})=>{let faceImg=createCanvas({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}var tf6=__toModule(require_tfjs_esm());async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tf6.tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0),boxes=detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)),faceTensors=boxes.map(({x,y,width,height})=>tf6.slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]));return faceTensors})}async function fetchOrThrow(url,init){let{fetch}=env.getEnv(),res=await fetch(url,init);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}var tf7=__toModule(require_tfjs_esm());function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return tf7.io.loadWeights(manifest,modelBaseUri)}function matchDimensions(input,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input.width=width,input.height=height,{width,height}}var tf15=__toModule(require_tfjs_esm()),tf8=__toModule(require_tfjs_esm()),NeuralNetwork=class{constructor(_name){this._name=_name;this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof tf8.Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof tf8.Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable})=>{let tensor2=tf8.tensor(variable.dataSync());variable.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(filePath2=>readFile(filePath2).then(buf=>buf.buffer))),loadWeights=tf8.io.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof tf8.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}},tf10=__toModule(require_tfjs_esm()),tf9=__toModule(require_tfjs_esm());function depthwiseSeparableConv(x,params,stride){return tf9.tidy(()=>{let out=tf9.separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=tf9.add(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=tf10.relu(tf10.add(out1,tf10.add(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,tf10.add(out3,out4))))})}var tf11=__toModule(require_tfjs_esm());function convLayer(x,params,padding="same",withRelu=!1){return tf11.tidy(()=>{let out=tf11.add(tf11.conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?tf11.relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}var tf12=__toModule(require_tfjs_esm());function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tf12.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf12.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}var tf13=__toModule(require_tfjs_esm());function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tf13.tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tf13.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var tf14=__toModule(require_tfjs_esm()),SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tf14.tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tf14.tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tf14.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tf15.tidy(()=>{let batchTensor=tf15.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf15.scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=tf15.avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}},tf17=__toModule(require_tfjs_esm()),tf16=__toModule(require_tfjs_esm());function fullyConnectedLayer(x,params){return tf16.tidy(()=>tf16.add(tf16.matMul(x,params.weights),params.bias))}function extractParams3(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),fc=extractFCParams(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap3(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf17.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams3(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap3(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}},FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}},FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input){return tf18.tidy(()=>tf18.softmax(this.runNet(input)))}async forward(input){return this.forwardInput(await toNetInput(input))}async predictExpressions(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(tf18.unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){let extension={expressions};return{...sourceObj,...extension}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){let faceExpressionsArray=Array.isArray(faceExpressions)?faceExpressions:[faceExpressions];faceExpressionsArray.forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let sorted=expr.asSortedArray(),resultsToDisplay=sorted.filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0),drawTextField=new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round(exprLocal.probability)})`),anchor);drawTextField.draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims),extension={landmarks,unshiftedLandmarks,alignedRect};return{...sourceObj,...extension}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){let faceLandmarksArray=Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks];faceLandmarksArray.forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version="0.9.5",tf20=__toModule(require_tfjs_esm()),tf19=__toModule(require_tfjs_esm());function extractorsFactory3(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams5(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory3(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory3(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap5(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory3(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return tf19.add(tf19.conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?tf19.relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=tf19.maxPool(out,[3,3],[2,2],"same"),out=tf19.add(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(tf19.relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv2,[1,1]),out=tf19.add(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tf19.tidy(()=>{let batchTensor=tf19.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf19.scalar(256)),out=tf19.relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=tf19.relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams5(weights,this._numMainBlocks)}};function extractParams7(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap7(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf20.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input,pooled=tf20.avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input){return tf20.tidy(()=>{let{age,gender}=this.runNet(input);return{age,gender:tf20.softmax(gender)}})}async forward(input){return this.forwardInput(await toNetInput(input))}async predictAgeAndGender(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),ages=tf20.unstack(out.age),genders=tf20.unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams7(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap7(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var tf21=__toModule(require_tfjs_esm()),FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale2=inputSize/Math.max(height,width);return{width:width*scale2,height:height*scale2}}),batchSize=inputDimensions.length;return tf21.tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>tf21.stack([tf21.fill([68],fillX,"float32"),tf21.fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding(batchIdx,(w,h)=>wgetPadding(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(tf21.stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))));return landmarkTensors})}forwardInput(input){return tf21.tidy(()=>{let out=this.runNet(input);return this.postProcess(out,input.inputSize,input.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input){return this.forwardInput(await toNetInput(input))}async detectLandmarks(input){let netInput=await toNetInput(input),landmarkTensors=tf21.tidy(()=>tf21.unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven(i)),yCoords=landmarksArray.filter((_,i)=>!isEven(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}},FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var tf22=__toModule(require_tfjs_esm());function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tf22.tidy(()=>{let batchTensor=tf22.cast(input.toBatchTensor(112,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf22.scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=tf22.avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}},FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}},FaceLandmarkNet=class extends FaceLandmark68Net{};var tf27=__toModule(require_tfjs_esm()),tf24=__toModule(require_tfjs_esm()),tf23=__toModule(require_tfjs_esm());function scale(x,params){return tf23.add(tf23.mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=tf24.conv2d(x,filters,strides,padding);return out=tf24.add(out,bias),out=scale(out,params.scale),withRelu?tf24.relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}var tf25=__toModule(require_tfjs_esm());function extractorsFactory5(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tf25.tidy(()=>tf25.transpose(tf25.tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tf25.tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tf25.tensor1d(extractWeights(numWeights)),biases=tf25.tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale2=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale2}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams9(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory5(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tf25.tidy(()=>tf25.transpose(tf25.tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return{params,paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale2=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale2}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap9(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory6(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf26=__toModule(require_tfjs_esm());function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=tf26.add(out,x),out=tf26.relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=tf26.avgPool(x,2,2,"valid"),zeros2=tf26.zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3],isAdjustShape=pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2];if(isAdjustShape){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=tf26.zeros(padShapeX);out=tf26.concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=tf26.zeros(padShapeY);out=tf26.concat([out,zerosH],2)}return pooled=isPad?tf26.concat([pooled,zeros2],3):pooled,out=tf26.add(pooled,out),out=tf26.relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tf27.tidy(()=>{let batchTensor=tf27.cast(input.toBatchTensor(150,!0),"float32"),meanRgb=[122.782,117.001,104.298],normalized=normalize(batchTensor,meanRgb).div(tf27.scalar(256)),out=convDown(normalized,params.conv32_down);out=tf27.maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]),fullyConnected=tf27.matMul(globalAvg,params.fc);return fullyConnected})}async forward(input){return this.forwardInput(await toNetInput(input))}async computeFaceDescriptor(input){let netInput=await toNetInput(input),faceDescriptorTensors=tf27.tidy(()=>tf27.unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap9(weightMap)}extractParams(weights){return extractParams9(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){let extension={descriptor};return{...sourceObj,...extension}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){let extension={age};return{...sourceObj,...extension}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){let extension={gender,genderProbability};return{...sourceObj,...extension}}var tf34=__toModule(require_tfjs_esm()),tf28=__toModule(require_tfjs_esm());function extractorsFactory7(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tf28.tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tf28.tensor1d(extractWeights(numChannels)),batch_norm_offset=tf28.tensor1d(extractWeights(numChannels)),batch_norm_mean=tf28.tensor1d(extractWeights(numChannels)),batch_norm_variance=tf28.tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tf28.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf28.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),box_predictor_0={box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1={box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2={box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3={box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4={box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5={box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5};return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0,box_predictor_1,box_predictor_2,box_predictor_3,box_predictor_4,box_predictor_5}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams11(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory7(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),extra_dim=tf28.tensor3d(extractWeights(5118*4),[1,5118,4]),output_layer={extra_dim};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap11(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory8(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf30=__toModule(require_tfjs_esm()),tf29=__toModule(require_tfjs_esm());function pointwiseConvLayer(x,params,strides){return tf29.tidy(()=>{let out=tf29.conv2d(x,params.filters,strides,"same");return out=tf29.add(out,params.batch_norm_offset),tf29.clipByValue(out,0,6)})}var epsilon=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tf30.tidy(()=>{let out=tf30.depthwiseConv2d(x,params.filters,strides,"same");return out=tf30.batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon),tf30.clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tf30.tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]),convPairParams=[params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13];if(convPairParams.forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression2(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou3=IOU(boxes,c.boxIndex,selected[j]);if(iou3===0)continue;if(c.score*=suppressFunc(iou3),c.score<=scoreThreshold)break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}var tf31=__toModule(require_tfjs_esm());function getCenterCoordinatesAndSizesLayer(x){let vec=tf31.unstack(tf31.transpose(x,[1,0])),sizes=[tf31.sub(vec[2],vec[0]),tf31.sub(vec[3],vec[1])],centers=[tf31.add(vec[0],tf31.div(sizes[0],tf31.scalar(2))),tf31.add(vec[1],tf31.div(sizes[1],tf31.scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=tf31.unstack(tf31.transpose(x1,[1,0])),div0_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[2],tf31.scalar(5))),sizes[0]),tf31.scalar(2)),add0_out=tf31.add(tf31.mul(tf31.div(vec[0],tf31.scalar(10)),sizes[0]),centers[0]),div1_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[3],tf31.scalar(5))),sizes[1]),tf31.scalar(2)),add1_out=tf31.add(tf31.mul(tf31.div(vec[1],tf31.scalar(10)),sizes[1]),centers[1]);return tf31.transpose(tf31.stack([tf31.sub(add0_out,div0_out),tf31.sub(add1_out,div1_out),tf31.add(add0_out,div0_out),tf31.add(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tf31.tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(tf31.reshape(tf31.tile(params.extra_dim,[batchSize,1,1]),[-1,4]),tf31.reshape(boxPredictions,[-1,4]));boxes=tf31.reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=tf31.sigmoid(tf31.slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=tf31.slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=tf31.reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=tf31.unstack(boxes),scoresByBatch=tf31.unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}var tf33=__toModule(require_tfjs_esm()),tf32=__toModule(require_tfjs_esm());function boxPredictionLayer(x,params){return tf32.tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=tf32.reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=tf32.reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tf33.tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=tf33.concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=tf33.concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}},SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tf34.tidy(()=>{let batchTensor=tf34.cast(input.toBatchTensor(512,!1),"float32"),x=tf34.sub(tf34.mul(batchTensor,tf34.scalar(.007843137718737125)),tf34.scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input){return this.forwardInput(await toNetInput(input))}async locateFaces(input,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),iouThreshold=.5,indices=nonMaxSuppression2(boxes,scoresData,maxResults,iouThreshold,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap11(weightMap)}extractParams(weights){return extractParams11(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{},IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model",tf39=__toModule(require_tfjs_esm()),isNumber=arg=>typeof arg=="number";function validateConfig(config2){if(!config2)throw new Error(`invalid config: ${config2}`);if(typeof config2.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config2.withSeparableConvs}`);if(!isNumber(config2.iouThreshold)||config2.iouThreshold<0||config2.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config2.iouThreshold}`);if(!Array.isArray(config2.classes)||!config2.classes.length||!config2.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config2.classes)}`);if(!Array.isArray(config2.anchors)||!config2.anchors.length||!config2.anchors.map(a=>a||{}).every(a=>isNumber(a.x)&&isNumber(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config2.anchors)}`);if(config2.meanRgb&&(!Array.isArray(config2.meanRgb)||config2.meanRgb.length!==3||!config2.meanRgb.every(isNumber)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config2.meanRgb)}`)}var tf36=__toModule(require_tfjs_esm()),tf35=__toModule(require_tfjs_esm());function leaky(x){return tf35.tidy(()=>{let min=tf35.mul(x,tf35.scalar(.10000000149011612));return tf35.add(tf35.relu(tf35.sub(x,min)),min)})}function convWithBatchNorm(x,params){return tf36.tidy(()=>{let out=tf36.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf36.conv2d(out,params.conv.filters,[1,1],"valid"),out=tf36.sub(out,params.bn.sub),out=tf36.mul(out,params.bn.truediv),out=tf36.add(out,params.conv.bias),leaky(out)})}var tf37=__toModule(require_tfjs_esm());function depthwiseSeparableConv3(x,params){return tf37.tidy(()=>{let out=tf37.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf37.separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=tf37.add(out,params.bias),leaky(out)})}var tf38=__toModule(require_tfjs_esm());function extractorsFactory9(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub6=tf38.tensor1d(extractWeights(size)),truediv=tf38.tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub6,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams13(weights,config2,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory9(extractWeights,paramMappings),params;if(config2.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config2.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory10(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub6=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub6,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap13(weightMap,config2){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory10(weightMap,paramMappings),params;if(config2.withSeparableConvs){let numFilters=config2.filterSizes&&config2.filterSizes.length||9;params={conv0:config2.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}},TinyYolov2Base2=class extends NeuralNetwork{constructor(config2){super("TinyYolov2");validateConfig(config2),this._config=config2}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv3(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv3(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv3(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv3(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tf39.tidy(()=>{let batchTensor=tf39.cast(input.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(tf39.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input,inputSize){return this.forwardInput(await toNetInput(input),inputSize)}async detect(input,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input),out=await this.forwardInput(netInput,inputSize),out0=tf39.tidy(()=>tf39.unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]),indices=nonMaxSuppression(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0),detections=indices.map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions));return detections}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap13(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams13(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tf39.tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?tf39.softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):tf39.scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max,curr)=>max.classScore>curr.classScore?max:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config2={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config2)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}},ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}},tf41=__toModule(require_tfjs_esm()),tf40=__toModule(require_tfjs_esm());async function extractAllFacesAndComputeResults(parentResults,input,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input instanceof tf40.Tensor?await extractFaceTensors(input,faceBoxes):await extractFaces(input,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof tf40.Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404],TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config2={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config2)}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){let objectDetections=await this.detect(input,forwardParams);return objectDetections.map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}},nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input,options)=>nets.ssdMobilenetv1.locateFaces(input,options),tinyFaceDetector=(input,options)=>nets.tinyFaceDetector.locateFaces(input,options),tinyYolov23=(input,options)=>nets.tinyYolov2.locateFaces(input,options),detectFaceLandmarks=input=>nets.faceLandmark68Net.detectLandmarks(input),detectFaceLandmarksTiny=input=>nets.faceLandmark68TinyNet.detectLandmarks(input),computeFaceDescriptor=input=>nets.faceRecognitionNet.computeFaceDescriptor(input),recognizeFaceExpressions=input=>nets.faceExpressionNet.predictExpressions(input),predictAgeAndGender=input=>nets.ageGenderNet.predictAgeAndGender(input),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks,PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input){super();this.parentTask=parentTask;this.input=input}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask,descriptors=await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}));return descriptors.map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}},DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}},DetectFacesTaskBase=class extends ComposableTask{constructor(input,options=new SsdMobilenetv1Options){super();this.input=input;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input2=>nets.tinyFaceDetector.locateFaces(input2,options):options instanceof SsdMobilenetv1Options?input2=>nets.ssdMobilenetv1.locateFaces(input2,options):options instanceof TinyYolov2Options?input2=>nets.tinyYolov2.locateFaces(input2,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input,options)}function detectAllFaces(input,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input,options)}async function allFacesSsdMobilenetv1(input,minConfidence){return detectAllFaces(input,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input,forwardParams={}){return detectAllFaces(input,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+Math.pow(diff,2),0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count=1,createUniqueLabel=()=>`person ${count++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json){let labeledDescriptors=json.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser3=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version2={faceapi:version,node,browser:browser3}; //# sourceMappingURL=face-api.node.js.map diff --git a/dist/face-api.node.js.map b/dist/face-api.node.js.map index 7ed83f9..d004b8a 100644 --- a/dist/face-api.node.js.map +++ b/dist/face-api.node.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/tfjs/tf-node.js", "../src/env/isNodejs.ts", "../src/index.ts", "../src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/utils/index.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/NetInput.ts", "../src/dom/imageToSquare.ts", "../src/dom/NetInput.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/dom/loadWeightMap.ts", "../src/common/getModelUris.ts", "../src/dom/loadWeightMap.ts", "../src/dom/matchDimensions.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/NeuralNetwork.ts", "../src/NeuralNetwork.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/depthwiseSeparableConv.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/types.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/xception/TinyXception.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/xception/TinyXception.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts", "../src/index.ts"], - "sourcesContent": ["export * from '@tensorflow/tfjs-node';\n", "export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "export * from './drawContour'\nexport * from './drawDetections'\nexport * from './drawFaceExpressions'\nexport * from './DrawBox'\nexport * from './DrawFaceLandmarks'\nexport * from './DrawTextField'", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false\n) {\n ctx.beginPath()\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx]\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(x, y)\n })\n\n if (isClosed) {\n const from = points[points.length - 1]\n const to = points[0]\n if (!from || !to) {\n return\n }\n\n ctx.moveTo(from.x, from.y)\n ctx.lineTo(to.x, to.y)\n }\n\n ctx.stroke()\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n\n private _width: number\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`)\n }\n\n this._width = width\n this._height = height\n }\n\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1)\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2)\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3)\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4)\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = Math.pow(10, prec)\n return Math.floor(num * f) / f\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width)\n return new Dimensions(Math.round(width * scale), Math.round(height * scale))\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length))\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step))\n}\n\nexport function isValidNumber(num: any) {\n return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && 0 <= num && num <= 1.0\n}", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x\n this._y = y\n }\n\n get x(): number { return this._x }\n get y(): number { return this._y }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y)\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y)\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y)\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y)\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y))\n }\n\n public magnitude(): number {\n return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2))\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y))\n }\n}", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber)\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`)\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)\n }\n }\n\n private _x: number\n private _y: number\n private _width: number\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber)\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber)\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`)\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top]\n\n Box.assertIsValidBox({ x, y, width, height }, 'Box.constructor', allowNegativeDimensions)\n\n this._x = x\n this._y = y\n this._width = width\n this._height = height\n }\n\n public get x(): number { return this._x }\n public get y(): number { return this._y }\n public get width(): number { return this._width }\n public get height(): number { return this._height }\n public get left(): number { return this.x }\n public get top(): number { return this.y }\n public get right(): number { return this.x + this.width }\n public get bottom(): number { return this.y + this.height }\n public get area(): number { return this.width * this.height }\n public get topLeft(): Point { return new Point(this.left, this.top) }\n public get topRight(): Point { return new Point(this.right, this.top) }\n public get bottomLeft(): Point { return new Point(this.left, this.bottom) }\n public get bottomRight(): Point { return new Point(this.right, this.bottom) }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.round(val))\n return new Box({ x, y, width, height })\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map(val => Math.floor(val))\n return new Box({ x, y, width, height })\n }\n\n public toSquare(): Box {\n let { x, y, width, height } = this\n const diff = Math.abs(width - height)\n if (width < height) {\n x -= (diff / 2)\n width += diff\n }\n if (height < width) {\n y -= (diff / 2)\n height += diff\n }\n\n return new Box({ x, y, width, height })\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY\n })\n }\n\n public pad(padX: number, padY: number): Box {\n let [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY\n ]\n return new Box({ x, y, width, height })\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const { x, y, right, bottom } = this\n const clippedX = Math.max(x, 0)\n const clippedY = Math.max(y, 0)\n\n const newWidth = right - clippedX\n const newHeight = bottom - clippedY\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX)\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY)\n\n return (new Box({ x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight})).floor()\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this\n const x = this.x + sx\n const y = this.y + sy\n\n return new Box({ x, y, width, height })\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1\n const h = this.height + 1\n\n let dx = 1\n let dy = 1\n let edx = w\n let edy = h\n\n let x = this.left\n let y = this.top\n let ex = this.right\n let ey = this.bottom\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w\n ex = imageWidth\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h\n ey = imageHeight\n }\n if (x < 1) {\n edy = 2 - x\n x = 1\n }\n if (y < 1) {\n edy = 2 - y\n y = 1\n }\n\n return { dy, edy, dx, edx, y, ey, x, ex, w, h }\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height)\n }).toSquare().round()\n }\n}", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({ left, top, right, bottom }, allowNegativeDimensions)\n }\n}", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n private _classScore: number\n private _className: string\n private _box: Rect\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height)\n this._score = score\n this._classScore = classScore\n this._className = className\n this._box = new Box(relativeBox).rescale(this._imageDims)\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n public get className(): string { return this._className }\n public get box(): Box { return this._box }\n public get imageDims(): Dimensions { return this._imageDims }\n public get imageWidth(): number { return this.imageDims.width }\n public get imageHeight(): number { return this.imageDims.height }\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()) }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height}\n )\n }\n}", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions\n ) {\n super(score, score, '', relativeBox, imageDims)\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height)\n return new FaceDetection(score, relativeBox, imageDims)\n }\n}", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left))\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top))\n const interSection = width * height\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area)\n}", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map(pt => pt.x)\n const ys = pts.map(pt => pt.y)\n const minX = xs.reduce((min, x) => x < min ? x : min, Infinity)\n const minY = ys.reduce((min, y) => y < min ? y : min, Infinity)\n const maxX = xs.reduce((max, x) => max < x ? x : max, 0)\n const maxY = ys.reduce((max, y) => max < y ? y : max, 0)\n\n return new BoundingBox(minX, minY, maxX, maxY)\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true\n): number[] {\n\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map(c => c.boxIndex)\n\n const pick: number[] = []\n\n while(indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number\n pick.push(curr)\n\n const indices = indicesSortedByScore\n\n const outputs: number[] = []\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i]\n\n const currBox = boxes[curr]\n const idxBox = boxes[idx]\n\n outputs.push(iou(currBox, idxBox, isIOU))\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold\n )\n }\n\n return pick\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32')\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32')\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32')\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3)\n\n return tf.sub(x, avg_rgb)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n\n const [height, width] = imgTensor.shape.slice(1)\n if (height === width) {\n return imgTensor\n }\n\n const dimDiff = Math.abs(height - width)\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1))\n const paddingAxis = height > width ? 2 : 1\n\n const createPaddingTensor = (paddingAmount: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice()\n paddingTensorShape[paddingAxis] = paddingAmount\n return tf.fill(paddingTensorShape, 0, 'float32')\n }\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount)\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number)\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend\n ]\n .filter(t => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[]\n return tf.concat(tensorsToStack, paddingAxis)\n\n })\n}", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice()\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n const x = array[i]\n array[i] = array[j]\n array[j] = x\n }\n return array\n}", "export * from './iou'\nexport * from './minBbox'\nexport * from './nonMaxSuppression'\nexport * from './normalize'\nexport * from './padToSquare'\nexport * from './shuffleArray'\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x))\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x))\n}", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({ x, y, width, height }, allowNegativeDimensions)\n }\n}", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5\nconst relY = 0.43\nconst relScale = 0.45\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n protected _positions: Point[]\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0)\n ) {\n const { width, height } = imgDims\n this._imgDims = new Dimensions(width, height)\n this._shift = shift\n this._positions = relativeFaceLandmarkPositions.map(\n pt => pt.mul(new Point(width, height)).add(shift)\n )\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y) }\n public get imageWidth(): number { return this._imgDims.width }\n public get imageHeight(): number { return this._imgDims.height }\n public get positions(): Point[] { return this._positions }\n public get relativePositions(): Point[] {\n return this._positions.map(\n pt => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight))\n )\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height }\n )\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y)\n )\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y)\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { }\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection)\n\n return this.shiftBy(box.x, box.y).align(null, options)\n }\n\n const { useDlibAlignment, minBoxPadding } = Object.assign({}, { useDlibAlignment: false, minBoxPadding: 0.2 }, options)\n\n if (useDlibAlignment) {\n return this.alignDlib()\n }\n\n return this.alignMinBbox(minBoxPadding)\n }\n\n private alignDlib(): Box {\n\n const centers = this.getRefPointsForAlignment()\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude()\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2\n\n const size = Math.floor(eyeToMouthDist / relScale)\n\n const refPoint = getCenterPoint(centers)\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)))\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)))\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y))\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions)\n return box.pad(box.width * padding, box.height * padding)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class')\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]])\n ]\n }\n}", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17)\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22)\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27)\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36)\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42)\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48)\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68)\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth()\n ].map(getCenterPoint)\n }\n}", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label\n this._distance = distance\n }\n\n public get label(): string { return this._label }\n public get distance(): number { return this._distance }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`\n }\n}", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee)\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`)\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box)\n this._label = label\n }\n\n public get label(): number { return this._label }\n\n}", "export class LabeledFaceDescriptors {\n private _label: string\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string')\n }\n\n if (!Array.isArray(descriptors) || descriptors.some(desc => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array')\n }\n\n this._label = label\n this._descriptors = descriptors\n }\n\n public get label(): string { return this._label }\n public get descriptors(): Float32Array[] { return this._descriptors }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d))\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => {\n return new Float32Array(d);\n });\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n\n}", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee)\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)\n }\n }\n\n private _score: number\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label)\n this._score = score\n this._classScore = classScore\n }\n\n public get score(): number { return this._score }\n public get classScore(): number { return this._classScore }\n\n}", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj['detection'] instanceof FaceDetection\n}\n\nexport function extendWithFaceDetection<\n TSource\n> (\n sourceObj: TSource,\n detection: FaceDetection\n): WithFaceDetection {\n\n const extension = { detection }\n return Object.assign({}, sourceObj, extension)\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n\n const fetch = window['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for browser environment')\n }\n\n const readFile = function() {\n throw new Error('readFile - filesystem not available for browser environment')\n }\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D: CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData: ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile\n }\n}", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n\n let requireFsError = ''\n\n if (!fs) {\n try {\n fs = require('fs')\n } catch (err) {\n requireFsError = err.toString()\n }\n }\n\n const readFile = fs\n ? function(filePath: string) {\n return new Promise((res, rej) => {\n fs.readFile(filePath, function(err: any, buffer: Buffer) {\n return err ? rej(err) : res(buffer)\n })\n })\n }\n : function() {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)\n }\n\n return {\n readFile\n }\n}", "import { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n\n const Canvas = global['Canvas'] || global['HTMLCanvasElement']\n const Image = global['Image'] || global['HTMLImageElement']\n\n const createCanvasElement = function() {\n if (Canvas) {\n return new Canvas()\n }\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment')\n }\n\n const createImageElement = function() {\n if (Image) {\n return new Image()\n }\n throw new Error('createImageElement - missing Image implementation for nodejs environment')\n }\n\n const fetch = global['fetch'] || function() {\n throw new Error('fetch - missing fetch implementation for nodejs environment')\n }\n\n const fileSystem = createFileSystem()\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global['CanvasRenderingContext2D'] || class {},\n Image: Image || class {},\n ImageData: global['ImageData'] || class {},\n Video: global['HTMLVideoElement'] || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem\n }\n}", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined'\n}", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()')\n }\n return environment\n}\n\nfunction setEnv(env: Environment) {\n environment = env\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) {\n return setEnv(createBrowserEnv())\n }\n if (isNodejs()) {\n return setEnv(createNodejsEnv())\n }\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize()\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()')\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env\n environment.Canvas = Canvas\n environment.Image = Image\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas())\n environment.createImageElement = env.createImageElement || (() => new Image())\n\n environment.ImageData = env.ImageData || environment.ImageData\n environment.Video = env.Video || environment.Video\n environment.fetch = env.fetch || environment.fetch\n environment.readFile = env.readFile || environment.readFile\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs\n}\n\ninitialize()\n\nexport * from './types'\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg)\n }\n return arg\n}", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n\n const { Canvas, CanvasRenderingContext2D } = env.getEnv()\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg\n }\n\n const canvas = resolveInput(canvasArg)\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas')\n }\n\n const ctx = canvas.getContext('2d')\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null')\n }\n\n return ctx\n}", "import { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\nexport enum AnchorPosition {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n public backgroundColor: string\n public fontColor: string\n public fontSize: number\n public fontStyle: string\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const { anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding } = options\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)'\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)'\n this.fontSize = fontSize || 14\n this.fontStyle = fontStyle || 'Georgia'\n this.padding = padding || 4\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n public anchor : IPoint\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {}\n ) {\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text)\n this.anchor = anchor\n this.options = new DrawTextFieldOptions(options)\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options\n return this.text.map(l => ctx.measureText(l).width).reduce((w0, w1) => w0 < w1 ? w1 : w0, 0) + (2 * padding)\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options\n return this.text.length * fontSize + (2 * padding)\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT\n\n const textFieldWidth = this.measureWidth(ctx)\n const textFieldHeight = this.measureHeight()\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x)\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0)\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0)\n return { x: newX, y: newY }\n }\n return { x, y }\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg)\n const ctx = getContext2dOrThrow(canvas)\n\n const { backgroundColor, fontColor, fontSize, fontStyle, padding } = this.options\n\n ctx.font = `${fontSize}px ${fontStyle}`\n const maxTextWidth = this.measureWidth(ctx)\n const textHeight = this.measureHeight()\n\n ctx.fillStyle = backgroundColor\n const upperLeft = this.getUpperLeft(ctx, canvas)\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight)\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x\n const y = padding + upperLeft.y + ((i + 1) * fontSize)\n ctx.fillText(textLine, x, y)\n })\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions } from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n public lineWidth: number\n public drawLabelOptions: DrawTextFieldOptions\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const { boxColor, lineWidth, label, drawLabelOptions } = options\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)'\n this.lineWidth = lineWidth || 2\n this.label = label\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor\n }\n this.drawLabelOptions = new DrawTextFieldOptions(Object.assign({}, defaultDrawLabelOptions, drawLabelOptions))\n }\n}\n\nexport class DrawBox {\n public box: Box\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {}\n ) {\n this.box = new Box(box)\n this.options = new DrawBoxOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { boxColor, lineWidth } = this.options\n\n const { x, y, width, height } = this.box\n ctx.strokeStyle = boxColor\n ctx.lineWidth = lineWidth\n ctx.strokeRect(x, y, width, height)\n\n const { label } = this.options\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg)\n }\n }\n}", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections]\n\n detectionsArray.forEach(det => {\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined)\n\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det))\n\n const label = score ? `${round(score)}` : undefined\n new DrawBox(box, { label }).draw(canvasArg)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor)\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)))\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async t => {\n const data = await t.data()\n t.dispose()\n return data\n }))\n out.dispose()\n\n const predictionsByBatch = probabilitesByBatch\n .map(probabilites => new FaceExpressions(probabilites as Float32Array))\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n\n protected getClassifierChannelsOut(): number {\n return 7\n }\n}", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n\n const { Image, Video } = env.getEnv()\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3)\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null)\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n resolve(e)\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return\n e.currentTarget.removeEventListener('load', onLoad)\n e.currentTarget.removeEventListener('error', onError)\n reject(e)\n }\n\n media.addEventListener('load', onLoad)\n media.addEventListener('error', onError)\n })\n}", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) {\n return reject('bufferToImage - expected buf to be of type: Blob')\n }\n\n const reader = new FileReader()\n reader.onload = () => {\n if (typeof reader.result !== 'string') {\n return reject('bufferToImage - expected reader.result to be a string, in onload')\n }\n\n const img = env.getEnv().createImageElement()\n img.onload = () => resolve(img)\n img.onerror = reject\n img.src = reader.result\n }\n reader.onerror = reject\n reader.readAsDataURL(buf)\n })\n}", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n\n const { Image, Video } = env.getEnv()\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight)\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight)\n }\n return new Dimensions(input.width, input.height)\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n\n const { createCanvasElement } = env.getEnv()\n const canvas = createCanvasElement()\n canvas.width = width\n canvas.height = height\n return canvas\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n\n const { ImageData } = env.getEnv()\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet')\n }\n\n const { width, height } = dims || getMediaDimensions(media)\n const canvas = createCanvas({ width, height })\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0)\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height)\n }\n return canvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement\n): Promise {\n\n const targetCanvas = canvas || env.getEnv().createCanvasElement()\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0)\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt())\n await tf.browser.toPixels(imgTensor3D, targetCanvas)\n\n imgTensor3D.dispose()\n\n return targetCanvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement\n): Promise {\n\n const targetCanvas = canvas || env.getEnv().createCanvasElement()\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0)\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt())\n await tf.browser.toPixels(imgTensor3D, targetCanvas)\n\n imgTensor3D.dispose()\n\n return targetCanvas\n}", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n\n const { Image, Canvas, Video } = env.getEnv()\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport { computeReshapedDimensions, isTensor3D, isTensor4D, range } from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n private _canvases: HTMLCanvasElement[] = []\n private _batchSize: number\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`)\n }\n\n this._treatAsBatchInput = treatAsBatchInput\n this._batchSize = inputs.length\n\n inputs.forEach((input, idx) => {\n\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = input.shape\n return\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0]\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = (input as any).shape.slice(1)\n return\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input)\n this._canvases[idx] = canvas\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3]\n })\n }\n\n public get imageTensors(): Array {\n return this._imageTensors\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput\n }\n\n public get batchSize(): number {\n return this._batchSize\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx)\n )\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx]\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx]\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0]\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1]\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet')\n }\n\n const width = this.getInputWidth(batchIdx)\n const height = this.getInputHeight(batchIdx)\n return computeReshapedDimensions({ width, height }, this.inputSize)\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n\n this._inputSize = inputSize\n\n return tf.tidy(() => {\n\n const inputTensors = range(this.batchSize, 0, 1).map(batchIdx => {\n const input = this.getInput(batchIdx)\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims()\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs)\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize])\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3)\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs))\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)\n })\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map(t => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3)\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n \n return batchTensor\n })\n }\n}", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n\n const { Image, Canvas } = env.getEnv()\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement')\n }\n\n const dims = getMediaDimensions(input)\n const scale = inputSize / Math.max(dims.height, dims.width)\n const width = scale * dims.width\n const height = scale * dims.height\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize })\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input)\n\n const offset = Math.abs(width - height) / 2\n const dx = centerImage && width < height ? offset : 0\n const dy = centerImage && height < width ? offset : 0\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height)\n\n return targetCanvas\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport { computeReshapedDimensions, isTensor3D, isTensor4D, range } from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n private _canvases: HTMLCanvasElement[] = []\n private _batchSize: number\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`)\n }\n\n this._treatAsBatchInput = treatAsBatchInput\n this._batchSize = inputs.length\n\n inputs.forEach((input, idx) => {\n\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = input.shape\n return\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0]\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n\n this._imageTensors[idx] = input\n this._inputDimensions[idx] = (input as any).shape.slice(1)\n return\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input)\n this._canvases[idx] = canvas\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3]\n })\n }\n\n public get imageTensors(): Array {\n return this._imageTensors\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput\n }\n\n public get batchSize(): number {\n return this._batchSize\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx)\n )\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx]\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx]\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0]\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1]\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet')\n }\n\n const width = this.getInputWidth(batchIdx)\n const height = this.getInputHeight(batchIdx)\n return computeReshapedDimensions({ width, height }, this.inputSize)\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n\n this._inputSize = inputSize\n\n return tf.tidy(() => {\n\n const inputTensors = range(this.batchSize, 0, 1).map(batchIdx => {\n const input = this.getInput(batchIdx)\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims()\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs)\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize])\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3)\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs))\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)\n })\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map(t => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3)\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n \n return batchTensor\n })\n }\n}", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs\n }\n\n let inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs]\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input')\n }\n\n const getIdxHint = (idx: number) => Array.isArray(inputs) ? ` at input index ${idx}:` : ''\n\n const inputArray = inputArgArray.map(resolveInput)\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`)\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`)\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0]\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)\n }\n }\n })\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map(input => isMediaElement(input) && awaitMediaLoaded(input))\n )\n\n return new NetInput(inputArray, Array.isArray(inputs))\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array\n): Promise {\n\n const { Canvas } = env.getEnv()\n\n let canvas = input as HTMLCanvasElement\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input)\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported')\n }\n\n const tensorOrCanvas = netInput.getInput(0)\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas)\n }\n\n const ctx = getContext2dOrThrow(canvas)\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det\n )\n .map(box => box.clipAtImageBorders(canvas.width, canvas.height))\n\n return boxes.map(({ x, y, width, height }) => {\n const faceImg = createCanvas({ width, height })\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0)\n return faceImg\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array\n): Promise {\n\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D')\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported')\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0)\n\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det\n )\n .map(box => box.clipAtImageBorders(imgWidth, imgHeight))\n\n const faceTensors = boxes.map(({ x, y, width, height }) =>\n tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels])\n )\n\n return faceTensors\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array\n): Promise {\n\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D')\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported')\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0)\n\n const boxes = detections.map(\n det => det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det\n )\n .map(box => box.clipAtImageBorders(imgWidth, imgHeight))\n\n const faceTensors = boxes.map(({ x, y, width, height }) =>\n tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels])\n )\n\n return faceTensors\n })\n}", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n init?: RequestInit\n): Promise {\n\n const fetch = env.getEnv().fetch\n const res = await fetch(url, init)\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`)\n }\n return res\n}", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri)\n const blob = await (res).blob()\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`)\n }\n return bufferToImage(blob)\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json()\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer())\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName)\n let manifest = await fetchJson(manifestUri)\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri)\n}", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename\n }\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`\n }\n }\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter(s => s)\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/')\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName)\n let manifest = await fetchJson(manifestUri)\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri)\n}", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference\n input.width = width\n input.height = height\n return { width, height }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('FaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock4(normalized, params.dense0, true)\n out = denseBlock4(out, params.dense1)\n out = denseBlock4(out, params.dense2)\n out = denseBlock4(out, params.dense3)\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n })\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number]\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same')\n out = tf.add(out, params.bias)\n return out\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n })\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1])\n ) as tf.Tensor4D\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1])\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1])\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1])\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias\n ) as tf.Tensor4D\n\n return withRelu ? tf.relu(out) : out\n })\n}", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach(path => {\n if (!paramMappings.some(pm => pm.originalPath === path)) {\n weightMap[path].dispose()\n }\n })\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): FCParams {\n\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut])\n const fc_bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return {\n weights: fc_weights,\n bias: fc_bias\n }\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1])\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut])\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n\nexport function loadSeparableConvParamsFactory(\n extractWeightEntry: (originalPath: string, paramRank: number) => T\n) {\n\n return function (prefix: string): SeparableConvParams {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4)\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n constructor(\n public depthwise_filter: tf.Tensor4D,\n public pointwise_filter: tf.Tensor4D,\n public bias: tf.Tensor1D\n ) {}\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[]\n) {\n\n return function(channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1])\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut])\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n\nexport function loadSeparableConvParamsFactory(\n extractWeightEntry: (originalPath: string, paramRank: number) => T\n) {\n\n return function (prefix: string): SeparableConvParams {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4)\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias\n )\n }\n\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n return function (originalPath: string, paramRank: number, mappedPath?: string): T {\n const tensor = weightMap[originalPath]\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`)\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath }\n )\n\n return tensor\n }\n\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights)\n remainingWeights = remainingWeights.slice(numWeights)\n return ret\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights\n }\n\n return {\n extractWeights,\n getRemainingWeights\n }\n}", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`)\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`)\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer)\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock4Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2')\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2, dense3 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return function(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n\n return { filters, bias }\n }\n}", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n\n return { conv0, conv1, conv2 }\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`)\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`)\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`)\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`)\n\n return { conv0, conv1, conv2, conv3 }\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock4Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('FaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock4(normalized, params.dense0, true)\n out = denseBlock4(out, params.dense1)\n out = denseBlock4(out, params.dense2)\n out = denseBlock4(out, params.dense3)\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name)\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract getClassifierChannelsIn(): number\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut())\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const cIn = this.getClassifierChannelsIn()\n const cOut = this.getClassifierChannelsOut()\n const classifierWeightSize = (cOut * cIn ) + cOut\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams\n): tf.Tensor2D {\n return tf.tidy(() =>\n tf.add(\n tf.matMul(x, params.weights),\n params.bias\n )\n )\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: extractFcParams('fc')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n\n const featureExtractorMap: tf.NamedTensorMap = {}\n const classifierMap: tf.NamedTensorMap = {}\n\n Object.keys(weightMap).forEach(key => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap\n map[key] = weightMap[key]\n })\n\n return { featureExtractorMap, classifierMap }\n\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name)\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract getClassifierChannelsIn(): number\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut())\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const cIn = this.getClassifierChannelsIn()\n const cOut = this.getClassifierChannelsOut()\n const classifierWeightSize = (cOut * cIn ) + cOut\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised']\n\nexport class FaceExpressions {\n public neutral: number\n public happy: number\n public sad: number\n public angry: number\n public fearful: number\n public disgusted: number\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`)\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx]\n })\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map(expression => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor)\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)))\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async t => {\n const data = await t.data()\n t.dispose()\n return data\n }))\n out.dispose()\n\n const predictionsByBatch = probabilitesByBatch\n .map(probabilites => new FaceExpressions(probabilites as Float32Array))\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n\n protected getClassifierChannelsOut(): number {\n return 7\n }\n}", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj['expressions'] instanceof FaceExpressions\n}\n\nexport function extendWithFaceExpressions<\n TSource\n> (\n sourceObj: TSource,\n expressions: FaceExpressions\n): WithFaceExpressions {\n\n const extension = { expressions }\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions]\n\n faceExpressionsArray.forEach(e => {\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined)\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof')\n }\n\n const sorted = expr.asSortedArray()\n const resultsToDisplay = sorted.filter(expr => expr.probability > minConfidence)\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0))\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map(expr => `${expr.expression} (${round(expr.probability)})`),\n anchor\n )\n drawTextField.draw(canvasArg)\n })\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n}\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n && obj['landmarks'] instanceof FaceLandmarks\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n && obj['alignedRect'] instanceof FaceDetection\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68\n> (\n sourceObj: TSource,\n unshiftedLandmarks: TFaceLandmarks\n): WithFaceLandmarks {\n\n const { box: shift } = sourceObj.detection\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y)\n\n const rect = landmarks.align()\n const { imageDims } = sourceObj.detection\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims)\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect\n }\n\n return Object.assign({}, sourceObj, extension)\n}", "import { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n public drawPoints: boolean\n public lineWidth: number\n public pointSize: number\n public lineColor: string\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const { drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor } = options\n this.drawLines = drawLines\n this.drawPoints = drawPoints\n this.lineWidth = lineWidth || 1\n this.pointSize = pointSize || 2\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)'\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)'\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {}\n ) {\n this.faceLandmarks = faceLandmarks\n this.options = new DrawFaceLandmarksOptions(options)\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg)\n\n const { drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor } = this.options\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor\n ctx.lineWidth = lineWidth\n drawContour(ctx, this.faceLandmarks.getJawOutline())\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow())\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow())\n drawContour(ctx, this.faceLandmarks.getNose())\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true)\n drawContour(ctx, this.faceLandmarks.getRightEye(), true)\n drawContour(ctx, this.faceLandmarks.getMouth(), true)\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor\n ctx.fillStyle = pointColor\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath()\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI)\n ctx.fill()\n }\n this.faceLandmarks.positions.forEach(drawPoint)\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks]\n faceLandmarksArray.forEach(f => {\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined)\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof')\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { AgeAndGenderPrediction, Gender, NetOutput, NetParams } from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet')\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1)\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D()\n const gender = fullyConnectedLayer(pooled, params.fc.gender)\n return { age, gender }\n })\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input)\n return { age, gender: tf.softmax(gender) }\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n\n const ages = tf.unstack(out.age)\n const genders = tf.unstack(out.gender)\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i]\n }))\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0]\n const probMale = (await genderTensor.data())[0]\n const isMale = probMale > 0.5\n const gender = isMale ? Gender.MALE : Gender.FEMALE\n const genderProbability = isMale ? probMale : (1 - probMale)\n\n ageTensor.dispose()\n genderTensor.dispose()\n return { age, gender, genderProbability }\n })\n )\n out.age.dispose()\n out.gender.dispose()\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model'\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights)\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2)\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias)\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = tf.maxPool(out, [3, 3], [2, 2], 'same')\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]))\n return out\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1])\n out = tf.add(out, x)\n return out\n}\n\nexport class TinyXception extends NeuralNetwork {\n\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception')\n this._numMainBlocks = numMainBlocks\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyXception - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]))\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false)\n out = reductionBlock(out, params.entry_flow.reduction_block_1)\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`])\n })\n\n out = reductionBlock(out, params.exit_flow.reduction_block)\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]))\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks)\n }\n}", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry)\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`)\n\n return { separable_conv0, separable_conv1, expansion_conv }\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`)\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`)\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`)\n\n return { separable_conv0, separable_conv1, separable_conv2 }\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams\n } = loadParamsFactory(weightMap, paramMappings)\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in')\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0')\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1')\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1\n }\n\n const middle_flow = {}\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`)\n })\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block')\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv')\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias)\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = tf.maxPool(out, [3, 3], [2, 2], 'same')\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]))\n return out\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1])\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1])\n out = tf.add(out, x)\n return out\n}\n\nexport class TinyXception extends NeuralNetwork {\n\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception')\n this._numMainBlocks = numMainBlocks\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyXception - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]))\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false)\n out = reductionBlock(out, params.entry_flow.reduction_block_1)\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`])\n })\n\n out = reductionBlock(out, params.exit_flow.reduction_block)\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]))\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks)\n }\n}", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings)\n\n const age = extractFCParams(512, 1, 'fc/age')\n const gender = extractFCParams(512, 2, 'fc/gender')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { weights, bias }\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport enum Gender {\n FEMALE = 'female',\n MALE = 'male'\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { AgeAndGenderPrediction, Gender, NetOutput, NetParams } from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet')\n this._faceFeatureExtractor = faceFeatureExtractor\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n\n const { params } = this\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`)\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1)\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D()\n const gender = fullyConnectedLayer(pooled, params.fc.gender)\n return { age, gender }\n })\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input)\n return { age, gender: tf.softmax(gender) }\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput)\n\n const ages = tf.unstack(out.age)\n const genders = tf.unstack(out.gender)\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i]\n }))\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0]\n const probMale = (await genderTensor.data())[0]\n const isMale = probMale > 0.5\n const gender = isMale ? Gender.MALE : Gender.FEMALE\n const genderProbability = isMale ? probMale : (1 - probMale)\n\n ageTensor.dispose()\n genderTensor.dispose()\n return { age, gender, genderProbability }\n })\n )\n out.age.dispose()\n out.gender.dispose()\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model'\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose)\n super.dispose(throwOnRedispose)\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights)\n this._params = params\n this._paramMappings = paramMappings\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights)\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap)\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap)\n\n return extractParamsFromWeigthMap(classifierMap)\n }\n\n protected extractParams(weights: Float32Array) {\n\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2)\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize)\n const classifierWeights = weights.slice(weights.length - classifierWeightSize)\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights)\n return this.extractClassifierParams(classifierWeights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width)\n return {\n width: width * scale,\n height: height * scale\n }\n })\n\n const batchSize = inputDimensions.length\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) =>\n tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D()\n\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx]\n return cond(width, height) ? Math.abs(width - height) / 2 : 0\n }\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h)\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w)\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx)\n )\n )))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height\n )\n )))\n\n return landmarkTensors as tf.Tensor2D\n })\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input)\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width }))\n )\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data())\n const xCoords = landmarksArray.filter((_, i) => isEven(i))\n const yCoords = landmarksArray.filter((_, i) => !isEven(i))\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width : netInput.getInputWidth(batchIdx),\n }\n )\n }\n ))\n\n landmarkTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width)\n return {\n width: width * scale,\n height: height * scale\n }\n })\n\n const batchSize = inputDimensions.length\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) =>\n tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D()\n\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx]\n return cond(width, height) ? Math.abs(width - height) / 2 : 0\n }\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h)\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w)\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx)\n )\n )))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) =>\n createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height\n )\n )))\n\n return landmarkTensors as tf.Tensor2D\n })\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input)\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width }))\n )\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data())\n const xCoords = landmarksArray.filter((_, i) => isEven(i))\n const yCoords = landmarksArray.filter((_, i) => !isEven(i))\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width : netInput.getInputWidth(batchIdx),\n }\n )\n }\n ))\n\n landmarkTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136\n }\n}", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 256\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('TinyFaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock3(normalized, params.dense0, true)\n out = denseBlock3(out, params.dense1)\n out = denseBlock3(out, params.dense2)\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractDenseBlock3Params\n } = loadParamsFactory(weightMap, paramMappings)\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2')\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\n\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractDenseBlock3Params\n } = extractorsFactory(extractWeights, paramMappings)\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true)\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1')\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2')\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 }\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n\n constructor() {\n super('TinyFaceFeatureExtractor')\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference')\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D\n\n let out = denseBlock3(normalized, params.dense0, true)\n out = denseBlock3(out, params.dense1)\n out = denseBlock3(out, params.dense2)\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid')\n\n return out\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights)\n }\n}", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor)\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model'\n }\n\n protected getClassifierChannelsIn(): number {\n return 128\n }\n}", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n\n constructor() {\n super('FaceRecognitionNet')\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = convDown(normalized, params.conv32_down)\n out = tf.maxPool(out, 3, 2, 'valid')\n\n out = residual(out, params.conv32_1)\n out = residual(out, params.conv32_2)\n out = residual(out, params.conv32_3)\n\n out = residualDown(out, params.conv64_down)\n out = residual(out, params.conv64_1)\n out = residual(out, params.conv64_2)\n out = residual(out, params.conv64_3)\n\n out = residualDown(out, params.conv128_down)\n out = residual(out, params.conv128_1)\n out = residual(out, params.conv128_2)\n\n out = residualDown(out, params.conv256_down)\n out = residual(out, params.conv256_1)\n out = residual(out, params.conv256_2)\n out = residualDown(out, params.conv256_down_out)\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D\n const fullyConnected = tf.matMul(globalAvg, params.fc)\n\n return fullyConnected\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n t => t.data()\n )) as Float32Array[]\n\n faceDescriptorTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same'\n): tf.Tensor4D {\n const { filters, bias } = params.conv\n\n let out = tf.conv2d(x, filters, strides, padding)\n out = tf.add(out, bias)\n out = scale(out, params.scale)\n return withRelu ? tf.relu(out) : out\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true)\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false)\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid')\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases)\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same'\n): tf.Tensor4D {\n const { filters, bias } = params.conv\n\n let out = tf.conv2d(x, filters, strides, padding)\n out = tf.add(out, bias)\n out = scale(out, params.scale)\n return withRelu ? tf.relu(out) : out\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true)\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false)\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid')\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping } from '../common/index';\nimport { isFloat } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues)\n const depth = weights.length / (numFilters * filterSize * filterSize)\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`)\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0]\n )\n )\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize)\n const bias = tf.tensor1d(extractWeights(numFilters))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n\n const weights = tf.tensor1d(extractWeights(numWeights))\n const biases = tf.tensor1d(extractWeights(numWeights))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` }\n )\n\n return {\n weights,\n biases\n }\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvLayerParams {\n\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`)\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`)\n\n return { conv, scale }\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false\n ): ResidualLayerParams {\n\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`)\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`)\n\n return { conv1, conv2 }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down')\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1')\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2')\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3')\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true)\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1')\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2')\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3')\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true)\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1')\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2')\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true)\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1')\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2')\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out')\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0])\n )\n paramMappings.push({ paramPath: `fc` })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping } from '../common/index';\nimport { isFloat } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues)\n const depth = weights.length / (numFilters * filterSize * filterSize)\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`)\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0]\n )\n )\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvParams {\n\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize)\n const bias = tf.tensor1d(extractWeights(numFilters))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` }\n )\n\n return { filters, bias }\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n\n const weights = tf.tensor1d(extractWeights(numWeights))\n const biases = tf.tensor1d(extractWeights(numWeights))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` }\n )\n\n return {\n weights,\n biases\n }\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string\n ): ConvLayerParams {\n\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`)\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`)\n\n return { conv, scale }\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false\n ): ResidualLayerParams {\n\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`)\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`)\n\n return { conv1, conv2 }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down')\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1')\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2')\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3')\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true)\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1')\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2')\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3')\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true)\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1')\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2')\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true)\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1')\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2')\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out')\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0])\n )\n paramMappings.push({ paramPath: `fc` })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1)\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1)\n\n return { weights, biases }\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1)\n const scale = extractScaleLayerParams(prefix)\n\n return { conv: { filters, bias }, scale }\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`)\n }\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const conv32_down = extractConvLayerParams('conv32_down')\n const conv32_1 = extractResidualLayerParams('conv32_1')\n const conv32_2 = extractResidualLayerParams('conv32_2')\n const conv32_3 = extractResidualLayerParams('conv32_3')\n\n const conv64_down = extractResidualLayerParams('conv64_down')\n const conv64_1 = extractResidualLayerParams('conv64_1')\n const conv64_2 = extractResidualLayerParams('conv64_2')\n const conv64_3 = extractResidualLayerParams('conv64_3')\n\n const conv128_down = extractResidualLayerParams('conv128_down')\n const conv128_1 = extractResidualLayerParams('conv128_1')\n const conv128_2 = extractResidualLayerParams('conv128_2')\n\n const conv256_down = extractResidualLayerParams('conv256_down')\n const conv256_1 = extractResidualLayerParams('conv256_1')\n const conv256_2 = extractResidualLayerParams('conv256_2')\n const conv256_down_out = extractResidualLayerParams('conv256_down_out')\n\n const fc = weightMap['fc']\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' })\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`)\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n out = tf.add(out, x)\n out = tf.relu(out)\n return out\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D\n const zeros = tf.zeros(pooled.shape)\n const isPad = pooled.shape[3] !== out.shape[3]\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number]\n padShapeX[1] = 1\n const zerosW = tf.zeros(padShapeX)\n out = tf.concat([out, zerosW], 1)\n\n const padShapeY = [...out.shape] as [number, number, number, number]\n padShapeY[2] = 1\n const zerosH = tf.zeros(padShapeY)\n out = tf.concat([out, zerosH], 2)\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled\n out = tf.add(pooled, out) as tf.Tensor4D\n\n out = tf.relu(out)\n return out\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n out = tf.add(out, x)\n out = tf.relu(out)\n return out\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1)\n out = convNoRelu(out, params.conv2)\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D\n const zeros = tf.zeros(pooled.shape)\n const isPad = pooled.shape[3] !== out.shape[3]\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number]\n padShapeX[1] = 1\n const zerosW = tf.zeros(padShapeX)\n out = tf.concat([out, zerosW], 1)\n\n const padShapeY = [...out.shape] as [number, number, number, number]\n padShapeY[2] = 1\n const zerosH = tf.zeros(padShapeY)\n out = tf.concat([out, zerosH], 2)\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled\n out = tf.add(pooled, out) as tf.Tensor4D\n\n out = tf.relu(out)\n return out\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n\n constructor() {\n super('FaceRecognitionNet')\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298]\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D\n\n let out = convDown(normalized, params.conv32_down)\n out = tf.maxPool(out, 3, 2, 'valid')\n\n out = residual(out, params.conv32_1)\n out = residual(out, params.conv32_2)\n out = residual(out, params.conv32_3)\n\n out = residualDown(out, params.conv64_down)\n out = residual(out, params.conv64_1)\n out = residual(out, params.conv64_2)\n out = residual(out, params.conv64_3)\n\n out = residualDown(out, params.conv128_down)\n out = residual(out, params.conv128_1)\n out = residual(out, params.conv128_2)\n\n out = residualDown(out, params.conv256_down)\n out = residual(out, params.conv256_1)\n out = residual(out, params.conv256_2)\n out = residualDown(out, params.conv256_down_out)\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D\n const fullyConnected = tf.matMul(globalAvg, params.fc)\n\n return fullyConnected\n })\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input)\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput))\n )\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n t => t.data()\n )) as Float32Array[]\n\n faceDescriptorTensors.forEach(t => t.dispose())\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0]\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet()\n net.extractWeights(weights)\n return net\n}", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n> (\n sourceObj: TSource,\n descriptor: Float32Array\n): WithFaceDescriptor {\n\n const extension = { descriptor }\n return Object.assign({}, sourceObj, extension)\n}\n\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj['age'] === 'number'\n}\n\nexport function extendWithAge<\n TSource\n> (\n sourceObj: TSource,\n age: number\n): WithAge {\n\n const extension = { age }\n return Object.assign({}, sourceObj, extension)\n}", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj['gender'] === Gender.MALE || obj['gender'] === Gender.FEMALE)\n && isValidProbablitiy(obj['genderProbability'])\n}\n\nexport function extendWithGender<\n TSource\n> (\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number\n): WithGender {\n\n const extension = { gender, genderProbability }\n return Object.assign({}, sourceObj, extension)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n\n constructor() {\n super('SsdMobilenetv1')\n }\n\n public forwardInput(input: NetInput) {\n\n const { params } = this\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D\n const features = mobileNetV1(x, params.mobilenetv1)\n\n const {\n boxPredictions,\n classPredictions\n } = predictionLayer(features.out, features.conv11, params.prediction_layer)\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer)\n })\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {}\n ): Promise {\n\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options)\n\n const netInput = await toNetInput(input)\n\n const {\n boxes: _boxes,\n scores: _scores\n } = this.forwardInput(netInput)\n\n\n // TODO batches\n const boxes = _boxes[0]\n const scores = _scores[0]\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose()\n _scores[i].dispose()\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data())\n\n const iouThreshold = 0.5\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence\n )\n\n const reshapedDims = netInput.getReshapedInputDimensions(0)\n const inputSize = netInput.inputSize as number\n const padX = inputSize / reshapedDims.width\n const padY = inputSize / reshapedDims.height\n\n const boxesData = boxes.arraySync()\n const results = indices\n .map(idx => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2])\n ].map(val => val * padY)\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3])\n ].map(val => val * padX)\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0)\n }\n )\n })\n\n boxes.dispose()\n scores.dispose()\n\n return results\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common/index';\nimport { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1])\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` }\n )\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n }\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }\n )\n\n return { filters, bias }\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): PointwiseConvParams {\n\n const {\n filters,\n bias\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true)\n\n return {\n filters,\n batch_norm_offset: bias\n }\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): MobileNetV1.ConvPairParams {\n\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`)\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`)\n\n return { depthwise_conv, pointwise_conv }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0')\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1')\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2')\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3')\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4')\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5')\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6')\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7')\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8')\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9')\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10')\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11')\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12')\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13')\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13\n }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0')\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1')\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2')\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3')\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4')\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5')\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6')\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7')\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor')\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor')\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor')\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor')\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor')\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor')\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor')\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor')\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor')\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor')\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor')\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor')\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0\n }\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1\n }\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2\n }\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3\n }\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4\n }\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5\n }\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const mobilenetv1 = extractMobilenetV1Params()\n const prediction_layer = extractPredictionLayerParams()\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4]\n )\n const output_layer = {\n extra_dim\n }\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer\n },\n paramMappings\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common/index';\nimport { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1])\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels))\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` }\n )\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n }\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean\n ): ConvParams {\n\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut]\n )\n const bias = tf.tensor1d(extractWeights(channelsOut))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }\n )\n\n return { filters, bias }\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string\n ): PointwiseConvParams {\n\n const {\n filters,\n bias\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true)\n\n return {\n filters,\n batch_norm_offset: bias\n }\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string\n ): MobileNetV1.ConvPairParams {\n\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`)\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`)\n\n return { depthwise_conv, pointwise_conv }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0')\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1')\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2')\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3')\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4')\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5')\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6')\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7')\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8')\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9')\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10')\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11')\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12')\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13')\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13\n }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0')\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1')\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2')\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3')\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4')\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5')\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6')\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7')\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor')\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor')\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor')\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor')\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor')\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor')\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor')\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor')\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor')\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor')\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor')\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor')\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0\n }\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1\n }\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2\n }\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3\n }\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4\n }\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5\n }\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n const mobilenetv1 = extractMobilenetV1Params()\n const prediction_layer = extractPredictionLayerParams()\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4]\n )\n const output_layer = {\n extra_dim\n }\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' })\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer\n },\n paramMappings\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport { BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`)\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`)\n\n return { filters, batch_norm_offset }\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n\n const mappedPrefix = `mobilenetv1/conv_${idx}`\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`)\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`)\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`)\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`)\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`)\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv)\n }\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13)\n }\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`)\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`)\n\n return { filters, bias }\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`\n )\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`\n )\n\n return { box_encoding_predictor, class_predictor }\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5)\n }\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n }\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap\n): { params: NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams\n } = extractorsFactory(weightMap, paramMappings)\n\n const extra_dim = weightMap['Output/extra_dim']\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' })\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`)\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same')\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon\n )\n return tf.clipByValue(out, 0, 6)\n\n })\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1]\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2])\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13\n ]\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx)\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides)\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1])\n if (layerIdx === 11) {\n conv11 = out\n }\n })\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null')\n }\n\n return {\n out,\n conv11: conv11 as any\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.conv2d(x, params.filters, strides, 'same')\n out = tf.add(out, params.batch_norm_offset)\n return tf.clipByValue(out, 0, 6)\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number]\n) {\n return tf.tidy(() => {\n\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same')\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon\n )\n return tf.clipByValue(out, 0, 6)\n\n })\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1]\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2])\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13\n ]\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx)\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides)\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1])\n if (layerIdx === 11) {\n conv11 = out\n }\n })\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null')\n }\n\n return {\n out,\n conv11: conv11 as any\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number\n): number[] {\n\n const numBoxes = boxes.shape[0]\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes\n )\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter(c => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score)\n\n const suppressFunc = (x: number) => x <= iouThreshold ? 1 : 0\n\n const selected: number[] = []\n\n candidates.forEach(c => {\n if (selected.length >= outputSize) {\n return\n }\n const originalScore = c.score\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j])\n if (iou === 0.0) {\n continue\n }\n c.score *= suppressFunc(iou)\n if (c.score <= scoreThreshold) {\n break\n }\n }\n\n if (originalScore === c.score) {\n selected.push(c.boxIndex)\n }\n })\n\n return selected\n}\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync()\n const yminI = Math.min(boxesData[i][0], boxesData[i][2])\n const xminI = Math.min(boxesData[i][1], boxesData[i][3])\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2])\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3])\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2])\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3])\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2])\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3])\n const areaI = (ymaxI - yminI) * (xmaxI - xminI)\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ)\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0\n }\n const intersectionYmin = Math.max(yminI, yminJ)\n const intersectionXmin = Math.max(xminI, xminJ)\n const intersectionYmax = Math.min(ymaxI, ymaxJ)\n const intersectionXmax = Math.min(xmaxI, xmaxJ)\n const intersectionArea =\n Math.max(intersectionYmax - intersectionYmin, 0.0) *\n Math.max(intersectionXmax - intersectionXmin, 0.0)\n return intersectionArea / (areaI + areaJ - intersectionArea)\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]))\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1])\n ]\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2)))\n ]\n\n return {\n sizes,\n centers\n }\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers\n } = getCenterCoordinatesAndSizesLayer(x0)\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]))\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2))\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0])\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2))\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1])\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out)\n ]),\n [1, 0]\n )\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams\n) {\n return tf.tidy(() => {\n\n const batchSize = boxPredictions.shape[0]\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D\n )\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4]\n )\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]))\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number]\n )\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[]\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[]\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch\n }\n\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams\n) {\n return tf.tidy(() => {\n\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1])\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2])\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1])\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2])\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1])\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2])\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1])\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2])\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0)\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1)\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2)\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3)\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4)\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5)\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding\n ], 1) as tf.Tensor4D\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction\n ], 1) as tf.Tensor4D\n\n return {\n boxPredictions,\n classPredictions\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams\n) {\n return tf.tidy(() => {\n\n const batchSize = x.shape[0]\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4]\n )\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3]\n )\n\n return {\n boxPredictionEncoding,\n classPrediction\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams\n) {\n return tf.tidy(() => {\n\n const batchSize = x.shape[0]\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4]\n )\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3]\n )\n\n return {\n boxPredictionEncoding,\n classPrediction\n }\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams\n) {\n return tf.tidy(() => {\n\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1])\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2])\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1])\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2])\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1])\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2])\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1])\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2])\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0)\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1)\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2)\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3)\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4)\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5)\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding\n ], 1) as tf.Tensor4D\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction\n ], 1) as tf.Tensor4D\n\n return {\n boxPredictions,\n classPredictions\n }\n })\n}", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5\n this._maxResults = maxResults || 100\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`)\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`)\n }\n }\n\n get minConfidence(): number { return this._minConfidence }\n get maxResults(): number { return this._maxResults }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n\n constructor() {\n super('SsdMobilenetv1')\n }\n\n public forwardInput(input: NetInput) {\n\n const { params } = this\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference')\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D\n const features = mobileNetV1(x, params.mobilenetv1)\n\n const {\n boxPredictions,\n classPredictions\n } = predictionLayer(features.out, features.conv11, params.prediction_layer)\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer)\n })\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input))\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {}\n ): Promise {\n\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options)\n\n const netInput = await toNetInput(input)\n\n const {\n boxes: _boxes,\n scores: _scores\n } = this.forwardInput(netInput)\n\n\n // TODO batches\n const boxes = _boxes[0]\n const scores = _scores[0]\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose()\n _scores[i].dispose()\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data())\n\n const iouThreshold = 0.5\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence\n )\n\n const reshapedDims = netInput.getReshapedInputDimensions(0)\n const inputSize = netInput.inputSize as number\n const padX = inputSize / reshapedDims.width\n const padY = inputSize / reshapedDims.height\n\n const boxesData = boxes.arraySync()\n const results = indices\n .map(idx => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2])\n ].map(val => val * padY)\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3])\n ].map(val => val * padX)\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0)\n }\n )\n })\n\n boxes.dispose()\n scores.dispose()\n\n return results\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap)\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights)\n }\n}", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1()\n net.extractWeights(weights)\n return net\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights)\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741)\n]\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404]\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model'\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model'", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2')\n validateConfig(config)\n this._config = config\n }\n\n public get config(): TinyYolov2Config {\n return this._config\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0)\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n\n let out = convWithBatchNorm(x, params.conv0)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = convWithBatchNorm(out, params.conv6)\n out = convWithBatchNorm(out, params.conv7)\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference')\n }\n\n return tf.tidy(() => {\n\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams)\n })\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return await this.forwardInput(await toNetInput(input), inputSize)\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams)\n\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput, inputSize)\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0)\n }\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold)\n out.dispose()\n out0.dispose()\n\n const boxes = results.map(res => res.box)\n const scores = results.map(res => res.score)\n const classScores = results.map(res => res.classScore)\n const classNames = results.map(res => this.config.classes[res.label])\n\n const indices = nonMaxSuppression(\n boxes.map(box => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true\n )\n\n const detections = indices.map(idx =>\n new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions\n )\n )\n\n return detections\n }\n\n protected getDefaultModelName(): string {\n return ''\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config)\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES\n\n const numFilters = filterSizes ? filterSizes.length : undefined\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`)\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes)\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number\n ) {\n\n const { width, height } = inputBlobDimensions\n const inputSize = Math.max(width, height)\n const correctionFactorX = inputSize / width\n const correctionFactorY = inputSize / height\n\n const numCells = outputTensor.shape[1]\n const numBoxes = this.config.anchors.length\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize])\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4])\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1])\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0)\n return [boxes, scores, classScores]\n })\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array()\n const boxesData = await boxesTensor.array()\n for (let row = 0; row < numCells; row ++) {\n for (let col = 0; col < numCells; col ++) {\n for (let anchor = 0; anchor < numBoxes; anchor ++) {\n\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY\n const width = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX\n const height = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY\n\n const x = (ctX - (width / 2))\n const y = (ctY - (height / 2))\n\n const pos = { row, col, anchor }\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 }\n\n results.push({\n box: new BoundingBox(x, y, x + width, y + height),\n score: score,\n classScore: score * classScore,\n label,\n ...pos\n })\n }\n }\n }\n }\n\n boxesTensor.dispose()\n scoresTensor.dispose()\n classScoresTensor.dispose()\n\n return results\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number },) {\n const { row, col, anchor } = pos\n const classesData = await classesTensor.array()\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label\n }))\n .reduce((max, curr) => max.classScore > curr.classScore ? max : curr)\n }\n}", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number'\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`)\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`)\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`)\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`)\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`)\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid')\n out = tf.sub(out, params.bn.sub)\n out = tf.mul(out, params.bn.truediv)\n out = tf.add(out, params.conv.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612))\n return tf.add(tf.relu(tf.sub(x, min)), min)\n //return tf.maximum(x, min)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid')\n out = tf.sub(out, params.bn.sub)\n out = tf.mul(out, params.bn.truediv)\n out = tf.add(out, params.conv.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid')\n out = tf.add(out, params.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid')\n out = tf.add(out, params.bias)\n\n return leaky(out)\n })\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n\n const sub = tf.tensor1d(extractWeights(size))\n const truediv = tf.tensor1d(extractWeights(size))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` }\n )\n\n return { sub, truediv }\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`)\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`)\n\n return { conv, bn }\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[]\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0')\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1')\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2')\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3')\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4')\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5')\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0',)\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1')\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2')\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3')\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4')\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5')\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6')\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7')\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings)\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n\n const sub = tf.tensor1d(extractWeights(size))\n const truediv = tf.tensor1d(extractWeights(size))\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` }\n )\n\n return { sub, truediv }\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`)\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`)\n\n return { conv, bn }\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[]\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const {\n extractWeights,\n getRemainingWeights\n } = extractWeightsFactory(weights)\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(extractWeights, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0')\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1')\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2')\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3')\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4')\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5')\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0',)\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1')\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2')\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3')\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4')\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5')\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6')\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7')\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8')\n params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 }\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`)\n }\n\n\n return { params, paramMappings }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings)\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1)\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1)\n return { sub, truediv }\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4)\n const bias = extractWeightEntry(`${prefix}/bias`, 1)\n return { filters, bias }\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`)\n const bn = extractBatchNormParams(`${prefix}/bn`)\n return { conv, bn }\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry)\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n }\n\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n\n const paramMappings: ParamMapping[] = []\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams\n } = extractorsFactory(weightMap, paramMappings)\n\n let params: TinyYolov2NetParams\n\n if (config.withSeparableConvs) {\n const numFilters = (config.filterSizes && config.filterSizes.length || 9)\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8')\n }\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8')\n }\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings)\n\n return { params, paramMappings }\n}", "export enum TinyYolov2SizeType {\n XS = 224,\n SM = 320,\n MD = 416,\n LG = 608\n}\n\nexport interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416\n this._scoreThreshold = scoreThreshold || 0.5\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`)\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)\n }\n }\n\n get inputSize(): number { return this._inputSize }\n get scoreThreshold(): number { return this._scoreThreshold }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2')\n validateConfig(config)\n this._config = config\n }\n\n public get config(): TinyYolov2Config {\n return this._config\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0)\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n\n let out = convWithBatchNorm(x, params.conv0)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = convWithBatchNorm(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = convWithBatchNorm(out, params.conv6)\n out = convWithBatchNorm(out, params.conv7)\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv1)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv2)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv3)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv4)\n out = tf.maxPool(out, [2, 2], [2, 2], 'same')\n out = depthwiseSeparableConv(out, params.conv5)\n out = tf.maxPool(out, [2, 2], [1, 1], 'same')\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out\n\n return convLayer(out, params.conv8, 'valid', false)\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n\n const { params } = this\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference')\n }\n\n return tf.tidy(() => {\n\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams)\n })\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return await this.forwardInput(await toNetInput(input), inputSize)\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams)\n\n const netInput = await toNetInput(input)\n const out = await this.forwardInput(netInput, inputSize)\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0)\n }\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold)\n out.dispose()\n out0.dispose()\n\n const boxes = results.map(res => res.box)\n const scores = results.map(res => res.score)\n const classScores = results.map(res => res.classScore)\n const classNames = results.map(res => this.config.classes[res.label])\n\n const indices = nonMaxSuppression(\n boxes.map(box => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true\n )\n\n const detections = indices.map(idx =>\n new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions\n )\n )\n\n return detections\n }\n\n protected getDefaultModelName(): string {\n return ''\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config)\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES\n\n const numFilters = filterSizes ? filterSizes.length : undefined\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`)\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes)\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number\n ) {\n\n const { width, height } = inputBlobDimensions\n const inputSize = Math.max(width, height)\n const correctionFactorX = inputSize / width\n const correctionFactorY = inputSize / height\n\n const numCells = outputTensor.shape[1]\n const numBoxes = this.config.anchors.length\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize])\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4])\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1])\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0)\n return [boxes, scores, classScores]\n })\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array()\n const boxesData = await boxesTensor.array()\n for (let row = 0; row < numCells; row ++) {\n for (let col = 0; col < numCells; col ++) {\n for (let anchor = 0; anchor < numBoxes; anchor ++) {\n\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY\n const width = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX\n const height = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY\n\n const x = (ctX - (width / 2))\n const y = (ctY - (height / 2))\n\n const pos = { row, col, anchor }\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 }\n\n results.push({\n box: new BoundingBox(x, y, x + width, y + height),\n score: score,\n classScore: score * classScore,\n label,\n ...pos\n })\n }\n }\n }\n }\n\n boxesTensor.dispose()\n scoresTensor.dispose()\n classScoresTensor.dispose()\n\n return results\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number },) {\n const { row, col, anchor } = pos\n const classesData = await classesTensor.array()\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label\n }))\n .reduce((max, curr) => max.classScore > curr.classScore ? max : curr)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n\n constructor(withSeparableConvs: boolean = true) {\n const config = Object.assign({}, {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face']\n },\n withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true\n }\n )\n\n super(config)\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config'\nexport * from './types'\n\nexport { TinyYolov2 }\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs)\n net.extractWeights(weights)\n return net\n}", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}", "export class ComposableTask {\n\n public async then(\n onfulfilled: (value: T) => T | PromiseLike\n ): Promise {\n return onfulfilled(await this.run())\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented')\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected useTinyLandmarkNet: boolean\n ) {\n super()\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n const detections = parentResults.map(res => res.detection)\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections)\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n face => this.landmarkNet.detectLandmarks(face)\n )) as FaceLandmarks68[]\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return parentResults.map((parentResult, i) =>\n extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i])\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection])\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return extendWithFaceLandmarks(parentResult, landmarks)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect\n) {\n const faceBoxes = parentResults.map(parentResult =>\n isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection\n )\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n )\n\n const results = await computeResults(faces)\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return results\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async faces => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment\n )\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect\n) {\n const faceBoxes = parentResults.map(parentResult =>\n isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection\n )\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n )\n\n const results = await computeResults(faces)\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return results\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async faces => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment\n )\n}", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308)\n]\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404]", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512]\n }\n\n super(config)\n }\n\n public get anchors(): Point[] {\n return this.config.anchors\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams)\n return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }))\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model'\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap)\n }\n}", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks5 } from '../classes/FaceLandmarks5';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet()\n}\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise =>\n nets.ssdMobilenetv1.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise =>\n nets.tinyFaceDetector.locateFaces(input, options)\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise =>\n nets.tinyYolov2.locateFaces(input, options)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise =>\n nets.faceLandmark68Net.detectLandmarks(input)\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise =>\n nets.faceLandmark68TinyNet.detectLandmarks(input)\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise =>\n nets.faceRecognitionNet.computeFaceDescriptor(input)\n\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise =>\n nets.faceExpressionNet.predictExpressions(input)\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise =>\n nets.ageGenderNet.predictAgeAndGender(input)\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url)\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url)\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url)\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url)\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url)\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url)\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url)\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url)\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model\nexport const locateFaces = ssdMobilenetv1\nexport const detectLandmarks = detectFaceLandmarks", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.faceExpressionNet.predictExpressions(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i])\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithFaceExpressions(parentResult, faceExpressions)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input)\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected extractedFaces?: Array\n ) {\n super()\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n\n public async run(): Promise>[]> {\n\n const parentResults = await this.parentTask\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async faces => await Promise.all(faces.map(\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise\n )),\n this.extractedFaces\n )\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i]\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n })\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n\n public async run(): Promise> | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces\n )\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input)\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput\n ) {\n super()\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n faces => Promise.all(faces.map(face =>\n nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise\n )),\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor))\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n face => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true })\n )\n\n return extendWithFaceDescriptor(parentResult, descriptor)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n protected parentTask: ComposableTask | Promise,\n protected input: TNetInput,\n protected useTinyLandmarkNet: boolean\n ) {\n super()\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n\n public async run(): Promise[]> {\n\n const parentResults = await this.parentTask\n const detections = parentResults.map(res => res.detection)\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections)\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n face => this.landmarkNet.detectLandmarks(face)\n )) as FaceLandmarks68[]\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return parentResults.map((parentResult, i) =>\n extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i])\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input)\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n\n public async run(): Promise | undefined> {\n\n const parentResult = await this.parentTask\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection])\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68\n\n faces.forEach(f => f instanceof tf.Tensor && f.dispose())\n\n return extendWithFaceLandmarks(parentResult, landmarks)\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input)\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input)\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input)\n }\n}", "import { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n protected input: TNetInput,\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options()\n ) {\n super()\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n\n const { input, options } = this\n\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n options instanceof SsdMobilenetv1Options\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n )\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options')\n }\n\n return faceDetectionFunction(input)\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n return new Promise[]>(async res => {\n const detections = await this.run()\n return res(detections.map(detection => extendWithFaceDetection({}, detection)))\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask (\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input\n )\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach(faceDetection => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n return new Promise | undefined>(async res => {\n const detection = await this.run()\n return res(detection ? extendWithFaceDetection<{}>({}, detection) : undefined)\n })\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet\n )\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input\n )\n }\n}", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options)\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options()\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options)\n}", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number\n): Promise>>[]> {\n console.warn('allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {}\n): Promise>>[]> {\n console.warn('allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead')\n return await detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors()\n}\n\nexport const allFaces = allFacesSsdMobilenetv1\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n\n private _labeledDescriptors: LabeledFaceDescriptors[]\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6\n ) {\n\n this._distanceThreshold = distanceThreshold\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs]\n\n if (!inputArray.length) {\n throw new Error(`FaceRecognizer.constructor - expected atleast one input`)\n }\n\n let count = 1\n const createUniqueLabel = () => `person ${count++}`\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc])\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor])\n }\n\n throw new Error(`FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>`)\n })\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors }\n public get distanceThreshold(): number { return this._distanceThreshold }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map(d => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1)\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors)\n ))\n .reduce((best, curr) => best.distance < curr.distance ? best : curr)\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor)\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance)\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON())\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n\n}", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector()\n net.extractWeights(weights)\n return net\n}", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index'\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nimport * as pkg from '../package.json';\nconst node = (typeof process !== 'undefined');\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n"], - "mappings": "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", + "sources": ["../src/tfjs/tf-node.js", "../src/env/isNodejs.ts", "../src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/NetInput.ts", "../src/dom/imageToSquare.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/dom/loadWeightMap.ts", "../src/common/getModelUris.ts", "../src/dom/matchDimensions.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/NeuralNetwork.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/depthwiseSeparableConv.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/types.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/xception/TinyXception.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts"], + "sourcesContent": ["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable node/no-unpublished-import */\n\nexport * from '@tensorflow/tfjs-node';\n", "export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "import * as tf from '../dist/tfjs.esm.js';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../dist/tfjs.esm.js';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n\n protected _params: TNetParams | undefined = undefined\n protected _paramMappings: ParamMapping[] = []\n\n constructor(protected _name: string) {\n }\n\n public get params(): TNetParams | undefined { return this._params }\n public get paramMappings(): ParamMapping[] { return this._paramMappings }\n public get isLoaded(): boolean { return !!this.params }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n return obj[objProp]\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath)\n obj[objProp].dispose()\n obj[objProp] = tensor\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath)\n }))\n }\n\n public getTrainableParams() {\n return this.getParamList().filter(param => param.tensor instanceof tf.Variable)\n }\n\n public getFrozenParams() {\n return this.getParamList().filter(param => !(param.tensor instanceof tf.Variable))\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable())\n })\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync())\n variable.dispose()\n this.reassignParamFromPath(path, tensor)\n })\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach(param => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`)\n }\n param.tensor.dispose()\n })\n this._params = undefined\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr))\n )\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl)\n return\n }\n\n await this.loadFromUri(weightsOrUrl)\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`)\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName())\n this.loadFromWeightMap(weightMap)\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`)\n }\n\n const { readFile } = env.getEnv()\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName())\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map(filePath => readFile(filePath).then(buf => buf.buffer))\n )\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n const manifest = JSON.parse((await readFile(manifestUri)).toString())\n const weightMap = await loadWeights(manifest, modelBaseUri)\n\n this.loadFromWeightMap(weightMap)\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params\n } = this.extractParamsFromWeigthMap(weightMap)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params\n } = this.extractParams(weights)\n\n this._paramMappings = paramMappings\n this._params = params\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error(`traversePropertyPath - model has no loaded params`)\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`)\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] }\n }, { nextObj: this.params })\n\n const { obj, objProp } = result\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`)\n }\n\n return { obj, objProp }\n }\n\n protected abstract getDefaultModelName(): string\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length)\n throw new Error('euclideanDistance: arr1.length !== arr2.length')\n\n const desc1 = Array.from(arr1)\n const desc2 = Array.from(arr2)\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + Math.pow(diff, 2), 0)\n )\n}", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n\n const { width, height } = new Dimensions(dimensions.width, dimensions.height)\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`)\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height)\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height))\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height)\n }\n\n return results\n}"], + "mappings": ";;;;;;;i6DAGA,cAAA,SAAc,YAAA,qCCHd,6FAAO,qBACL,MAAO,OAAO,SAAW,UACpB,IACA,MAAO,UAAW,aAGlB,MAAO,UAAY,aAAe,CAAC,CAAC,QAAQ,WCNnD,46IAAA,IAAA,KAAoB,+BCApB,+bCEO,qBACL,oBAEoB,IAUpB,GARA,IAAI,YAEJ,OAAO,MAAM,GAAG,QAAQ,EAAG,EAAG,cAC5B,SAAa,OAAO,SACpB,IAAI,OAAO,KAAK,EAAG,KAAK,GACxB,IAAI,OAAO,EAAG,KAGZ,UACF,SAAa,OAAO,OAAO,OAAS,MACzB,OAAO,GAClB,GAAI,CAAC,MAAQ,CAAC,GACZ,OAGF,IAAI,OAAO,KAAK,EAAG,KAAK,GACxB,IAAI,OAAO,GAAG,EAAG,GAAG,GAGtB,IAAI,SC1BN,IAAA,ibAAA,IAAA,GAAoB,+BCApB,iBAYE,0BACE,GAAI,CAAC,cAAc,QAAU,CAAC,cAAc,QAC1C,KAAM,IAAI,OAAM,wFAAwF,KAAK,UAAU,CAAE,MAAO,YAGlI,KAAK,OAAS,MACd,KAAK,QAAU,UAGN,SAAkB,MAAO,MAAK,UAE9B,UAAmB,MAAO,MAAK,QAEnC,UACL,MAAO,IAAI,YAAW,EAAI,KAAK,MAAO,EAAI,KAAK,UDrB5C,kBAAkB,aACvB,MAAO,mBAAqB,YAAU,QAAO,MAAM,SAAW,IAGzD,6BACL,MAAO,UAAS,QAAQ,GAGnB,6BACL,MAAO,UAAS,QAAQ,GAGnB,6BACL,MAAO,UAAS,QAAQ,GAGnB,6BACL,MAAO,UAAS,QAAQ,GAGnB,sBACL,MAAO,KAAM,IAAM,EAGd,qBACL,MAAO,KAAM,IAAM,EAGd,wBAA2C,GAChD,MAAU,IAAM,KAChB,MAAO,MAAK,MAAM,IAAM,GAAK,EAGxB,2BACL,MAAO,MAAO,IAAI,OAAS,IAAI,OAG1B,oCAAqC,MAAO,mBACjD,WAAc,UAAY,KAAK,IAAI,OAAQ,OAC3C,MAAO,IAAI,YAAW,KAAK,MAAM,MAAQ,QAAQ,KAAK,MAAM,OAAS,SAGhE,6BACL,MAAO,KAAI,OAAO,UAAa,IAAI,IAAI,IAAK,GAAI,OAAM,EAAG,IACtD,IAAI,GAAI,OAAM,IAAI,OAAQ,IAAI,SAG5B,+BACL,MAAO,OAAM,KAAK,KAAK,GAAG,IAAI,OAAU,MAAS,EAAI,MAGhD,4BAEL,MAAO,CAAC,CAAC,KAAQ,MAAQ,UAAc,MAAQ,WAAc,CAAC,OAAO,MAAM,MAAQ,MAAQ,EAGtF,iCACL,MAAO,eAAc,MAAQ,KAAO,GAAK,KAAO,EE9DlD,IAAA,YAUE,iBACE,KAAK,GAAK,EACV,KAAK,GAAK,KAGR,KAAc,MAAO,MAAK,MAE1B,KAAc,MAAO,MAAK,GAEvB,QACL,MAAO,IAAI,OAAM,KAAK,EAAI,GAAG,EAAG,KAAK,EAAI,GAAG,GAGvC,QACL,MAAO,IAAI,OAAM,KAAK,EAAI,GAAG,EAAG,KAAK,EAAI,GAAG,GAGvC,QACL,MAAO,IAAI,OAAM,KAAK,EAAI,GAAG,EAAG,KAAK,EAAI,GAAG,GAGvC,QACL,MAAO,IAAI,OAAM,KAAK,EAAI,GAAG,EAAG,KAAK,EAAI,GAAG,GAGvC,MACL,MAAO,IAAI,OAAM,KAAK,IAAI,KAAK,GAAI,KAAK,IAAI,KAAK,IAG5C,YACL,MAAO,MAAK,KAAM,KAAK,GAAK,EAAM,KAAK,GAAK,GAGvC,QACL,MAAO,IAAI,OAAM,KAAK,MAAM,KAAK,GAAI,KAAK,MAAM,KAAK,MC5CzD,gBAOgB,cACZ,MAAO,CAAC,CAAC,MAAQ,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,QAAQ,MAAM,qBAGrD,qDAA8E,IAC1F,GAAI,CAAC,IAAI,OAAO,KACd,KAAM,IAAI,OAAM,GAAG,yBAAyB,KAAK,UAAU,6DAG7D,GAAI,CAAC,yBAA4B,KAAI,MAAQ,GAAK,IAAI,OAAS,GAC7D,KAAM,IAAI,OAAM,GAAG,mBAAmB,IAAI,sBAAsB,IAAI,oCAYxE,yCAA2E,IACzE,QAAa,MAAQ,UAEN,CAAC,IAAI,KAAM,IAAI,IAAK,IAAI,MAAO,IAAI,QAAQ,MAAM,sBACjD,CAAC,IAAI,EAAG,IAAI,EAAG,IAAI,MAAO,IAAI,QAAQ,MAAM,eAE3D,GAAI,CAAC,QAAU,CAAC,OACd,KAAM,IAAI,OAAM,2EAA2E,KAAK,UAAU,QAG5G,sBAA8B,OAC1B,CAAC,IAAI,EAAG,IAAI,EAAG,IAAI,MAAO,IAAI,QAC9B,CAAC,IAAI,KAAM,IAAI,IAAK,IAAI,MAAQ,IAAI,KAAM,IAAI,OAAS,IAAI,KAE/D,IAAI,iBAAiB,CACnB,EAAG,EAAG,MAAO,QACZ,kBAAmB,yBAEtB,KAAK,GAAK,EACV,KAAK,GAAK,EACV,KAAK,OAAS,MACd,KAAK,QAAU,UAGN,KAAc,MAAO,MAAK,MAE1B,KAAc,MAAO,MAAK,MAE1B,SAAkB,MAAO,MAAK,UAE9B,UAAmB,MAAO,MAAK,WAE/B,QAAiB,MAAO,MAAK,KAE7B,OAAgB,MAAO,MAAK,KAE5B,SAAkB,MAAO,MAAK,EAAI,KAAK,SAEvC,UAAmB,MAAO,MAAK,EAAI,KAAK,UAExC,QAAiB,MAAO,MAAK,MAAQ,KAAK,UAE1C,WAAmB,MAAO,IAAI,OAAM,KAAK,KAAM,KAAK,QAEpD,YAAoB,MAAO,IAAI,OAAM,KAAK,MAAO,KAAK,QAEtD,cAAsB,MAAO,IAAI,OAAM,KAAK,KAAM,KAAK,WAEvD,eAAuB,MAAO,IAAI,OAAM,KAAK,MAAO,KAAK,QAE7D,QACL,sBAA8B,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,QAC7D,IAAI,KAAS,KAAK,MAAM,MAC3B,MAAO,IAAI,KAAI,CACb,EAAG,EAAG,MAAO,SAIV,QACL,sBAA8B,CAAC,KAAK,EAAG,KAAK,EAAG,KAAK,MAAO,KAAK,QAC7D,IAAI,KAAS,KAAK,MAAM,MAC3B,MAAO,IAAI,KAAI,CACb,EAAG,EAAG,MAAO,SAIV,WACL,IACE,EAAG,EAAG,MAAO,QACX,UACS,KAAK,IAAI,MAAQ,QAC9B,MAAI,OAAQ,QACV,IAAM,KAAO,EACb,OAAS,MAEX,AAAI,OAAS,OACX,IAAM,KAAO,EACb,QAAU,MAGL,GAAI,KAAI,CACb,EAAG,EAAG,MAAO,SAIV,WACL,WAAe,aAAa,GAAM,EAAkB,MAAQ,SAC7C,aAAa,GAAM,EAAkB,OAAS,EAC7D,MAAO,IAAI,KAAI,CACb,EAAG,KAAK,EAAI,OACZ,EAAG,KAAK,EAAI,OACZ,MAAO,KAAK,MAAQ,OACpB,OAAQ,KAAK,OAAS,SAInB,eACL,sBAA8B,CAC5B,KAAK,EAAK,KAAO,EACjB,KAAK,EAAK,KAAO,EACjB,KAAK,MAAQ,KACb,KAAK,OAAS,MAEhB,MAAO,IAAI,KAAI,CACb,EAAG,EAAG,MAAO,SAIV,uCACL,IACE,EAAG,EAAG,MAAO,QACX,cACa,KAAK,IAAI,EAAG,YACZ,KAAK,IAAI,EAAG,YAEZ,MAAQ,mBACP,OAAS,sBACN,KAAK,IAAI,SAAU,SAAW,wBAC7B,KAAK,IAAI,UAAW,UAAY,UAEtD,MAAQ,IAAI,KAAI,CACd,EAAG,SAAU,EAAG,SAAU,MAAO,aAAc,OAAQ,gBACrD,QAGC,aACL,IAAQ,MAAO,QAAW,OAChB,KAAK,EAAI,KACT,KAAK,EAAI,GAEnB,MAAO,IAAI,KAAI,CACb,EAAG,EAAG,MAAO,SAIV,qCACL,MAAU,KAAK,MAAQ,IACb,KAAK,OAAS,KAEb,KACA,MACD,MACA,IAEF,KAAK,OACL,KAAK,OACJ,KAAK,SACL,KAAK,OAEd,MAAI,IAAK,YACP,KAAM,CAAC,GAAK,WAAa,EACzB,GAAK,YAEP,AAAI,GAAK,aACP,KAAM,CAAC,GAAK,YAAc,EAC1B,GAAK,aAEP,AAAI,EAAI,GACN,KAAM,EAAI,EACV,EAAI,GAEN,AAAI,EAAI,GACN,KAAM,EAAI,EACV,EAAI,GAGC,CACL,GAAI,IAAK,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAIhC,kBACL,MAAO,IAAI,KAAI,CACb,KAAM,KAAK,KAAQ,OAAO,KAAO,KAAK,MACtC,IAAK,KAAK,IAAO,OAAO,IAAM,KAAK,OACnC,MAAO,KAAK,MAAS,OAAO,MAAQ,KAAK,MACzC,OAAQ,KAAK,OAAU,OAAO,OAAS,KAAK,SAC3C,WAAW,UC9MlB,yBASiC,KAC/B,0DAAyG,IACvG,MAAM,CACJ,KAAM,IAAK,MAAO,QACjB,2BCbP,IAAA,sBAeE,8DAOE,KAAK,WAAa,GAAI,YAAW,UAAU,MAAO,UAAU,QAC5D,KAAK,OAAS,MACd,KAAK,YAAc,WACnB,KAAK,WAAa,UAClB,KAAK,KAAO,GAAI,KAAI,aAAa,QAAQ,KAAK,eAGrC,SAAkB,MAAO,MAAK,UAE9B,cAAuB,MAAO,MAAK,eAEnC,aAAsB,MAAO,MAAK,cAElC,OAAa,MAAO,MAAK,QAEzB,aAA0B,MAAO,MAAK,cAEtC,cAAuB,MAAO,MAAK,UAAU,SAE7C,eAAwB,MAAO,MAAK,UAAU,UAE9C,eAAqB,MAAO,IAAI,KAAI,KAAK,MAAM,QAAQ,KAAK,UAAU,WAE1E,sBACL,MAAO,IAAI,iBACT,KAAK,MACL,KAAK,WACL,KAAK,UACL,KAAK,YACL,CAAE,MAAO,WCnDf,2BAUmC,iBACjC,yCAKE,MAAM,MAAO,MAAO,GAAI,YAAa,WAGhC,sBACL,IAAQ,MAAO,YAAa,WAAc,MAAM,QAAQ,MAAO,QAC/D,MAAO,IAAI,eAAc,MAAO,YAAa,aCnB1C,aAAa,gBAAuC,IACzD,UAAc,KAAK,IAAI,EAAK,KAAK,IAAI,KAAK,MAAO,KAAK,OAAS,KAAK,IAAI,KAAK,KAAM,KAAK,cACzE,KAAK,IAAI,EAAK,KAAK,IAAI,KAAK,OAAQ,KAAK,QAAU,KAAK,IAAI,KAAK,IAAK,KAAK,mBACrE,MAAQ,OAE7B,MAAO,OACH,aAAgB,MAAK,KAAO,KAAK,KAAO,cACxC,aAAe,KAAK,IAAI,KAAK,KAAM,KAAK,MCPvC,iBAAiB,KACtB,OAAW,IAAI,IAAI,IAAQ,GAAG,MACnB,IAAI,IAAI,IAAQ,GAAG,QACjB,GAAG,OAAO,SAAa,EAAI,IAAM,EAAI,IAAM,eAC3C,GAAG,OAAO,SAAa,EAAI,IAAM,EAAI,IAAM,eAC3C,GAAG,OAAO,SAAa,IAAM,EAAI,EAAI,IAAM,QAC3C,GAAG,OAAO,SAAa,IAAM,EAAI,EAAI,IAAM,GAExD,MAAO,IAAI,aAAY,KAAM,KAAM,KAAM,MCPpC,2BACL,gCAGiB,IAEjB,yBAA2B,OACxB,IAAI,kBAAsB,EAAE,MAAO,YACnC,KAAK,SAAY,GAAG,MAAQ,GAAG,OAC/B,IAAI,GAAO,EAAE,eAEO,GAEvB,KAAO,qBAAqB,OAAS,IACnC,SAAa,qBAAqB,MAClC,KAAK,KAAK,MAEV,YAAgB,6BAEU,GAC1B,UAAa,EAAG,EAAI,QAAQ,OAAQ,KAClC,QAAY,QAAQ,WAEJ,MAAM,aACP,MAAM,KAErB,QAAQ,KAAK,IAAI,QAAS,OAAQ,QAGpC,qBAAuB,qBAAqB,OAC1C,OAAU,QAAQ,IAAM,cAI5B,MAAO,MCrCT,IAAA,IAAoB,+BAEb,8BACL,MAAO,AAAG,UAAK,KACb,WAAkB,cACJ,AAAG,SAAK,CAAC,GAAG,EAAE,MAAM,MAAM,EAAG,GAAI,GAAI,EAAG,iBACxC,AAAG,SAAK,CAAC,GAAG,EAAE,MAAM,MAAM,EAAG,GAAI,GAAI,EAAG,iBACxC,AAAG,SAAK,CAAC,GAAG,EAAE,MAAM,MAAM,EAAG,GAAI,GAAI,EAAG,mBACtC,AAAG,WAAO,CAAC,MAAO,MAAO,OAAQ,GAEjD,MAAO,AAAG,SAAI,EAAG,WCVrB,IAAA,IAAoB,+BAUb,6CAEoB,IAEzB,MAAO,AAAG,UAAK,KACb,kBAAwB,UAAU,MAAM,MAAM,GAC9C,GAAI,SAAW,MACb,MAAO,WAGT,YAAgB,KAAK,IAAI,OAAS,qBACZ,KAAK,MAAM,QAAW,eAAgB,GAAM,gBAC9C,OAAS,MAAQ,EAAI,sBAEb,qBAC1B,uBAA2B,UAAU,MAAM,QAC3C,0BAAmB,aAAe,mBAC3B,AAAG,SAAK,mBAAoB,EAAG,gCAGZ,oBAAoB,sCACjB,QAAW,oBAAoB,MAAM,kCAEvC,eAAiB,uBAC1C,oBAAoB,wBACpB,oBAEmB,CACrB,qBACA,UACA,qBAEC,OAAO,GAAO,CAAC,CAAC,GAEhB,IAAI,GAAkB,AAAG,SAAK,EAAG,YACpC,MAAO,AAAG,YAAO,eAAgB,eC7C9B,sBAAsB,YAC3B,UAAc,WAAW,QACzB,UAAa,MAAM,OAAS,EAAG,EAAI,EAAG,KACpC,MAAU,KAAK,MAAM,KAAK,SAAY,GAAI,MAChC,MAAM,GAChB,MAAM,GAAK,MAAM,GACjB,MAAM,GAAK,EAEb,MAAO,OCDF,iBAAiB,GACtB,MAAO,GAAK,GAAI,KAAK,IAAI,CAAC,IAGrB,2BACL,MAAO,MAAK,IAAI,EAAK,GAAI,ICZ3B,IAAA,kBAS0B,KACxB,qDAAoG,IAClG,MAAM,CACJ,EAAG,EAAG,MAAO,QACZ,2BCHD,KAAO,QACA,aACI,kBAZjB,MA0BE,wDAGiB,GAAI,OAAM,EAAG,IAE5B,IAAQ,MAAO,QAAW,QAC1B,KAAK,SAAW,GAAI,YAAW,MAAO,QACtC,KAAK,OAAS,MACd,KAAK,WAAa,8BAA8B,IAC9C,IAAQ,GAAG,IAAI,GAAI,OAAM,MAAO,SAAS,IAAI,WAItC,SAAiB,MAAO,IAAI,OAAM,KAAK,OAAO,EAAG,KAAK,OAAO,MAE7D,cAAuB,MAAO,MAAK,SAAS,SAE5C,eAAwB,MAAO,MAAK,SAAS,UAE7C,aAAuB,MAAO,MAAK,cAEnC,qBACT,MAAO,MAAK,WAAW,IACrB,IAAQ,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAI,OAAM,KAAK,WAAY,KAAK,eAI7D,sBACL,MAAO,IAAK,MAAK,YACf,KAAK,kBACL,CAAE,MAAO,SAIN,aACL,MAAO,IAAK,MAAK,YACf,KAAK,kBACL,KAAK,SACL,GAAI,OAAM,EAAG,IAIV,iBACL,MAAO,MAAK,QAAQ,GAAG,EAAG,GAAG,GAcxB,wBAE6D,IAElE,GAAI,WACF,QAAY,oBAAqB,eAC7B,UAAU,IAAI,QACd,GAAI,KAAI,WAEZ,MAAO,MAAK,QAAQ,IAAI,EAAG,IAAI,GAAG,MAAM,KAAM,SAGhD,IAAQ,iBAAkB,eAAkB,CAAE,iBAAkB,GAAO,cAAe,MAAQ,SAE9F,MAAI,kBACK,KAAK,YAGP,KAAK,aAAa,eAGnB,YACN,YAAgB,KAAK,sEAEgC,oBACjC,IAAe,YAAY,IAAI,IAAI,2BAC/B,aAAY,eAAiB,YAAY,iBAAmB,OAEvE,KAAK,MAAM,eAAiB,mBAExB,eAAe,WAEtB,KAAK,MAAM,KAAK,IAAI,EAAG,SAAS,EAAK,KAAO,SAC5C,KAAK,MAAM,KAAK,IAAI,EAAG,SAAS,EAAK,KAAO,OAEtD,MAAO,IAAI,MAAK,EAAG,EAAG,KAAK,IAAI,KAAM,KAAK,WAAa,GAAI,KAAK,IAAI,KAAM,KAAK,YAAc,IAGvF,sBACN,QAAY,QAAQ,KAAK,WACzB,MAAO,KAAI,IAAI,IAAI,MAAQ,QAAS,IAAI,OAAS,SAGzC,2BACR,KAAM,IAAI,OAAM,4DC/HpB,IAAA,4BAIoC,eACxB,2BACR,QAAY,KAAK,UACjB,MAAO,CACL,IAAI,GACJ,IAAI,GACJ,eAAe,CAAC,IAAI,GAAI,IAAI,QCVlC,IAAA,6BAIqC,eAC5B,gBACL,MAAO,MAAK,UAAU,MAAM,EAAG,IAG1B,iBACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,kBACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,UACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,aACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,cACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAG3B,WACL,MAAO,MAAK,UAAU,MAAM,GAAI,IAGxB,2BACR,MAAO,CACL,KAAK,aACL,KAAK,cACL,KAAK,YACL,IAAI,kBCtCV,IAAA,gBAYE,4BACE,KAAK,OAAS,MACd,KAAK,UAAY,YAGR,SAAkB,MAAO,MAAK,UAE9B,YAAqB,MAAO,MAAK,UAErC,sBAAiC,IACtC,MAAO,GAAG,KAAK,QAAQ,aAAe,KAAK,MAAM,KAAK,aAAe,OCtBzE,IAAA,wBAKgC,WAChB,qCAGZ,GAFA,IAAI,iBAAiB,IAAK,QAEtB,CAAC,cAAc,IAAI,OACrB,KAAM,IAAI,OAAM,GAAG,qCAAqC,IAAI,yBAMhE,uBACE,MAAM,KACN,KAAK,OAAS,SAGL,SAAkB,MAAO,MAAK,SCrB3C,IAAA,6BAKE,+BACE,GAAI,CAAE,OAAO,QAAU,UACrB,KAAM,IAAI,OAAM,sEAGlB,GAAI,CAAC,MAAM,QAAQ,cAAgB,YAAY,KAAK,MAAU,CAAE,gBAAgB,gBAC9E,KAAM,IAAI,OAAM,4FAGlB,KAAK,OAAS,MACd,KAAK,aAAe,eAGX,SAAkB,MAAO,MAAK,UAE9B,eAAgC,MAAO,MAAK,aAEhD,SACL,MAAO,CACL,MAAO,KAAK,MACZ,YAAa,KAAK,YAAY,IAAI,GAAO,MAAM,KAAK,WAI1C,gBACZ,gBAAoB,KAAK,YAAY,IAAI,GAAY,GAAI,cAAa,IACtE,MAAO,IAAI,wBAAuB,KAAK,MAAO,eC/BlD,IAAA,0BAKkC,kBAClB,uCAGZ,GAFA,WAAW,wBAAwB,IAAK,QAGtC,CAAC,mBAAmB,IAAI,QACrB,CAAC,mBAAmB,IAAI,YAE3B,KAAM,IAAI,OAAM,GAAG,uCAAuC,IAAI,eAAe,IAAI,6CAQrF,wCACE,MAAM,IAAK,OACX,KAAK,OAAS,MACd,KAAK,YAAc,cAGV,SAAkB,MAAO,MAAK,UAE9B,cAAuB,MAAO,MAAK,cCvBzC,6BAA6B,KAClC,MAAO,KAAI,oBAAqB,eAG3B,sDAML,cAAkB,CAAE,WACpB,MAAO,IAAK,aAAc,WCfrB,4BACL,IAAM,MAAQ,OAAO,MACrB,GAAI,CAAC,MAAO,KAAM,IAAI,OAAM,gEAE5B,aAAiB,KACf,KAAM,IAAI,OAAM,gEAGlB,MAAO,CACL,OAAQ,kBACR,yBACA,MAAO,iBACP,UACA,MAAO,iBACP,oBAAqB,IAAM,SAAS,cAAc,UAClD,mBAAoB,IAAM,SAAS,cAAc,OACjD,MACA,UCjBG,0BAA0B,IAC/B,mBAAqB,GAErB,GAAI,CAAC,GACH,IAEE,GAAa,yBAEb,eAAiB,IAAI,WAIzB,aAAiB,GACb,UAAsB,GAAI,SAAgB,mBAC1C,GAAG,SAAS,SAAU,cAA+B,IAAM,OAAO,KAAO,QAAQ,WAEjF,KACA,KAAM,IAAI,OAAM,qEAAqE,mBAGzF,MAAO,CACL,UCnBG,2BAEL,IAAM,OAAS,OAAO,QAAa,OAAO,wBAC5B,OAAO,OAAS,OAAO,qCAET,KAC1B,GAAI,OAAQ,MAAO,IAAI,QACvB,KAAM,IAAI,OAAM,kGAGS,KACzB,GAAI,MAAO,MAAO,IAAI,OACtB,KAAM,IAAI,OAAM,mFAGJ,OAAO,iBAGF,mBAEnB,MAAO,CACL,OAAQ,QAAU,QAClB,yBAA0B,OAAO,0BAA4B,QAC7D,MAAO,OAAS,QAChB,UAAW,OAAO,WAAa,QAC/B,MAAO,OAAO,kBAAoB,QAClC,oBACA,mBACA,SACG,YCjCA,qBACL,MAAO,OAAO,SAAW,UACpB,MAAO,WAAa,aACpB,MAAO,mBAAqB,aAC5B,MAAO,oBAAsB,aAC7B,MAAO,mBAAqB,aAC5B,MAAO,YAAc,aACrB,MAAO,2BAA6B,YCH3C,IAAA,SAAyB,2CAKzB,kBACE,GAAI,CAAC,YACH,KAAM,IAAI,OAAM,yEAElB,MAAO,aAGT,uBACE,YAAc,MAGhB,sBAGE,MAAI,aAAoB,OAAO,oBAC3B,oBAAmB,OAAO,mBACvB,KAGT,4BAKE,GAJA,AAAK,aACH,aAGE,CAAC,YACH,KAAM,IAAI,OAAM,8EAGlB,IAAQ,OAAS,YAAY,OAAQ,MAAQ,YAAY,OAAU,MACnE,YAAY,OAAS,OACrB,YAAY,MAAQ,MACpB,YAAY,oBAAsB,MAAI,qBAAwB,KAAM,GAAI,SACxE,YAAY,mBAAqB,MAAI,oBAAuB,KAAM,GAAI,QAEtE,YAAY,UAAY,MAAI,WAAa,YAAY,UACrD,YAAY,MAAQ,MAAI,OAAS,YAAY,MAC7C,YAAY,MAAQ,MAAI,OAAS,YAAY,MAC7C,YAAY,SAAW,MAAI,UAAY,YAAY,SAG9C,QAAY,CACjB,OACA,OACA,WACA,iBACA,iBACA,gBACA,YACA,UACA,4BAGF,aC3DO,sBAAsB,KAC3B,MAAI,CAAC,IAAI,YAAc,MAAO,MAAQ,SAC7B,SAAS,eAAe,KAE1B,ICHF,6BAA6B,WAClC,IAAQ,OAAQ,oDAA6B,IAAI,SAEjD,GAAI,oBAAqB,2BACvB,MAAO,WAGT,WAAe,aAAa,WAE5B,GAAI,CAAE,kBAAkB,SACtB,KAAM,IAAI,OAAM,kEAGlB,QAAY,OAAO,WAAW,MAC9B,GAAI,CAAC,IACH,KAAM,IAAI,OAAM,gDAGlB,MAAO,KCfF,IAAK,eAAL,2BAEL,yBAAW,WAEX,0BAAY,YAEZ,4BAAc,cAEd,6BAAe,iBARL,qCANZ,+BAuCE,oBAA6C,IAC3C,IACE,eAAgB,gBAAiB,UAAW,SAAU,UAAW,SAC/D,QACJ,KAAK,eAAiB,gBAAkB,eAAe,SACvD,KAAK,gBAAkB,iBAAmB,qBAC1C,KAAK,UAAY,WAAa,yBAC9B,KAAK,SAAW,UAAY,GAC5B,KAAK,UAAY,WAAa,UAC9B,KAAK,QAAU,SAAW,kBAhD9B,MA2DE,gCAGmC,IAGjC,KAAK,KAAO,MAAO,OAAS,SACxB,CAAC,MACA,eAAgB,eAAgB,KAAK,KAAO,KACjD,KAAK,OAAS,OACd,KAAK,QAAU,GAAI,sBAAqB,SAG1C,kBACE,IAAQ,SAAY,KAAK,QACzB,MAAO,MAAK,KAAK,IAAI,GAAO,IAAI,YAAY,GAAG,OAAO,OAAO,SAAa,GAAK,GAAK,GAAK,GAAK,GAAM,EAAI,QAG1G,gBACE,IAAQ,SAAU,SAAY,KAAK,QACnC,MAAO,MAAK,KAAK,OAAS,SAAY,EAAI,QAG5C,6BACE,IAAQ,gBAAmB,KAAK,oBACZ,iBAAmB,eAAe,cAAgB,iBAAmB,eAAe,qBACrF,iBAAmB,eAAe,aAAe,iBAAmB,eAAe,4BAE/E,KAAK,aAAa,qBACjB,KAAK,kBAClB,YAAc,KAAK,OAAO,EAAI,eAAiB,KAAK,OAAO,IAC5D,WAAa,KAAK,OAAO,EAAI,gBAAkB,KAAK,OAAO,EAGrE,GAAI,YACF,IAAQ,MAAO,QAAW,gBACb,KAAK,IAAI,KAAK,IAAI,EAAG,MAAQ,gBAAiB,QAC9C,KAAK,IAAI,KAAK,IAAI,EAAG,OAAS,iBAAkB,GAC7D,MAAO,CAAE,EAAG,KAAM,EAAG,MAEvB,MAAO,CAAE,EAAG,GAGd,gBACE,WAAe,aAAa,eAChB,oBAAoB,SAG9B,gBAAiB,UAAW,SAAU,UAAW,SAC/C,KAAK,QAET,IAAI,KAAO,GAAG,cAAc,YAC5B,iBAAqB,KAAK,aAAa,gBACpB,KAAK,gBAExB,IAAI,UAAY,gBAChB,cAAkB,KAAK,aAAa,IAAK,QACzC,IAAI,SAAS,UAAU,EAAG,UAAU,EAAG,aAAc,YAErD,IAAI,UAAY,UAChB,KAAK,KAAK,QAAQ,eAChB,MAAU,QAAU,UAAU,IACpB,QAAU,UAAU,EAAM,GAAI,GAAK,SAC7C,IAAI,SAAS,SAAU,EAAG,OC1HhC,qBAuBE,oBAAuC,IACrC,IACE,SAAU,UAAW,MAAO,kBAC1B,QACJ,KAAK,SAAW,UAAY,qBAC5B,KAAK,UAAY,WAAa,EAC9B,KAAK,MAAQ,MAEb,4BAAgC,CAC9B,eAAgB,eAAe,YAC/B,gBAAiB,KAAK,UAExB,KAAK,iBAAmB,GAAI,sBAAqB,IAAK,2BAA4B,6BAnCtF,MA4CE,wBAE6B,IAE3B,KAAK,IAAM,GAAI,KAAI,KACnB,KAAK,QAAU,GAAI,gBAAe,SAGpC,gBACE,QAAY,oBAAoB,YAExB,SAAU,WAAc,KAAK,SAGnC,EAAG,EAAG,MAAO,QACX,KAAK,IACT,IAAI,YAAc,SAClB,IAAI,UAAY,UAChB,IAAI,WAAW,EAAG,EAAG,MAAO,QAE5B,IAAQ,OAAU,KAAK,QACvB,AAAI,OACF,GAAI,eAAc,CAAC,OAAQ,CAAE,EAAG,EAAK,UAAY,EAAI,GAAK,KAAK,QAAQ,kBAAkB,KAAK,aC1D7F,wBACL,sBAGA,oBAAwB,MAAM,QAAQ,YAAc,WAAa,CAAC,YAElE,gBAAgB,QAAQ,MAEtB,UAAc,cAAe,eACzB,IAAI,MACH,oBAAoB,KAAO,IAAI,UAAU,MAAQ,WAG1C,cAAe,eACvB,IAAI,IACH,oBAAoB,KAAO,IAAI,UAAU,IAAM,GAAI,KAAI,WAE9C,MAAQ,GAAG,MAAM,SAAW,OAC1C,GAAI,SAAQ,IAAK,CAAE,QAAS,KAAK,aC1BrC,IAAA,KAAoB,+BCEb,uBAAuB,OAC5B,IAAQ,MAAO,OAAU,IAAI,SAE7B,MAAQ,iBAAiB,QAAS,MAAM,UAClC,gBAAiB,QAAS,MAAM,YAAc,ECH/C,0BAA0B,OAE/B,MAAO,IAAI,SAAQ,mBACjB,GAAI,gBAAiB,KAAI,SAAS,QAAU,cAAc,OACxD,MAAO,SAAQ,MAGjB,oBACE,GAAI,CAAC,EAAE,cAAe,OAEtB,EAAE,cAAc,oBAAoB,OAAQ,QAC5C,EAAE,cAAc,oBAAoB,QAAS,SAC7C,OAAO,GAGT,mBACE,GAAI,CAAC,EAAE,cAAe,OACtB,EAAE,cAAc,oBAAoB,OAAQ,QAC5C,EAAE,cAAc,oBAAoB,QAAS,SAC7C,QAAQ,GAGV,MAAM,iBAAiB,OAAQ,QAC/B,MAAM,iBAAiB,QAAS,WCxB7B,uBAAuB,KAC5B,MAAO,IAAI,SAAQ,mBACjB,AAAM,cAAe,OAAO,OAAO,GAAI,OAAM,qDAC7C,WAAe,GAAI,YACnB,OAAO,OAAS,KACd,AAAI,MAAO,QAAO,QAAW,UAAU,OAAO,GAAI,OAAM,qEACxD,QAAY,IAAI,SAAS,qBACzB,IAAI,OAAS,IAAM,QAAQ,KAC3B,IAAI,QAAU,OACd,IAAI,IAAM,OAAO,QAEnB,OAAO,QAAU,OACjB,OAAO,cAAc,OCXlB,4BAA4B,OACjC,IAAQ,MAAO,OAAU,IAAI,SAE7B,MAAI,iBAAiB,OACZ,GAAI,YAAW,MAAM,aAAc,MAAM,eAE9C,gBAAiB,OACZ,GAAI,YAAW,MAAM,WAAY,MAAM,aAEzC,GAAI,YAAW,MAAM,MAAO,MAAM,QCNpC,sBAAsB,CAAE,MAAO,SACpC,IAAQ,qBAAwB,IAAI,gBACrB,sBACf,cAAO,MAAQ,MACf,OAAO,OAAS,OACT,OAGF,2CACL,IAAQ,sBAAc,IAAI,SAE1B,GAAI,CAAE,iBAAiB,cAAc,CAAC,cAAc,OAClD,KAAM,IAAI,OAAM,8DAGlB,IAAQ,MAAO,QAAW,MAAQ,mBAAmB,cACtC,aAAa,CAAE,MAAO,SAErC,MAAI,iBAAiB,YACnB,oBAAoB,QAAQ,aAAa,MAAO,EAAG,GAEnD,oBAAoB,QAAQ,UAAU,MAAO,EAAG,EAAG,MAAO,QAErD,OC7BT,IAAA,IAAoB,+BAKpB,mCACE,kBAGA,iBAAqB,QAAU,IAAI,SAAS,iDAEP,UAAU,MAAM,MAAM,WAAW,WAAa,EAAI,eACnE,AAAG,SAAK,IAAM,UAAU,KAAK,OAAQ,MAAO,aAAa,SAC7E,YAAM,AAAG,aAAQ,SAAS,YAAa,cAEvC,YAAY,UAEL,aCfF,wBAAwB,OAC7B,IAAQ,MAAO,OAAQ,OAAU,IAAI,SAErC,MAAO,iBAAiB,QACnB,gBAAiB,SACjB,gBAAiB,OCPxB,IAAA,IAAoB,+BCKb,uBAAuB,4BAAuF,IACnH,IAAQ,MAAO,QAAW,IAAI,SAE9B,GAAI,CAAE,iBAAiB,QAAS,gBAAiB,SAC/C,KAAM,IAAI,OAAM,4EAGlB,SAAa,mBAAmB,cAClB,UAAY,KAAK,IAAI,KAAK,OAAQ,KAAK,aACvC,OAAQ,KAAK,aACZ,OAAQ,KAAK,oBAEP,aAAa,CAAE,MAAO,UAAW,OAAQ,wBAC1C,gBAAiB,QAAS,MAAQ,sBAAsB,cAE7D,KAAK,IAAI,MAAQ,QAAU,KAC/B,aAAe,MAAQ,OAAS,OAAS,KACzC,aAAe,OAAS,MAAQ,OAAS,EACpD,2BAAoB,cAAc,UAAU,YAAa,GAAI,GAAI,MAAO,QAEjE,aDzBT,IAAA,eAyBE,qCAE+B,IAdvB,mBAAkD,GAElD,eAAiC,GAIjC,wBAA8B,GAE9B,sBAA+B,GAQrC,GAAI,CAAC,MAAM,QAAQ,QACjB,KAAM,IAAI,OAAM,4HAA4H,UAG9I,KAAK,mBAAqB,kBAC1B,KAAK,WAAa,OAAO,OAEzB,OAAO,QAAQ,cACb,GAAI,WAAW,QACb,KAAK,cAAc,KAAO,MAC1B,KAAK,iBAAiB,KAAO,MAAM,MACnC,OAGF,GAAI,WAAW,QACb,cAAmB,MAAc,MAAM,GACvC,GAAI,YAAc,EAChB,KAAM,IAAI,OAAM,yCAAyC,sDAG3D,KAAK,cAAc,KAAO,MAC1B,KAAK,iBAAiB,KAAQ,MAAc,MAAM,MAAM,GACxD,OAGF,WAAgB,gBAAyB,KAAI,SAAS,OAAS,MAAQ,sBAAsB,OAC7F,KAAK,UAAU,KAAO,OACtB,KAAK,iBAAiB,KAAO,CAAC,OAAO,OAAQ,OAAO,MAAO,QAIpD,gBACT,MAAO,MAAK,iBAGH,YACT,MAAO,MAAK,aAGH,gBACT,MAAO,MAAK,UAAY,GAAK,KAAK,sBAGzB,aACT,MAAO,MAAK,cAGH,mBACT,MAAO,MAAK,oBAGH,aACT,MAAO,MAAK,cAGH,2BACT,MAAO,OAAM,KAAK,UAAW,EAAG,GAAG,IACjC,cAAiB,KAAK,2BAA2B,WAI9C,mBACL,MAAO,MAAK,SAAS,WAAa,KAAK,aAAa,UAG/C,6BACL,MAAO,MAAK,iBAAiB,UAGxB,yBACL,MAAO,MAAK,iBAAiB,UAAU,GAGlC,wBACL,MAAO,MAAK,iBAAiB,UAAU,GAGlC,qCACL,GAAI,MAAO,MAAK,WAAc,SAC5B,KAAM,IAAI,OAAM,yFAGlB,UAAc,KAAK,cAAc,iBAClB,KAAK,eAAe,UACnC,MAAO,2BAA0B,CAAE,MAAO,QAAU,KAAK,WAYpD,uCAA2D,IAChE,YAAK,WAAa,UAEX,AAAG,SAAK,KACb,iBAAqB,MAAM,KAAK,UAAW,EAAG,GAAG,IAAI,WACnD,UAAc,KAAK,SAAS,UAE5B,GAAI,gBAAoB,aAEtB,cAAgB,WAAW,OAAS,MAAQ,MAAM,aAElD,iBAAY,YAAY,UAAW,gBAEnC,AAAI,WAAU,MAAM,KAAO,WAAa,UAAU,MAAM,KAAO,YAC7D,WAAY,AAAG,UAAM,eAAe,UAAW,CAAC,UAAW,aAGtD,UAAU,KAAK,UAAW,UAAW,GAG9C,GAAI,gBAAiB,KAAI,SAAS,OAChC,MAAO,AAAG,aAAQ,WAAW,cAAc,MAAO,UAAW,iBAG/D,KAAM,IAAI,OAAM,+BAA+B,qGAAqG,uBAIlI,AAAG,UAAM,aAAa,IAAI,GAAO,AAAG,SAAK,EAAG,aAAa,KAAK,KAAK,UAAW,UAAW,UAAW,GAGxH,MAAO,iBE9Ib,0BAAiC,QAC/B,GAAI,iBAAkB,UACpB,MAAO,QAGT,kBAAsB,MAAM,QAAQ,QAChC,OACA,CAAC,QAEL,GAAI,CAAC,cAAc,OACjB,KAAM,IAAI,OAAM,4CAGlB,eAAmB,KAAkB,MAAM,QAAQ,QAAU,mBAAmB,OAAS,cAEtE,cAAc,IAAI,cAErC,kBAAW,QAAQ,YACjB,GAAI,CAAC,eAAe,QAAU,CAAC,WAAW,QAAU,CAAC,WAAW,OAC9D,KAAI,OAAO,eAAc,IAAO,SACxB,GAAI,OAAM,eAAe,WAAW,sEAAsE,cAAc,MAG1H,GAAI,OAAM,eAAe,WAAW,iIAG5C,GAAI,WAAW,QAEb,cAAkB,MAAM,MAAM,GAC9B,GAAI,YAAc,EAChB,KAAM,IAAI,OAAM,eAAe,WAAW,iCAAiC,yDAMjF,KAAM,SAAQ,IACZ,WAAW,IAAI,OAAW,eAAe,QAAU,iBAAiB,SAG/D,GAAI,UAAS,WAAY,MAAM,QAAQ,SCtChD,4BACE,kBAGA,IAAQ,QAAW,IAAI,gBAEV,MAEb,GAAI,CAAE,iBAAiB,UACrB,aAAiB,KAAM,YAAW,OAElC,GAAI,SAAS,UAAY,EACvB,KAAM,IAAI,OAAM,8CAGlB,mBAAuB,SAAS,SAAS,GACzC,OAAS,yBAA0B,QAC/B,eACA,KAAM,qBAAoB,gBAGhC,QAAY,oBAAoB,cAClB,WAAW,IACvB,KAAU,cAAe,eACrB,IAAI,QAAQ,OAAO,MAAO,OAAO,QAAQ,IAAI,QAC7C,KAEH,IAAI,KAAS,IAAI,mBAAmB,OAAO,MAAO,OAAO,SAE5D,MAAO,OAAM,IAAI,EACf,EAAG,EAAG,MAAO,WAEb,YAAgB,aAAa,CAAE,MAAO,SACtC,2BAAoB,SACjB,aAAa,IAAI,aAAa,EAAG,EAAG,MAAO,QAAS,EAAG,GACnD,UCnDX,IAAA,IAAoB,+BAgBpB,kCACE,wBAGA,GAAI,CAAC,WAAW,cAAgB,CAAC,WAAW,aAC1C,KAAM,IAAI,OAAM,6DAGlB,GAAI,WAAW,cAAgB,YAAY,MAAM,GAAK,EACpD,KAAM,IAAI,OAAM,oDAGlB,MAAO,AAAG,UAAK,KACb,oCAA2C,YAAY,MAAM,MAAM,WAAW,aAAe,EAAI,SAEnF,WAAW,IACvB,KAAU,cAAe,eACrB,IAAI,QAAQ,SAAU,WAAW,IACjC,KAEH,IAAI,KAAS,IAAI,mBAAmB,SAAU,wBAE7B,MAAM,IAAI,EAC5B,EAAG,EAAG,MAAO,UACT,AAAG,YAAQ,YAAY,KAAK,UAAW,SAAU,aAAc,CAAC,EAAG,EAAG,GAAI,CAAC,OAAQ,MAAO,eAEhG,MAAO,eCxCX,4BACE,UAIA,IAAQ,OAAU,IAAI,aACV,KAAM,OAAM,IAAK,MAC7B,GAAI,CAAE,KAAI,OAAS,KACjB,KAAM,IAAI,OAAM,qBAAqB,IAAI,WAAW,IAAI,yBAAyB,IAAI,OAEvF,MAAO,KCTT,0BAAiC,KAC/B,QAAY,KAAM,cAAa,UAClB,KAAO,KAAK,OAEzB,GAAI,CAAC,KAAK,KAAK,WAAW,UACxB,KAAM,IAAI,OAAM,wEAAwE,KAAK,kBAAkB,IAAI,OAErH,MAAO,eAAc,MCRvB,yBAAmC,KACjC,MAAQ,MAAM,cAAa,MAAM,OCDnC,+BAAsC,KACpC,MAAO,IAAI,cAAa,KAAO,MAAM,cAAa,MAAM,eCH1D,IAAA,IAAoB,+BCAb,sBAAsB,sBAC3B,4BAAgC,GAAG,yCAEnC,GAAI,CAAC,IACH,MAAO,CACL,aAAc,GACd,YAAa,yBAIjB,GAAI,MAAQ,IACV,MAAO,CACL,aAAc,IACd,YAAa,IAAI,2BAIrB,aAAiB,IAAI,WAAW,WAAa,UAAY,IAAI,WAAW,YAAc,WAAa,GACnG,IAAM,IAAI,QAAQ,SAAU,IAE5B,UAAc,IAAI,MAAM,KAAK,OAAO,GAAO,gBAEtB,IAAI,SAAS,SAC9B,MAAM,MAAM,OAAS,GACrB,qCAEe,SAAY,KAAI,SAAS,SAAW,MAAM,MAAM,EAAG,MAAM,OAAS,GAAK,OAAO,KAAK,KACtG,oBAAe,IAAI,WAAW,KAAO,IAAI,eAAiB,aAEnD,CACL,aACA,YAAa,eAAiB,IAAM,IAAI,eAAiB,GAAG,gBAAgB,gBD1BhF,6BACE,sBAGA,IAAQ,YAAa,cAAiB,aAAa,IAAK,2BACvC,KAAM,WAAuC,aAE9D,MAAO,AAAG,QAAG,YAAY,SAAU,cET9B,yBAAyB,mCAA0E,IACxG,IAAQ,MAAO,QAAW,mBACtB,mBAAmB,WACnB,UACJ,aAAM,MAAQ,MACd,MAAM,OAAS,OACR,CAAE,MAAO,QCTlB,IAAA,KAAoB,+BCApB,IAAoB,+BAApB,oBAYE,mBAAsB,iBAHZ,aAAkC,OAClC,oBAAiC,MAKhC,UAAmC,MAAO,MAAK,WAC/C,iBAAkC,MAAO,MAAK,kBAC9C,YAAsB,MAAO,CAAC,CAAC,KAAK,OAExC,4BACL,IAAQ,IAAK,SAAY,KAAK,qBAAqB,WACnD,MAAO,KAAI,SAGN,yCACL,IAAQ,IAAK,SAAY,KAAK,qBAAqB,WACnD,IAAI,SAAS,UACb,IAAI,SAAW,QAGV,eACL,MAAO,MAAK,eAAe,IAAI,EAAG,aAAiB,EACjD,KAAM,UACN,OAAQ,KAAK,iBAAiB,cAI3B,qBACL,MAAO,MAAK,eAAe,OAAO,OAAS,MAAM,iBAAqB,eAGjE,kBACL,MAAO,MAAK,eAAe,OAAO,OAAS,CAAE,OAAM,iBAAqB,gBAGnE,WACL,KAAK,kBAAkB,QAAQ,EAAG,KAAM,mBACtC,KAAK,sBAAsB,KAAM,QAAO,cAIrC,SACL,KAAK,qBAAqB,QAAQ,EAAG,KAAM,oBACzC,YAAe,AAAG,WAAO,SAAS,YAClC,SAAS,UACT,KAAK,sBAAsB,KAAM,WAI9B,yBAAoC,IACzC,KAAK,eAAe,QAAQ,QAC1B,GAAI,kBAAoB,MAAM,OAAO,WACnC,KAAM,IAAI,OAAM,mDAAmD,MAAM,QAE3E,MAAM,OAAO,YAEf,KAAK,QAAU,OAGV,kBACL,MAAO,IAAI,cACT,KAAK,eACF,IAAI,EAAG,kBAAa,MAAM,KAAK,QAAO,aACtC,OAAO,YAAe,KAAK,OAAO,YAI5B,oBACX,GAAI,uBAAwB,eAC1B,KAAK,eAAe,cACpB,OAGF,KAAM,MAAK,YAAY,mBAGZ,kBACX,GAAI,KAAO,MAAO,MAAQ,SACxB,KAAM,IAAI,OAAM,GAAG,KAAK,0CAG1B,cAAkB,KAAM,eAAc,IAAK,KAAK,uBAChD,KAAK,kBAAkB,gBAGZ,wBACX,GAAI,UAAY,MAAO,WAAa,SAClC,KAAM,IAAI,OAAM,GAAG,KAAK,iDAG1B,IAAQ,UAAa,IAAI,UAEjB,YAAa,cAAiB,aAAa,SAAU,KAAK,4CAErC,WAAyB,QAAQ,IAC5D,UAAU,IAAI,WAAY,SAAS,WAAU,KAAK,KAAO,IAAI,sBAE3C,AAAG,OAAG,qBAAqB,+BAC9B,KAAK,MAAO,MAAM,UAAS,cAAc,sBACxC,KAAM,aAAY,SAAU,cAE9C,KAAK,kBAAkB,WAGlB,6BACL,IACE,cACA,QACE,KAAK,2BAA2B,WAEpC,KAAK,eAAiB,cACtB,KAAK,QAAU,OAGV,wBACL,IACE,cACA,QACE,KAAK,cAAc,SAEvB,KAAK,eAAiB,cACtB,KAAK,QAAU,OAGT,gCACN,GAAI,CAAC,KAAK,OACR,KAAM,IAAI,OAAM,qDAGlB,WAAe,UAAU,MAAM,KAAK,OAAO,iBACzC,GAAI,CAAC,IAAI,QAAQ,eAAe,UAC9B,KAAM,IAAI,OAAM,wDAAwD,sBAAqB,aAG/F,MAAO,CAAE,IAAK,IAAI,QAAS,iBAAS,QAAS,IAAI,QAAQ,YACxD,CAAE,QAAS,KAAK,UAEX,IAAK,SAAY,OACzB,GAAI,CAAC,KAAO,CAAC,SAAW,CAAE,KAAI,kBAAuB,aACnD,KAAM,IAAI,OAAM,8DAA8D,aAGhF,MAAO,CAAE,IAAK,WCxJlB,KAAoB,+BCApB,IAAoB,+BAIb,iDAKL,MAAO,AAAG,UAAK,KACb,QAAU,AAAG,oBAAgB,EAAG,OAAO,iBAAkB,OAAO,iBAAkB,OAAQ,QAC1F,WAAM,AAAG,QAAI,IAAK,OAAO,MAClB,MDNJ,qBACL,gCAEwB,IAExB,MAAO,AAAG,WAAK,KACb,SAAa,AAAG,UACd,aACI,AAAG,SACH,AAAG,YAAO,EAAI,iBAAiB,MAAqB,QAAS,CAAC,EAAG,GAAI,QACrE,iBAAiB,MAAM,MAEvB,uBAAuB,EAAG,iBAAiB,MAA8B,CAAC,EAAG,UAEtE,uBAAuB,KAAM,iBAAiB,MAAO,CAAC,EAAG,QAE1D,AAAG,UAAK,AAAG,SAAI,KAAM,YACpB,uBAAuB,IAAK,iBAAiB,MAAO,CAAC,EAAG,IAErE,MAAO,AAAG,WAAK,AAAG,SAAI,KAAM,AAAG,SAAI,KAAM,UAItC,qDAGmB,eACD,IAEvB,MAAO,AAAG,WAAK,KACb,SAAa,AAAG,UACd,aACI,AAAG,SACH,AAAG,YAAO,EAAI,iBAAiB,MAAqB,QAAS,YAAc,CAAC,EAAG,GAAK,CAAC,EAAG,GAAI,QAC5F,iBAAiB,MAAM,MAEvB,uBAAuB,EAAG,iBAAiB,MAA8B,YAAc,CAAC,EAAG,GAAK,CAAC,EAAG,UAE7F,uBAAuB,KAAM,iBAAiB,MAAO,CAAC,EAAG,QAE1D,AAAG,UAAK,AAAG,SAAI,KAAM,YACpB,uBAAuB,IAAK,iBAAiB,MAAO,CAAC,EAAG,QAEzD,AAAG,UAAK,AAAG,SAAI,KAAM,AAAG,SAAI,KAAM,aACjC,uBAAuB,IAAK,iBAAiB,MAAO,CAAC,EAAG,IAErE,MAAO,AAAG,WAAK,AAAG,SAAI,KAAM,AAAG,SAAI,KAAM,AAAG,SAAI,KAAM,WEpD1D,IAAA,KAAoB,+BAIb,oCAGuB,gBACR,IAEpB,MAAO,AAAG,WAAK,KACb,QAAY,AAAG,SACb,AAAG,YAAO,EAAG,OAAO,QAAS,CAAC,EAAG,GAAI,SACrC,OAAO,MAGT,MAAO,UAAW,AAAG,UAAK,KAAO,MCd9B,oCAAoC,yBACzC,OAAO,KAAK,WAAW,QAAQ,OAC7B,AAAK,cAAc,KAAK,IAAQ,GAAG,eAAiB,OAClD,UAAU,MAAM,YCLtB,IAAA,KAAoB,+BAIb,gEAIL,MAAO,mDAML,YAAgB,AAAG,cACjB,eAAe,WAAa,YAAc,WAAa,YACvD,CAAC,WAAY,WAAY,WAAY,mBAE1B,AAAG,cAAS,eAAe,cAExC,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,sBAGX,CAAE,QAAS,OCzBtB,IAAA,KAAoB,+BAIb,8DAIL,MAAO,wCAKL,eAAmB,AAAG,cAAS,eAAe,WAAa,aAAc,CAAC,WAAY,sBACtE,AAAG,cAAS,eAAe,cAE3C,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,sBAGX,CACL,QAAS,WACT,KAAM,UCvBZ,IAAA,KAAoB,+BCApB,0BAsBE,oDAES,uCAEA,uCAEA,iBDxBJ,2CACL,8BAGA,MAAO,wCACL,qBAAyB,AAAG,cAAS,eAAe,EAAI,EAAI,YAAa,CAAC,EAAG,EAAG,WAAY,qBACnE,AAAG,cAAS,eAAe,WAAa,aAAc,CAAC,EAAG,EAAG,WAAY,mBACrF,AAAG,cAAS,eAAe,cAExC,qBAAc,KACZ,CAAE,UAAW,GAAG,iCAChB,CAAE,UAAW,GAAG,iCAChB,CAAE,UAAW,GAAG,sBAGX,GAAI,qBACT,iBACA,iBACA,OAKC,4DAIL,MAAO,UACL,qBAAyB,mBAAgC,GAAG,0BAA2B,oBAC9D,mBAAgC,GAAG,0BAA2B,QAC1E,mBAAgC,GAAG,cAAe,GAE/D,MAAO,IAAI,qBACT,iBACA,iBACA,OEpCC,mCAAmC,yBACxC,MAAO,sCACL,YAAe,UAAU,cAEzB,GAAI,CAAC,SAAS,QAAQ,WACpB,KAAM,IAAI,OAAM,sBAAsB,+BAA+B,4BAA4B,WAGnG,qBAAc,KACZ,CAAE,aAAc,UAAW,YAAc,eAGpC,SCfJ,+BAA+B,SACpC,qBAAuB,QAEvB,oCACE,QAAY,iBAAiB,MAAM,EAAG,YACtC,wBAAmB,iBAAiB,MAAM,YACnC,IAGT,+BACE,MAAO,kBAGT,MAAO,CACL,eACA,qBCPG,2BAA2B,8BAChC,sBAA0B,yBAAyB,eAAgB,0CAChC,kCAAkC,eAAgB,eAErF,mFAAyH,IACvH,UAAc,aACV,kBAAkB,WAAY,YAAa,EAAG,GAAG,sBACjD,2BAA2B,WAAY,YAAa,GAAG,4BAC7C,2BAA2B,YAAa,YAAa,GAAG,6BACxD,2BAA2B,YAAa,YAAa,GAAG,sBAEtE,MAAO,CAAE,MAAO,MAAO,cAGzB,mFAAyH,IACvH,IAAQ,MAAO,MAAO,cAAU,yBAAyB,WAAY,YAAa,aAAc,oBAClF,2BAA2B,YAAa,YAAa,GAAG,sBAEtE,MAAO,CACL,MAAO,MAAO,aAAO,OAIzB,MAAO,CACL,yBACA,0BC7BG,uBAAuB,SAC5B,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,UAGxB,0BACE,kBAAkB,eAAgB,sBAEvB,yBAAyB,EAAG,GAAI,SAAU,WAC1C,yBAAyB,GAAI,GAAI,iBACjC,yBAAyB,GAAI,IAAK,iBAClC,yBAAyB,IAAK,IAAK,UAElD,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CACN,OAAQ,OAAQ,OAAQ,SCvBvB,+BAA+B,oBACpC,MAAO,UACL,YAAgB,mBAAgC,GAAG,iBAAkB,QACxD,mBAAgC,GAAG,cAAe,GAE/D,MAAO,CAAE,QAAS,OCNf,2BAA2B,yBAChC,uBAA2B,0BAA0B,UAAW,iCAEtC,sBAAsB,+CACb,+BAA+B,oBAElE,sDAA0E,IACxE,UAAc,aACV,kBAAkB,GAAG,gBACrB,2BAA2B,GAAG,sBACpB,2BAA2B,GAAG,uBAC9B,2BAA2B,GAAG,gBAE5C,MAAO,CAAE,MAAO,MAAO,cAGzB,sDAA0E,IACxE,UAAc,aACV,kBAAkB,GAAG,gBACrB,2BAA2B,GAAG,sBACpB,2BAA2B,GAAG,uBAC9B,2BAA2B,GAAG,sBAC9B,2BAA2B,GAAG,gBAE5C,MAAO,CACL,MAAO,MAAO,aAAO,OAIzB,MAAO,CACL,yBACA,0BC7BG,oCACL,WAEA,kBAAsC,IAGpC,0BACE,kBAAkB,UAAW,sBAElB,CACb,OAAQ,yBAAyB,SAAU,IAC3C,OAAQ,yBAAyB,UACjC,OAAQ,yBAAyB,UACjC,OAAQ,yBAAyB,WAGnC,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,ehBxBnB,IAAA,kCAU0C,eACxC,cACE,MAAM,wBAGD,oBACL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,sDAGlB,MAAO,AAAG,WAAK,KACb,gBAAoB,AAAG,UAAK,MAAM,cAAc,IAAK,IAAO,mBAC5C,CAAC,QAAS,QAAS,oBAChB,UAAU,YAAa,SAAS,IAAI,AAAG,YAAO,UAEvD,YAAY,WAAY,OAAO,OAAQ,IACjD,WAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,SAE/B,WAIE,gBACX,MAAO,MAAK,aAAa,KAAM,YAAW,QAGlC,sBACR,MAAO,+BAGC,sCACR,MAAO,4BAA2B,WAG1B,uBACR,MAAO,eAAc,WiBlDzB,KAAoB,+BCApB,KAAoB,+BAIb,uCAIL,MAAO,AAAG,WAAK,IAAM,AAAG,SACtB,AAAG,YAAO,EAAG,OAAO,SACpB,OAAO,OCPJ,wBAAuB,gCAC5B,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,yBAEF,uBAAuB,eAAgB,kBAEpD,gBAAgB,WAAY,YAAa,MAEpD,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CAAE,KCdP,qCACL,WAEA,kBAAsC,sBAEX,0BAA0B,UAAW,eAEhE,iCACE,YAAgB,mBAAmB,GAAG,iBAAkB,QAC3C,mBAAmB,GAAG,cAAe,GAClD,MAAO,CAAE,QAAS,MAGpB,WAAe,CACb,GAAI,gBAAgB,OAGtB,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eCxBZ,4BAA4B,WACjC,wBAA+C,iBACN,GAEzC,cAAO,KAAK,WAAW,QAAQ,MAC7B,QAAY,IAAI,WAAW,MAAQ,cAAgB,oBACnD,IAAI,KAAO,UAAU,OAGhB,CAAE,oBAAqB,eJXhC,IAAA,2BAkBU,eAGR,wCACE,MAAM,OACN,KAAK,sBAAwB,wBAGpB,wBACT,MAAO,MAAK,sBASP,cACL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,GAAG,KAAK,uCAG1B,MAAO,AAAG,WAAK,KACb,uBAA2B,gBAAiB,UACxC,KAAK,qBAAqB,aAAa,OACvC,MACJ,MAAO,qBAAoB,mBAAmB,KAAK,mBAAmB,MAAM,GAAI,IAAK,OAAO,MAIzF,yBAAoC,IACzC,KAAK,qBAAqB,QAAQ,kBAClC,MAAM,QAAQ,kBAGT,8BACL,IAAQ,OAAQ,eAAkB,KAAK,wBAAwB,SAC/D,KAAK,QAAU,OACf,KAAK,eAAiB,cAGjB,iCACL,MAAO,gBAAc,QAAS,KAAK,0BAA2B,KAAK,4BAG3D,sCACR,IAAQ,oBAAqB,eAAkB,mBAAmB,WAElE,YAAK,qBAAqB,kBAAkB,qBAErC,4BAA2B,eAG1B,uBACR,QAAY,KAAK,+BACJ,KAAK,gDACY,KAAO,IAAO,6BAEZ,QAAQ,MAAM,EAAG,QAAQ,OAAS,wCACxC,QAAQ,MAAM,QAAQ,OAAS,sBAEzD,YAAK,qBAAqB,eAAe,yBAClC,KAAK,wBAAwB,qBKnF3B,uBAAyB,CAAC,UAAW,QAAS,MAAO,QAAS,UAAW,YAAa,6BAAnG,MAiBE,2BACE,GAAI,cAAc,SAAW,EAC3B,KAAM,IAAI,OAAM,8EAA8E,cAAc,UAG9G,uBAAuB,QAAQ,mBAC7B,KAAK,YAAc,cAAc,OAIrC,gBACE,MAAO,wBACJ,IAAI,YAAiB,EAAE,WAAY,YAAa,KAAK,eACrD,KAAK,SAAY,GAAG,YAAc,GAAG,e1C9B5C,+BAQuC,eACrC,iCAAyD,GAAI,uBAC3D,MAAM,oBAAqB,sBAGtB,oBACL,MAAO,AAAG,WAAK,IAAM,AAAG,aAAQ,KAAK,OAAO,cAGjC,gBACX,MAAO,MAAK,aAAa,KAAM,YAAW,aAG/B,2BACX,aAAiB,KAAM,YAAW,WACtB,KAAM,MAAK,aAAa,8BACR,KAAM,SAAQ,IAAI,AAAG,aAAQ,KAAK,IAAI,UAChE,SAAa,KAAM,GAAE,OACrB,SAAE,UACK,QAET,IAAI,UAEJ,uBAA2B,oBACxB,IAAI,cAAkB,GAAI,iBAAgB,eAE7C,MAAO,UAAS,aACZ,mBACA,mBAAmB,GAGf,sBACR,MAAO,wBAGC,0BACR,MAAO,KAGC,2BACR,MAAO,K2C1CJ,+BAA+B,KACpC,MAAO,KAAI,sBAAuB,iBAG7B,0DAML,cAAkB,CAAE,aACpB,MAAO,IAAK,aAAc,WCRrB,6BACL,wCAEgB,oBAGhB,yBAA6B,MAAM,QAAQ,iBAAmB,gBAAkB,CAAC,iBAEjF,qBAAqB,QAAQ,IAE3B,SAAa,YAAa,iBACtB,EACC,sBAAsB,GAAK,EAAE,YAAc,OAChD,GAAI,CAAC,KACH,KAAM,IAAI,OAAM,mHAGlB,WAAe,KAAK,iCACK,OAAO,OAAO,WAAe,UAAU,YAAc,sBAE/D,oBAAoB,GAC/B,EAAE,UAAU,IAAI,WACf,iBAAmB,GAAI,OAAM,EAAG,iBAEf,GAAI,eACxB,iBAAiB,IAAI,WAAe,GAAG,UAAU,eAAe,MAAM,UAAU,iBAChF,QAEF,cAAc,KAAK,aCxBhB,6BAA6B,KAClC,MAAO,qBAAoB,MAEtB,IAAI,oBAAwB,gBAE5B,IAAI,6BAAiC,gBAErC,IAAI,sBAA0B,eAG9B,+DAGL,IAAQ,WAAe,UAAU,oBACf,mBAAmB,QAAwB,MAAM,EAAG,MAAM,QAE/D,UAAU,SACf,WAAc,UAAU,sBACZ,GAAI,eAAc,UAAU,UAAU,MAAO,KAAK,QAAQ,UAAU,WAAY,qBAElF,CAChB,UACA,mBACA,aAGF,MAAO,IAAK,aAAc,WCvC5B,IAAA,+BA+BE,oBAAiD,IAC/C,IACE,UAAY,GAAM,WAAa,GAAM,UAAW,UAAW,UAAW,YACpE,QACJ,KAAK,UAAY,UACjB,KAAK,WAAa,WAClB,KAAK,UAAY,WAAa,EAC9B,KAAK,UAAY,WAAa,EAC9B,KAAK,UAAY,WAAa,uBAC9B,KAAK,WAAa,YAAc,2CAxCpC,MAiDE,kCAEuC,IAErC,KAAK,cAAgB,cACrB,KAAK,QAAU,GAAI,0BAAyB,SAG9C,gBACE,QAAY,oBAAoB,YAG9B,UAAW,WAAY,UAAW,UAAW,UAAW,YACtD,KAAK,QAcT,GAZA,AAAI,WAAa,KAAK,wBAAyB,kBAC7C,KAAI,YAAc,UAClB,IAAI,UAAY,UAChB,YAAY,IAAK,KAAK,cAAc,iBACpC,YAAY,IAAK,KAAK,cAAc,kBACpC,YAAY,IAAK,KAAK,cAAc,mBACpC,YAAY,IAAK,KAAK,cAAc,WACpC,YAAY,IAAK,KAAK,cAAc,aAAc,IAClD,YAAY,IAAK,KAAK,cAAc,cAAe,IACnD,YAAY,IAAK,KAAK,cAAc,WAAY,KAG9C,YACF,IAAI,YAAc,WAClB,IAAI,UAAY,WAEhB,cAAkB,KAChB,IAAI,YACJ,IAAI,IAAI,GAAG,EAAG,GAAG,EAAG,UAAW,EAAG,EAAI,KAAK,IAC3C,IAAI,QAEN,KAAK,cAAc,UAAU,QAAQ,cAOpC,oDAIL,uBAA2B,MAAM,QAAQ,eAAiB,cAAgB,CAAC,eAC3E,mBAAmB,QAAQ,IAEzB,cAAkB,YAAa,eAC3B,EACC,oBAAoB,GAAK,EAAE,UAAY,OAC5C,GAAI,CAAC,UACH,KAAM,IAAI,OAAM,gIAGlB,GAAI,mBAAkB,WAAW,KAAK,iCC1G1C,KAAoB,+BCApB,KAAoB,+BCKpB,4BAA2B,8BACzB,sBAA0B,yBAAyB,eAAgB,0CAChC,kCAAkC,eAAgB,eAErF,0EACE,oBAAwB,2BAA2B,WAAY,YAAa,GAAG,gDACvD,2BAA2B,YAAa,YAAa,GAAG,+CACzD,kBAAkB,WAAY,YAAa,EAAG,GAAG,+BAExE,MAAO,CAAE,gBAAiB,gBAAiB,gBAG7C,uDACE,oBAAwB,2BAA2B,SAAU,SAAU,GAAG,gDAClD,2BAA2B,SAAU,SAAU,GAAG,gDAClD,2BAA2B,SAAU,SAAU,GAAG,gCAE1E,MAAO,CAAE,gBAAiB,gBAAiB,iBAG7C,MAAO,CACL,kBACA,2BACA,4BACA,wBAIG,+CACL,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,UAGxB,kBACA,2BACA,4BACA,wBACE,mBAAkB,eAAgB,kCAEX,kBAAkB,EAAG,GAAI,EAAG,mDAClB,4BAA4B,GAAI,GAAI,6DACpC,4BAA4B,GAAI,IAAK,2CAEvD,CACjB,QAAS,mBACT,kBAAmB,6BACnB,kBAAmB,0CAGD,GACpB,MAAM,cAAe,EAAG,GAAG,QAAQ,MACjC,YAAY,cAAc,OAAS,uBAAuB,IAAK,0BAA0B,SAG3F,8BAAkC,4BAA4B,IAAK,IAAK,sDACvC,2BAA2B,IAAK,IAAK,sCAEpD,CAChB,gBAAiB,0BACjB,eAAgB,0BAGlB,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CAAE,WAAY,YAAa,YCjEvC,4BAA2B,yBACzB,uBAA2B,0BAA0B,UAAW,iCAEtC,sBAAsB,+CACb,+BAA+B,oBAElE,mDACE,oBAAwB,2BAA2B,GAAG,gDAC9B,2BAA2B,GAAG,+CAC/B,kBAAkB,GAAG,+BAE5C,MAAO,CAAE,gBAAiB,gBAAiB,gBAG7C,8CACE,oBAAwB,2BAA2B,GAAG,gDAC9B,2BAA2B,GAAG,gDAC9B,2BAA2B,GAAG,gCAEtD,MAAO,CAAE,gBAAiB,gBAAiB,iBAG7C,MAAO,CACL,kBACA,2BACA,4BACA,wBAIG,8DAIL,kBAAsC,IAGpC,kBACA,2BACA,4BACA,wBACE,mBAAkB,UAAW,kCAEN,kBAAkB,mDACR,4BAA4B,6DAC5B,4BAA4B,2CAE9C,CACjB,QAAS,mBACT,kBAAmB,6BACnB,kBAAmB,0CAGD,GACpB,MAAM,cAAe,EAAG,GAAG,QAAQ,MACjC,YAAY,cAAc,OAAS,uBAAuB,0BAA0B,SAGtF,8BAAkC,4BAA4B,sDAC7B,2BAA2B,sCAE1C,CAChB,gBAAiB,0BACjB,eAAgB,0BAGlB,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,CAAE,WAAY,YAAa,WAAa,eFrE3D,cAAc,iBACZ,MAAO,AAAG,UAAI,AAAG,YAAO,EAAG,OAAO,QAAS,OAAQ,QAAS,OAAO,MAGrE,iDAAiG,IAC/F,QAAU,gBAAkB,AAAG,UAAK,GAAK,EACzC,WAAM,uBAAuB,IAAK,OAAO,gBAAiB,CAAC,EAAG,IAC9D,IAAM,uBAAuB,AAAG,UAAK,KAAM,OAAO,gBAAiB,CAAC,EAAG,IACvE,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,AAAG,SAAI,IAAK,KAAK,EAAG,OAAO,eAAgB,CAAC,EAAG,KAC9C,IAGT,6BACE,QAAU,uBAAuB,AAAG,UAAK,GAAI,OAAO,gBAAiB,CAAC,EAAG,IACzE,WAAM,uBAAuB,AAAG,UAAK,KAAM,OAAO,gBAAiB,CAAC,EAAG,IACvE,IAAM,uBAAuB,AAAG,UAAK,KAAM,OAAO,gBAAiB,CAAC,EAAG,IACvE,IAAM,AAAG,SAAI,IAAK,GACX,IA7BT,8BAgCkC,eAGhC,2BACE,MAAM,gBACN,KAAK,eAAiB,cAGjB,oBACL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,8CAGlB,MAAO,AAAG,WAAK,KACb,gBAAoB,AAAG,UAAK,MAAM,cAAc,IAAK,IAAO,mBAC5C,CAAC,QAAS,QAAS,oBAChB,UAAU,YAAa,SAAS,IAAI,AAAG,YAAO,UAEvD,AAAG,UAAK,KAAK,WAAY,OAAO,WAAW,QAAS,CAAC,EAAG,KAClE,WAAM,eAAe,IAAK,OAAO,WAAW,kBAAmB,IAC/D,IAAM,eAAe,IAAK,OAAO,WAAW,mBAE5C,MAAM,KAAK,eAAgB,EAAG,GAAG,QAAQ,MACvC,IAAM,UAAU,IAAK,OAAO,YAAY,cAAc,UAGxD,IAAM,eAAe,IAAK,OAAO,UAAU,iBAC3C,IAAM,AAAG,UAAK,uBAAuB,IAAK,OAAO,UAAU,eAAgB,CAAC,EAAG,KACxE,WAIE,gBACX,MAAO,MAAK,aAAa,KAAM,YAAW,QAGlC,sBACR,MAAO,sBAGC,sCACR,MAAO,6BAA2B,UAAW,KAAK,gBAG1C,uBACR,MAAO,gBAAc,QAAS,KAAK,kBG5EhC,wBAAuB,SAC5B,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,yBAEF,uBAAuB,eAAgB,mBAEnD,gBAAgB,IAAK,EAAG,iBACrB,gBAAgB,IAAK,EAAG,aAEvC,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CAAE,GAAI,CAAE,IAAK,UCflB,qCACL,WAEA,kBAAsC,sBAEX,0BAA0B,UAAW,eAEhE,iCACE,YAAgB,mBAAmB,GAAG,iBAAkB,QAC3C,mBAAmB,GAAG,cAAe,GAClD,MAAO,CAAE,QAAS,MAGpB,WAAe,CACb,GAAI,CACF,IAAK,gBAAgB,UACrB,OAAQ,gBAAgB,eAI5B,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eCxBZ,IAAK,OAAL,mBAEL,eAAS,SAET,aAAO,SAJG,qBNLZ,IAAA,0BAakC,eAGhC,iCAAiD,GAAI,cAAa,IAChE,MAAM,gBACN,KAAK,sBAAwB,wBAGpB,wBACT,MAAO,MAAK,sBAGP,cACL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,GAAG,KAAK,uCAG1B,MAAO,AAAG,WAAK,KACb,uBAA2B,gBAAiB,UACxC,KAAK,qBAAqB,aAAa,OACvC,aAEW,AAAG,aAAQ,mBAAoB,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,SAAS,KAAK,mBAAmB,MAAM,GAAI,QAC7F,oBAAoB,OAAQ,OAAO,GAAG,KAAK,cACxC,oBAAoB,OAAQ,OAAO,GAAG,QACrD,MAAO,CAAE,IAAK,UAIX,oBACL,MAAO,AAAG,WAAK,KACb,IAAQ,IAAK,QAAW,KAAK,OAAO,OACpC,MAAO,CAAE,IAAK,OAAQ,AAAG,aAAQ,gBAIxB,gBACX,MAAO,MAAK,aAAa,KAAM,YAAW,aAG/B,4BACX,aAAiB,KAAM,YAAW,WACtB,KAAM,MAAK,aAAa,eAEvB,AAAG,aAAQ,IAAI,aACZ,AAAG,aAAQ,IAAI,4BACH,KAAK,IAAI,eAAmB,EACtD,UACA,aAAc,QAAQ,yBAGG,KAAM,SAAQ,IACvC,oBAAoB,IAAI,OAAS,UAAW,iBAC1C,QAAa,MAAM,WAAU,QAAQ,YACnB,MAAM,cAAa,QAAQ,UAC9B,SAAW,UACX,OAAS,OAAO,KAAO,OAAO,yBACnB,OAAS,SAAY,EAAI,SAEnD,iBAAU,UACV,aAAa,UACN,CAAE,IAAK,OAAQ,sBAG1B,WAAI,IAAI,UACR,IAAI,OAAO,UAEJ,SAAS,aAAe,mBAAiD,mBAAmB,GAG3F,sBACR,MAAO,mBAGF,yBAAoC,IACzC,KAAK,qBAAqB,QAAQ,kBAClC,MAAM,QAAQ,kBAGT,8BACL,IAAQ,OAAQ,eAAkB,KAAK,wBAAwB,SAC/D,KAAK,QAAU,OACf,KAAK,eAAiB,cAGjB,iCACL,MAAO,gBAAc,SAGb,sCACR,IAAQ,oBAAqB,eAAkB,mBAAmB,WAElE,YAAK,qBAAqB,kBAAkB,qBAErC,4BAA2B,eAG1B,uBACR,yBAA8B,IAAM,EAAI,EAAM,KAAM,EAAI,2BAExB,QAAQ,MAAM,EAAG,QAAQ,OAAS,wCACxC,QAAQ,MAAM,QAAQ,OAAS,sBAEzD,YAAK,qBAAqB,eAAe,yBAClC,KAAK,wBAAwB,qBOvHxC,IAAA,KAAoB,+BAApB,mCAYU,eACD,iDACL,oBAAwB,mBAAmB,IAAI,EAAG,MAAO,WACvD,WAAc,UAAY,KAAK,IAAI,OAAQ,OAC3C,MAAO,CACL,MAAO,MAAQ,OACf,OAAQ,OAAS,oBAIH,gBAAgB,OAElC,MAAO,AAAG,WAAK,KACb,4BAAgC,eAAkC,AAAG,WAAM,CAAC,AAAG,UAAK,CAAC,IAAK,MAAO,WAAY,AAAG,UAAK,CAAC,IAAK,MAAO,YAAa,GAAG,KAAK,EAAG,KAAK,kBAG5I,kBACjB,IAAQ,MAAO,QAAW,gBAAgB,UAC1C,MAAO,MAAK,MAAO,QAAU,KAAK,IAAI,MAAQ,QAAU,EAAI,eAG1C,UAAsB,WAAW,SAAU,OAAU,EAAI,eACzD,UAAsB,WAAW,SAAU,OAAU,EAAI,mBAErD,OACrB,IAAI,AAAG,UAAK,CAAC,UAAW,KAAM,UAAW,YACzC,IAAI,AAAG,WAAM,MAAM,KAAK,MAAM,WAAY,cAAiB,wBAC1D,YAAY,UACZ,YAAY,cAEb,IAAI,AAAG,WAAM,MAAM,KAAK,MAAM,WAAY,cAAiB,wBAC1D,gBAAgB,UAAU,MAC1B,gBAAgB,UAAU,WAG9B,MAAO,mBAIJ,oBACL,MAAO,AAAG,WAAK,KACb,QAAY,KAAK,OAAO,OACxB,MAAO,MAAK,YACV,IACA,MAAM,UACN,MAAM,gBAAgB,IAAI,kBAAsB,EAAE,OAAQ,iBAKnD,gBACX,MAAO,MAAK,aAAa,KAAM,YAAW,aAG/B,wBACX,aAAiB,KAAM,YAAW,uBACV,AAAG,UACzB,IAAM,AAAG,aAAQ,KAAK,aAAa,8BAGX,KAAM,SAAQ,IAAI,gBAAgB,IAC1D,iCACE,mBAAuB,MAAM,KAAK,KAAM,gBAAe,gBACvC,eAAe,OAAO,OAAU,OAAO,YACvC,eAAe,OAAO,OAAU,CAAC,OAAO,IAExD,MAAO,IAAI,iBACT,MAAM,IAAI,KAAK,GAAG,IAAI,OAAU,GAAI,OAAM,QAAQ,GAAc,QAAQ,KACxE,CACE,OAAQ,SAAS,eAAe,UAChC,MAAO,SAAS,cAAc,eAMtC,uBAAgB,QAAQ,GAAO,EAAE,WAE1B,SAAS,aAAe,kBAAyC,kBAAkB,GAGlF,2BACR,MAAO,OC9FX,+BAIuC,uBACrC,iCAAyD,GAAI,uBAC3D,MAAM,oBAAqB,sBAGnB,sBACR,MAAO,yBAGC,0BACR,MAAO,OCdX,IAAA,KAAoB,+BCMb,wCACL,WAEA,kBAAsC,IAGpC,0BACE,kBAAkB,UAAW,sBAElB,CACb,OAAQ,yBAAyB,SAAU,IAC3C,OAAQ,yBAAyB,UACjC,OAAQ,yBAAyB,WAGnC,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eCnBZ,2BAA2B,SAChC,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,UAGxB,0BACE,kBAAkB,eAAgB,sBAEvB,yBAAyB,EAAG,GAAI,SAAU,WAC1C,yBAAyB,GAAI,GAAI,iBACjC,yBAAyB,GAAI,IAAK,UAEjD,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,cACA,OAAQ,CAAE,OAAQ,OAAQ,SF1B9B,IAAA,sCAU8C,eAC5C,cACE,MAAM,4BAGD,oBACL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,0DAGlB,MAAO,AAAG,WAAK,KACb,gBAAoB,AAAG,UAAK,MAAM,cAAc,IAAK,IAAO,mBAC5C,CAAC,QAAS,QAAS,oBAChB,UAAU,YAAa,SAAS,IAAI,AAAG,YAAO,UAEvD,YAAY,WAAY,OAAO,OAAQ,IACjD,WAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,YAAY,IAAK,OAAO,QAC9B,IAAM,AAAG,aAAQ,IAAK,CAAC,GAAI,IAAK,CAAC,EAAG,GAAI,SAEjC,WAIE,gBACX,MAAO,MAAK,aAAa,KAAM,YAAW,QAGlC,sBACR,MAAO,oCAGC,sCACR,MAAO,gCAA+B,WAG9B,uBACR,MAAO,mBAAkB,WGjD7B,mCAI2C,uBACzC,iCAA6D,GAAI,2BAC/D,MAAM,wBAAyB,sBAGvB,sBACR,MAAO,8BAGC,0BACR,MAAO,OCdX,6BAKqC,qBCLrC,IAAA,KAAoB,+BCApB,KAAoB,+BCApB,KAAoB,+BAIb,yBACL,MAAO,AAAG,UAAI,AAAG,SAAI,EAAG,OAAO,SAAU,OAAO,QDAlD,oBACE,kCAI4B,QAE5B,IAAQ,QAAS,MAAS,OAAO,SAEvB,AAAG,YAAO,EAAG,QAAS,QAAS,SACzC,WAAM,AAAG,SAAI,IAAK,MAClB,IAAM,MAAM,IAAK,OAAO,OACjB,SAAW,AAAG,UAAK,KAAO,IAG5B,yBACL,MAAO,YAAU,EAAG,OAAQ,CAAC,EAAG,GAAI,IAG/B,8BACL,MAAO,YAAU,EAAG,OAAQ,CAAC,EAAG,GAAI,IAG/B,4BACL,MAAO,YAAU,EAAG,OAAQ,CAAC,EAAG,GAAI,GAAM,SE7B5C,IAAA,KAAoB,+BAUpB,4BAA2B,8BACzB,oEACE,YAAgB,eAAe,uBACjB,QAAQ,OAAU,YAAa,WAAa,YAE1D,GAAI,QAAQ,OACV,KAAM,IAAI,OAAM,+BAA+B,0BAA0B,QAAQ,uBAAuB,2BAA2B,cAGrI,MAAO,AAAG,WACR,IAAM,AAAG,eACP,AAAG,cAAS,QAAS,CAAC,WAAY,MAAO,WAAY,aACrD,CAAC,EAAG,EAAG,EAAG,KAKhB,+EAME,YAAgB,oBAAoB,gBAAiB,WAAY,iBACpD,AAAG,cAAS,eAAe,aAExC,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,sBAGX,CAAE,QAAS,MAGpB,0DACE,YAAgB,AAAG,cAAS,eAAe,oBAC5B,AAAG,cAAS,eAAe,aAE1C,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,wBAGX,CACL,QACA,QAIJ,oFAME,UAAa,kBAAkB,gBAAiB,WAAY,WAAY,GAAG,4BAC7D,wBAAwB,WAAY,GAAG,sBAErD,MAAO,CAAE,WAAM,cAGjB,8FAKoB,IAElB,UAAc,uBAAwB,QAAS,GAAM,GAAK,gBAAiB,WAAY,WAAY,GAAG,6BACxF,uBAAuB,gBAAiB,WAAY,WAAY,GAAG,sBAEjF,MAAO,CAAE,MAAO,cAGlB,MAAO,CACL,uBACA,4BAIG,iCACL,IACE,eACA,qBACE,sBAAsB,uBAEY,IAGpC,uBACA,4BACE,mBAAkB,eAAgB,2BAElB,uBAAuB,KAAM,GAAI,EAAG,wBACvC,2BAA2B,KAAM,GAAI,EAAG,qBACxC,2BAA2B,KAAM,GAAI,EAAG,qBACxC,2BAA2B,KAAM,GAAI,EAAG,wBAErC,2BAA2B,MAAO,GAAI,EAAG,cAAe,aAC3D,2BAA2B,MAAO,GAAI,EAAG,qBACzC,2BAA2B,MAAO,GAAI,EAAG,qBACzC,2BAA2B,MAAO,GAAI,EAAG,yBAErC,2BAA2B,OAAQ,IAAK,EAAG,eAAgB,cAC9D,2BAA2B,OAAQ,IAAK,EAAG,uBAC3C,2BAA2B,OAAQ,IAAK,EAAG,0BAExC,2BAA2B,OAAQ,IAAK,EAAG,eAAgB,cAC9D,2BAA2B,OAAQ,IAAK,EAAG,uBAC3C,2BAA2B,OAAQ,IAAK,EAAG,8BACpC,2BAA2B,OAAQ,IAAK,EAAG,uBAEzD,AAAG,UACZ,IAAM,AAAG,eAAU,AAAG,cAAS,eAAe,IAAM,KAAM,CAAC,IAAK,MAAO,CAAC,EAAG,KAI7E,GAFA,cAAc,KAAK,CAAE,UAAW,OAE5B,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,WAAe,CACb,YACA,SACA,SACA,SACA,YACA,SACA,SACA,SACA,aACA,UACA,UACA,aACA,UACA,UACA,iBACA,IAGF,MAAO,CAAE,OAAQ,eC9InB,4BAA2B,yBACzB,uBAA2B,0BAA0B,UAAW,eAEhE,yCACE,YAAgB,mBAAmB,GAAG,uBAAwB,UAC/C,mBAAmB,GAAG,sBAAuB,GAE5D,MAAO,CAAE,QAAS,QAGpB,wCACE,YAAgB,mBAAmB,GAAG,sBAAuB,QAChD,mBAAmB,GAAG,mBAAoB,UACzC,wBAAwB,QAEtC,MAAO,CAAE,KAAM,CAAE,QAAS,MAAQ,cAGpC,4CACE,MAAO,CACL,MAAO,uBAAuB,GAAG,gBACjC,MAAO,uBAAuB,GAAG,iBAIrC,MAAO,CACL,uBACA,4BAIG,gDAGL,kBAAsC,IAGpC,uBACA,4BACE,mBAAkB,UAAW,2BAEb,uBAAuB,wBAC1B,2BAA2B,qBAC3B,2BAA2B,qBAC3B,2BAA2B,wBAExB,2BAA2B,wBAC9B,2BAA2B,qBAC3B,2BAA2B,qBAC3B,2BAA2B,yBAEvB,2BAA2B,0BAC9B,2BAA2B,uBAC3B,2BAA2B,0BAExB,2BAA2B,0BAC9B,2BAA2B,uBAC3B,2BAA2B,8BACpB,2BAA2B,qBAE5C,IAAO,UAGf,GAFA,cAAc,KAAK,CAAE,aAAc,KAAM,UAAW,OAEhD,CAAC,WAAW,IACd,KAAM,IAAI,OAAM,yDAAyD,MAG3E,WAAe,CACb,YACA,SACA,SACA,SACA,YACA,SACA,SACA,SACA,aACA,UACA,UACA,aACA,UACA,UACA,iBACA,IAGF,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eChGnB,IAAA,KAAoB,+BAKb,kBAAkB,UACvB,QAAU,MAAK,EAAG,OAAO,OACzB,WAAM,WAAW,IAAK,OAAO,OAC7B,IAAM,AAAG,SAAI,IAAK,GAClB,IAAM,AAAG,UAAK,KACP,IAGF,gCACL,QAAU,SAAS,EAAG,OAAO,OAC7B,IAAM,WAAW,IAAK,OAAO,OAE7B,WAAa,AAAG,aAAQ,EAAG,EAAG,EAAG,gBACnB,AAAG,WAAkB,OAAO,aAC5B,OAAO,MAAM,KAAO,IAAI,MAAM,iBACtB,OAAO,MAAM,KAAO,IAAI,MAAM,IAAM,OAAO,MAAM,KAAO,IAAI,MAAM,GAExF,GAAI,eACF,cAAkB,CAAC,GAAG,IAAI,OAC1B,UAAU,GAAK,EACf,WAAe,AAAG,WAAkB,WACpC,IAAM,AAAG,YAAO,CAAC,IAAK,QAAS,GAE/B,cAAkB,CAAC,GAAG,IAAI,OAC1B,UAAU,GAAK,EACf,WAAe,AAAG,WAAkB,WACpC,IAAM,AAAG,YAAO,CAAC,IAAK,QAAS,GAGjC,cAAS,MAAQ,AAAG,YAAO,CAAC,OAAQ,QAAQ,GAAK,OACjD,IAAM,AAAG,SAAI,OAAQ,KAErB,IAAM,AAAG,UAAK,KACP,ILtCT,IAAA,gCAWwC,eACtC,cACE,MAAM,sBAGD,oBACL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,oDAGlB,MAAO,AAAG,WAAK,KAEb,gBAAoB,AAAG,UAAK,MAAM,cAAc,IAAK,IAAO,mBAE5C,CAAC,QAAS,QAAS,oBAChB,UAAU,YAAa,SAAS,IAAI,AAAG,YAAO,UAEvD,SAAS,WAAY,OAAO,aACtC,IAAM,AAAG,aAAQ,IAAK,EAAG,EAAG,SAE5B,IAAM,SAAS,IAAK,OAAO,UAC3B,IAAM,SAAS,IAAK,OAAO,UAC3B,IAAM,SAAS,IAAK,OAAO,UAE3B,IAAM,aAAa,IAAK,OAAO,aAC/B,IAAM,SAAS,IAAK,OAAO,UAC3B,IAAM,SAAS,IAAK,OAAO,UAC3B,IAAM,SAAS,IAAK,OAAO,UAE3B,IAAM,aAAa,IAAK,OAAO,cAC/B,IAAM,SAAS,IAAK,OAAO,WAC3B,IAAM,SAAS,IAAK,OAAO,WAE3B,IAAM,aAAa,IAAK,OAAO,cAC/B,IAAM,SAAS,IAAK,OAAO,WAC3B,IAAM,SAAS,IAAK,OAAO,WAC3B,IAAM,aAAa,IAAK,OAAO,kBAE/B,cAAkB,IAAI,KAAK,CAAC,EAAG,mBACR,AAAG,YAAO,UAAW,OAAO,IAEnD,MAAO,uBAIE,gBACX,MAAO,MAAK,aAAa,KAAM,YAAW,aAG/B,8BACX,aAAiB,KAAM,YAAW,6BAEJ,AAAG,UAC/B,IAAM,AAAG,aAAQ,KAAK,aAAa,oCAGL,KAAM,SAAQ,IAAI,sBAAsB,IACtE,GAAO,EAAE,SAGX,6BAAsB,QAAQ,GAAO,EAAE,WAEhC,SAAS,aACZ,wBACA,wBAAwB,GAGpB,sBACR,MAAO,yBAGC,sCACR,MAAO,6BAA2B,WAG1B,uBACR,MAAO,gBAAc,WMrFlB,kCAAkC,SACvC,QAAY,GAAI,oBAChB,WAAI,eAAe,SACZ,ICHF,kCAGL,sBAGA,cAAkB,CAAE,YACpB,MAAO,IAAK,aAAc,WCPrB,mBAAmB,KACxB,MAAO,OAAO,KAAI,KAAQ,SAGrB,sCAML,cAAkB,CAAE,KACpB,MAAO,IAAK,aAAc,WCPrB,sBAAsB,KAC3B,MAAQ,KAAI,SAAW,OAAO,MAAQ,IAAI,SAAW,OAAO,SACvD,mBAAmB,IAAI,mBAGvB,8DAOL,cAAkB,CAAE,OAAQ,mBAC5B,MAAO,IAAK,aAAc,WCrB5B,IAAA,KAAoB,+BCApB,KAAoB,+BASpB,4BAA2B,8BACzB,8DACE,YAAgB,AAAG,cAAS,eAAe,EAAI,EAAI,aAAc,CAAC,EAAG,EAAG,YAAa,qBAC5D,AAAG,cAAS,eAAe,gCAC1B,AAAG,cAAS,eAAe,8BAC7B,AAAG,cAAS,eAAe,kCACvB,AAAG,cAAS,eAAe,cAEvD,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,iCAChB,CAAE,UAAW,GAAG,kCAChB,CAAE,UAAW,GAAG,gCAChB,CAAE,UAAW,GAAG,qCAGX,CACL,QACA,iBACA,kBACA,gBACA,qBAIJ,2FAOE,YAAgB,AAAG,cACjB,eAAe,WAAa,YAAc,WAAa,YACvD,CAAC,WAAY,WAAY,WAAY,mBAE1B,AAAG,cAAS,eAAe,cAExC,qBAAc,KACZ,CAAE,UAAW,GAAG,wBAChB,CAAE,UAAW,GAAG,gBAAgB,gBAAkB,oBAAsB,WAGnE,CAAE,QAAS,MAGpB,oFAME,IACE,QACA,MACE,kBAAkB,WAAY,YAAa,WAAY,aAAc,IAEzE,MAAO,CACL,QACA,kBAAmB,MAIvB,oEAKE,mBAAuB,2BAA2B,WAAY,GAAG,8CAC1C,2BAA2B,WAAY,YAAa,EAAG,GAAG,+BAEjF,MAAO,CAAE,eAAgB,gBAG3B,oCACE,WAAe,2BAA2B,EAAG,GAAI,EAAG,6BAErC,sBAAsB,GAAI,GAAI,6BAC9B,sBAAsB,GAAI,IAAK,6BAC/B,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,6BAChC,sBAAsB,IAAK,IAAK,8BAC/B,sBAAsB,IAAK,IAAK,+BAChC,sBAAsB,IAAK,IAAK,+BAChC,sBAAsB,IAAK,KAAM,+BACjC,sBAAsB,KAAM,KAAM,uBAElD,MAAO,CACL,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,SAIJ,wCACE,WAAe,2BAA2B,KAAM,IAAK,EAAG,kCACzC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,IAAK,EAAG,kCACxC,2BAA2B,IAAK,GAAI,EAAG,kCACvC,2BAA2B,GAAI,IAAK,EAAG,oDAErB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,EAAG,EAAG,6EACtB,kBAAkB,KAAM,GAAI,EAAG,6EACtC,kBAAkB,KAAM,GAAI,EAAG,6EACxB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,GAAI,EAAG,6EACvB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,GAAI,EAAG,6EACvB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,GAAI,EAAG,6EACvB,kBAAkB,IAAK,GAAI,EAAG,6EACrC,kBAAkB,IAAK,GAAI,EAAG,oEAEhC,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mCAEK,CACtB,uBAAwB,yBACxB,gBAAiB,mBAGnB,MAAO,CACL,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBAIJ,MAAO,CACL,yBACA,8BAIG,kCACL,kBAAsC,IAGpC,eACA,qBACE,sBAAsB,UAGxB,yBACA,8BACE,mBAAkB,eAAgB,2BAElB,4CACK,yCACP,AAAG,cACnB,eAAe,KAAO,GACtB,CAAC,EAAG,KAAM,iBAES,CACnB,WAKF,GAFA,cAAc,KAAK,CAAE,UAAW,2BAE5B,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CACL,OAAQ,CACN,YACA,iBACA,cAEF,eCvNJ,4BAA2B,yBACzB,uBAA2B,0BAA0B,UAAW,eAEhE,6DACE,YAAgB,mBAAmB,GAAG,iBAAiB,wBAAyB,EAAG,GAAG,0CAC5D,mBAAmB,GAAG,iBAAiB,sCAAuC,EAAG,GAAG,kCAE9G,MAAO,CAAE,QAAS,mBAGpB,oCACE,iBAAqB,oBAAoB,0BACb,sBAAsB,0CAChB,GAAG,wDACH,GAAG,sCAErB,mBAAmB,GAAG,wCAAyC,EAAG,GAAG,sDAC5D,mBAAmB,GAAG,sCAAuC,EAAG,GAAG,gEAClE,mBAAmB,GAAG,qCAAsC,EAAG,GAAG,+DACpE,mBAAmB,GAAG,4CAA6C,EAAG,GAAG,iEACrE,mBAAmB,GAAG,gDAAiD,EAAG,GAAG,iDAEzG,MAAO,CACL,eAAgB,CACd,QACA,iBACA,kBACA,gBACA,qBAEF,eAAgB,2BAA2B,cAAe,IAAK,4BAInE,oCACE,MAAO,CACL,OAAQ,2BAA2B,cAAe,EAAG,sBACrD,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,OAAQ,sBAAsB,GAC9B,QAAS,sBAAsB,IAC/B,QAAS,sBAAsB,IAC/B,QAAS,sBAAsB,IAC/B,QAAS,sBAAsB,KAInC,gDACE,YAAgB,mBAAmB,GAAG,iBAAkB,EAAG,GAAG,6BACjD,mBAAmB,GAAG,gBAAiB,EAAG,GAAG,qBAE1D,MAAO,CAAE,QAAS,MAGpB,wCACE,2BAA+B,kBAC7B,2BAA2B,2BAC3B,kCAAkC,8CAEZ,kBACtB,2BAA2B,qBAC3B,kCAAkC,uBAGpC,MAAO,CAAE,uBAAwB,iBAGnC,wCACE,MAAO,CACL,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,OAAQ,2BAA2B,aAAc,EAAG,2BACpD,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,GAC3C,gBAAiB,0BAA0B,IAI/C,MAAO,CACL,yBACA,8BAIG,iDAGL,kBAAsC,IAGpC,yBACA,8BACE,mBAAkB,UAAW,yBAEf,UAAU,oBAG5B,GAFA,cAAc,KAAK,CAAE,aAAc,mBAAoB,UAAW,2BAE9D,CAAC,WAAW,WACd,KAAM,IAAI,OAAM,yEAAyE,aAG3F,WAAe,CACb,YAAa,2BACb,iBAAkB,+BAClB,aAAc,CACZ,YAIJ,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eCvInB,IAAA,KAAoB,+BCApB,KAAoB,+BAIb,8CAKL,MAAO,AAAG,WAAK,KACb,QAAU,AAAG,YAAO,EAAG,OAAO,QAAS,QAAS,QAChD,WAAM,AAAG,SAAI,IAAK,OAAO,mBAClB,AAAG,iBAAY,IAAK,EAAG,KDPlC,IAAM,QAAU,qBAEhB,8CAKE,MAAO,AAAG,WAAK,KACb,QAAU,AAAG,qBAAgB,EAAG,OAAO,QAAS,QAAS,QACzD,WAAM,AAAG,eACP,IACA,OAAO,gBACP,OAAO,oBACP,OAAO,kBACP,OAAO,iBACP,SAEK,AAAG,iBAAY,IAAK,EAAG,KAIlC,yCACE,MAAO,CAAC,EAAG,EAAG,EAAG,IAAI,KAAK,KAAS,MAAQ,UAAY,CAAC,EAAG,GAAK,CAAC,EAAG,GAG/D,+BACL,MAAO,AAAG,WAAK,KACb,eACU,mBAAmB,EAAG,OAAO,OAAQ,CAAC,EAAG,mBAE5B,CACrB,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,OACP,OAAO,QACP,OAAO,QACP,OAAO,QACP,OAAO,SAaT,GAVA,eAAe,QAAQ,YACrB,aAAiB,EAAI,uBACQ,sBAAsB,UACnD,IAAM,mBAAmB,IAAK,MAAM,eAAgB,sBACpD,IAAM,mBAAmB,IAAK,MAAM,eAAgB,CAAC,EAAG,IACxD,AAAI,WAAa,IACf,QAAS,OAIT,SAAW,KACb,KAAM,IAAI,OAAM,iDAGlB,MAAO,CACL,IACA,UEjEN,aAAa,WACX,cAAkB,MAAM,kBACV,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACvC,KAAK,IAAI,UAAU,GAAG,GAAI,UAAU,GAAG,UACtC,OAAQ,OAAU,OAAQ,aAC1B,OAAQ,OAAU,OAAQ,OACzC,GAAI,OAAS,GAAK,OAAS,EACzB,MAAO,GAET,qBAAyB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,iBAAmB,iBAAkB,GACjE,KAAK,IAAI,iBAAmB,iBAAkB,GACpD,MAAO,kBAAoB,OAAQ,MAAQ,kBAGtC,oFAOL,aAAiB,MAAM,MAAM,cACV,KAAK,IACtB,cACA,qBAGiB,OAChB,IAAI,kBAAsB,EAAE,MAAO,YACnC,OAAO,GAAO,EAAE,MAAQ,gBACxB,KAAK,SAAY,GAAG,MAAQ,GAAG,oBAEb,GAAgB,GAAK,aAAe,EAAI,WAElC,GAE3B,kBAAW,QAAQ,IACjB,GAAI,SAAS,QAAU,WACrB,OAEF,kBAAsB,EAAE,MAExB,UAAa,SAAS,OAAS,EAAG,GAAK,EAAG,EAAE,GAC1C,SAAY,IAAI,MAAO,EAAE,SAAU,SAAS,IAC5C,GAAI,OAAQ,EAAK,SAEjB,GADA,EAAE,OAAS,aAAa,MACpB,EAAE,OAAS,eAAgB,MAEjC,AAAI,gBAAkB,EAAE,OACtB,SAAS,KAAK,EAAE,YAIb,SCjET,IAAA,KAAoB,+BAIpB,8CACE,QAAY,AAAG,aAAQ,AAAG,eAAU,EAAG,CAAC,EAAG,WAE7B,CACZ,AAAG,SAAI,IAAI,GAAI,IAAI,IACnB,AAAG,SAAI,IAAI,GAAI,IAAI,aAGL,CACd,AAAG,SAAI,IAAI,GAAI,AAAG,SAAI,MAAM,GAAI,AAAG,YAAO,KAC1C,AAAG,SAAI,IAAI,GAAI,AAAG,SAAI,MAAM,GAAI,AAAG,YAAO,MAG5C,MAAO,CACL,MACA,SAIJ,iCACE,IACE,MACA,SACE,kCAAkC,QAE1B,AAAG,aAAQ,AAAG,eAAU,GAAI,CAAC,EAAG,cAE3B,AAAG,SAAI,AAAG,SAAI,AAAG,SAAI,AAAG,SAAI,IAAI,GAAI,AAAG,YAAO,KAAM,MAAM,IAAK,AAAG,YAAO,aACzE,AAAG,SAAI,AAAG,SAAI,AAAG,SAAI,IAAI,GAAI,AAAG,YAAO,KAAM,MAAM,IAAK,QAAQ,aAEhE,AAAG,SAAI,AAAG,SAAI,AAAG,SAAI,AAAG,SAAI,IAAI,GAAI,AAAG,YAAO,KAAM,MAAM,IAAK,AAAG,YAAO,aACzE,AAAG,SAAI,AAAG,SAAI,AAAG,SAAI,IAAI,GAAI,AAAG,YAAO,KAAM,MAAM,IAAK,QAAQ,IAEjF,MAAO,AAAG,gBACR,AAAG,WAAM,CACP,AAAG,SAAI,SAAU,UACjB,AAAG,SAAI,SAAU,UACjB,AAAG,SAAI,SAAU,UACjB,AAAG,SAAI,SAAU,YAEnB,CAAC,EAAG,IAID,6DAKL,MAAO,AAAG,WAAK,KACb,cAAkB,eAAe,MAAM,SAE3B,iBACV,AAAG,aAAQ,AAAG,UAAK,OAAO,UAAW,CAAC,UAAW,EAAG,IAAK,CAAC,GAAI,IAC9D,AAAG,aAAQ,eAAgB,CAAC,GAAI,KAElC,MAAQ,AAAG,aACT,MACA,CAAC,UAAY,MAAM,MAAM,GAAK,UAAY,IAG5C,qBAAyB,AAAG,aAAQ,AAAG,WAAM,iBAAkB,CAAC,EAAG,EAAG,GAAI,CAAC,GAAI,GAAI,aACtE,AAAG,WAAM,iBAAkB,CAAC,EAAG,EAAG,GAAI,CAAC,GAAI,GAAI,IAE5D,OAAS,AAAG,aACV,OACA,CAAC,UAAW,OAAO,MAAM,KAG3B,iBAAqB,AAAG,aAAQ,qBACV,AAAG,aAAQ,QAEjC,MAAO,CACL,MAAO,aACP,OAAQ,iBC9Ed,IAAA,KAAoB,+BCApB,KAAoB,+BAKb,4BACL,UAGA,MAAO,AAAG,WAAK,KACb,cAAkB,EAAE,MAAM,yBAEI,AAAG,aAC/B,UAAU,EAAG,OAAO,wBACpB,CAAC,UAAW,GAAI,EAAG,oBAEG,AAAG,aACzB,UAAU,EAAG,OAAO,iBACpB,CAAC,UAAW,GAAI,IAGlB,MAAO,CACL,sBACA,mBDjBC,yBACL,iBAIA,MAAO,AAAG,WAAK,KACb,UAAc,mBAAmB,EAAG,OAAO,OAAQ,CAAC,EAAG,UACzC,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,WAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,OAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,UAC7C,mBAAmB,MAAO,OAAO,OAAQ,CAAC,EAAG,mBAEpC,mBAAmB,OAAQ,OAAO,gCAClC,mBAAmB,EAAG,OAAO,gCAC7B,mBAAmB,MAAO,OAAO,gCACjC,mBAAmB,MAAO,OAAO,gCACjC,mBAAmB,MAAO,OAAO,gCACjC,mBAAmB,MAAO,OAAO,gCAEjC,AAAG,YAAO,CAC/B,eAAe,sBACf,eAAe,sBACf,eAAe,sBACf,eAAe,sBACf,eAAe,sBACf,eAAe,uBACd,oBAEsB,AAAG,YAAO,CACjC,eAAe,gBACf,eAAe,gBACf,eAAe,gBACf,eAAe,gBACf,eAAe,gBACf,eAAe,iBACd,GAEH,MAAO,CACL,eACA,oBEhDN,IAAA,4BAYE,aAAc,cAAe,YAAuC,IAN1D,WAAgB,wBAUxB,GAHA,KAAK,eAAiB,eAAiB,GACvC,KAAK,YAAc,YAAc,IAE7B,MAAO,MAAK,gBAAmB,UAAY,KAAK,gBAAkB,GAAK,KAAK,gBAAkB,EAChG,KAAM,IAAI,OAAM,GAAG,KAAK,iEAG1B,GAAI,MAAO,MAAK,aAAgB,SAC9B,KAAM,IAAI,OAAM,GAAG,KAAK,iDAIxB,iBAA0B,MAAO,MAAK,kBAEtC,cAAuB,MAAO,MAAK,cT3BzC,4BAeoC,eAClC,cACE,MAAM,kBAGD,oBACL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,gDAGlB,MAAO,AAAG,WAAK,KAEb,gBAAoB,AAAG,UAAK,MAAM,cAAc,IAAK,IAAQ,aAEnD,AAAG,SAAI,AAAG,SAAI,YAAa,AAAG,YAAO,sBAAwB,AAAG,YAAO,aAChE,YAAY,EAAG,OAAO,cAGrC,eACA,kBACE,gBAAgB,SAAS,IAAK,SAAS,OAAQ,OAAO,kBAE1D,MAAO,aAAY,eAAgB,iBAAkB,OAAO,qBAInD,gBACX,MAAO,MAAK,aAAa,KAAM,YAAW,aAG/B,2BAEuB,IAElC,IAAQ,WAAY,eAAkB,GAAI,uBAAsB,kBAE/C,KAAM,YAAW,QAGhC,aACA,gBACE,KAAK,aAAa,gBAGR,OAAO,UACN,QAAQ,GACvB,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,OAAO,GAAG,UACV,QAAQ,GAAG,UAIb,eAAmB,MAAM,KAAK,KAAM,QAAO,qBAEtB,WACL,mBACd,MACA,WACA,WACA,aACA,4BAGmB,SAAS,2BAA2B,aACvC,SAAS,eACd,UAAY,aAAa,WACzB,UAAY,aAAa,iBAEpB,MAAM,oBACR,QACb,IAAI,MACH,gBAAsB,CACpB,KAAK,IAAI,EAAG,UAAU,KAAK,IAC3B,KAAK,IAAI,EAAK,UAAU,KAAK,KAC7B,IAAI,KAAS,IAAM,mBACC,CACpB,KAAK,IAAI,EAAG,UAAU,KAAK,IAC3B,KAAK,IAAI,EAAK,UAAU,KAAK,KAC7B,IAAI,KAAS,IAAM,MACrB,MAAO,IAAI,eACT,WAAW,KACX,GAAI,MACF,KACA,IACA,MAAQ,KACR,OAAS,KAEX,CACE,OAAQ,SAAS,eAAe,GAChC,MAAO,SAAS,cAAc,OAKtC,aAAM,UACN,OAAO,UAEA,QAGC,sBACR,MAAO,wBAGC,sCACR,MAAO,8BAA2B,WAG1B,uBACR,MAAO,iBAAc,WUzHlB,8BAA8B,SACnC,QAAY,GAAI,gBAChB,WAAI,eAAe,SACZ,IAGF,yCACL,MAAO,sBAAqB,SAZ9B,kCAgBsC,kBCdzB,cAAgB,eAEF,CACzB,GAAI,OAAM,QAAU,SACpB,GAAI,OAAM,QAAS,SACnB,GAAI,OAAM,QAAS,SACnB,GAAI,OAAM,OAAQ,SAClB,GAAI,OAAM,QAAS,gCAGgB,CACnC,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,8BAGsC,CAAC,QAAS,QAAS,2BAE7C,sDACe,mCCvBjD,KAAoB,+BCad,SAAW,KAAc,MAAO,MAAQ,SAEvC,iCACL,GAAI,CAAC,QACH,KAAM,IAAI,OAAM,mBAAmB,WAGrC,GAAI,MAAO,SAAO,oBAAuB,UACvC,KAAM,IAAI,OAAM,wDAAwD,QAAO,sBAGjF,GAAI,CAAC,SAAS,QAAO,eAAiB,QAAO,aAAe,GAAK,QAAO,aAAe,EACrF,KAAM,IAAI,OAAM,gEAAgE,QAAO,gBAGzF,GACE,CAAC,MAAM,QAAQ,QAAO,UACnB,CAAC,QAAO,QAAQ,QAChB,CAAC,QAAO,QAAQ,MAAM,GAAY,MAAO,IAAM,UAElD,KAAM,IAAI,OAAM,kEAAkE,KAAK,UAAU,QAAO,YAG1G,GACE,CAAC,MAAM,QAAQ,QAAO,UACnB,CAAC,QAAO,QAAQ,QAChB,CAAC,QAAO,QAAQ,IAAI,GAAY,GAAK,IAAI,MAAM,GAAY,SAAS,EAAE,IAAM,SAAS,EAAE,IAE1F,KAAM,IAAI,OAAM,wEAAwE,KAAK,UAAU,QAAO,YAGhH,GAAI,QAAO,SACT,EAAC,MAAM,QAAQ,QAAO,UACnB,QAAO,QAAQ,SAAW,GAC1B,CAAC,QAAO,QAAQ,MAAM,WAEzB,KAAM,IAAI,OAAM,8EAA8E,KAAK,UAAU,QAAO,YCjDxH,IAAA,KAAoB,+BCApB,KAAoB,+BAEb,kBACL,MAAO,AAAG,WAAK,KACb,QAAY,AAAG,SAAI,EAAG,AAAG,YAAO,qBAChC,MAAO,AAAG,UAAI,AAAG,UAAK,AAAG,SAAI,EAAG,MAAO,ODApC,2BAA2B,UAChC,MAAO,AAAG,WAAK,KACb,QAAU,AAAG,SAAI,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAEjD,WAAM,AAAG,YAAO,IAAK,OAAO,KAAK,QAAS,CAAC,EAAG,GAAI,SAClD,IAAM,AAAG,SAAI,IAAK,OAAO,GAAG,KAC5B,IAAM,AAAG,SAAI,IAAK,OAAO,GAAG,SAC5B,IAAM,AAAG,SAAI,IAAK,OAAO,KAAK,MAEvB,MAAM,OEdjB,IAAA,KAAoB,+BAKb,iCAAgC,UACrC,MAAO,AAAG,WAAK,KACb,QAAU,AAAG,SAAI,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAEjD,WAAM,AAAG,qBAAgB,IAAK,OAAO,iBAAkB,OAAO,iBAAkB,CAAC,EAAG,GAAI,SACxF,IAAM,AAAG,SAAI,IAAK,OAAO,MAElB,MAAM,OCZjB,IAAA,KAAoB,+BASpB,4BAA2B,8BACzB,sBAA0B,yBAAyB,eAAgB,eAEnE,mDACE,SAAY,AAAG,cAAS,eAAe,eACvB,AAAG,cAAS,eAAe,OAE3C,qBAAc,KACZ,CAAE,UAAW,GAAG,oBAChB,CAAE,UAAW,GAAG,yBAGX,CAAE,SAAK,SAGhB,6EACE,UAAa,kBAAkB,WAAY,YAAa,EAAG,GAAG,wBACnD,uBAAuB,YAAa,GAAG,mBAElD,MAAO,CAAE,WAAM,IAEjB,+BAAmC,kCAAkC,eAAgB,eAErF,MAAO,CACL,kBACA,+BACA,4BAIG,sEAML,IACE,eACA,qBACE,sBAAsB,uBAEY,IAGpC,kBACA,+BACA,4BACE,mBAAkB,eAAgB,sBAItC,GAAI,QAAO,oBACT,gCAA6C,kBAE/B,QAAO,mBACjB,kBAAkB,GAAI,GAAI,EAAG,SAC7B,2BAA2B,GAAI,GAAI,eACzB,2BAA2B,GAAI,GAAI,gBACnC,2BAA2B,GAAI,GAAI,eACnC,2BAA2B,GAAI,GAAI,eACnC,2BAA2B,GAAI,GAAI,eACnC,2BAA2B,GAAI,GAAI,eACnC,GAAK,2BAA2B,GAAI,GAAI,SAAW,aACnD,GAAK,2BAA2B,GAAI,GAAI,SAAW,aACnD,kBAAkB,IAAM,IAAM,GAAI,EAAI,gBAAiB,EAAG,SACxE,OAAS,CACP,MAAO,MAAO,aAAO,MAAO,MAAO,MAAO,MAAO,MAAO,YAG1D,gCAA6C,kBAC/B,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,gBACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,+BAA+B,GAAI,GAAI,eACvC,kBAAkB,GAAI,EAAI,gBAAiB,EAAG,SAC5D,OAAS,CACP,MAAO,MAAO,aAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAI5D,GAAI,sBAAsB,SAAW,EACnC,KAAM,IAAI,OAAM,kCAAkC,sBAAsB,UAG1E,MAAO,CAAE,OAAQ,eCvFnB,6BAA2B,yBACzB,uBAA2B,0BAA0B,UAAW,eAEhE,wCACE,SAAY,mBAAmB,GAAG,aAAc,WAChC,mBAAmB,GAAG,iBAAkB,GACxD,MAAO,CAAE,SAAK,SAGhB,mCACE,YAAgB,mBAAmB,GAAG,iBAAkB,QAC3C,mBAAmB,GAAG,cAAe,GAClD,MAAO,CAAE,QAAS,MAGpB,gDACE,UAAa,kBAAkB,GAAG,kBACvB,uBAAuB,GAAG,aACrC,MAAO,CAAE,WAAM,IAGjB,+BAAmC,+BAA+B,oBAElE,MAAO,CACL,kBACA,+BACA,4BAIG,yDAIL,kBAAsC,IAGpC,kBACA,+BACA,4BACE,oBAAkB,UAAW,sBAIjC,GAAI,QAAO,oBAET,eAAoB,QAAO,aAAe,QAAO,YAAY,QAAU,EACvE,OAAS,CACP,MAAO,QAAO,mBAAqB,kBAAkB,SAAW,2BAA2B,SAC3F,MAAO,2BAA2B,SAClC,MAAO,2BAA2B,SAClC,MAAO,2BAA2B,SAClC,MAAO,2BAA2B,SAClC,MAAO,2BAA2B,SAClC,MAAO,WAAa,EAAI,2BAA2B,SAAW,OAC9D,MAAO,WAAa,EAAI,2BAA2B,SAAW,OAC9D,MAAO,kBAAkB,cAG3B,QAAS,CACP,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,+BAA+B,SACtC,MAAO,kBAAkB,UAI7B,kCAA2B,UAAW,eAE/B,CAAE,OAAQ,eCpFnB,IAAA,wBAYE,aAAc,UAAW,gBAAuC,IANtD,WAAgB,oBAUxB,GAHA,KAAK,WAAa,WAAa,IAC/B,KAAK,gBAAkB,gBAAkB,GAErC,MAAO,MAAK,YAAe,UAAY,KAAK,WAAa,KAAO,EAClE,KAAM,IAAI,OAAM,GAAG,KAAK,6DAG1B,GAAI,MAAO,MAAK,iBAAoB,UAAY,KAAK,iBAAmB,GAAK,KAAK,iBAAmB,EACnG,KAAM,IAAI,OAAM,GAAG,KAAK,qEAIxB,aAAsB,MAAO,MAAK,cAElC,kBAA2B,MAAO,MAAK,kBP3B7C,6BAuBoC,eAOlC,qBACE,MAAM,cACN,eAAe,SACf,KAAK,QAAU,WAGN,UACT,MAAO,MAAK,WAGH,mBACT,MAAO,MAAK,OAAO,iBAAmB,KAAK,OAAO,QAAQ,OAAS,KAG1D,mBACT,MAAO,GAAK,MAAK,gBAAkB,KAAK,OAAO,QAAQ,OAAS,GAG3D,wBACL,QAAU,kBAAkB,EAAG,OAAO,OACtC,WAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,kBAAkB,IAAK,OAAO,OACpC,IAAM,kBAAkB,IAAK,OAAO,OAE7B,UAAU,IAAK,OAAO,MAAO,QAAS,IAGxC,uBACL,QAAU,KAAK,OAAO,mBAClB,MAAM,UAAU,EAAG,OAAO,MAAqB,QAAS,KACxD,wBAAuB,EAAG,OAAO,OACrC,WAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,wBAAuB,IAAK,OAAO,OACzC,IAAM,AAAG,aAAQ,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,QACtC,IAAM,OAAO,MAAQ,wBAAuB,IAAK,OAAO,OAAS,IACjE,IAAM,OAAO,MAAQ,wBAAuB,IAAK,OAAO,OAAS,IAE1D,UAAU,IAAK,OAAO,MAAO,QAAS,IAGxC,8BACL,IAAQ,QAAW,KAEnB,GAAI,CAAC,OACH,KAAM,IAAI,OAAM,4CAGlB,MAAO,AAAG,WAAK,KAEb,gBAAkB,AAAG,UAAK,MAAM,cAAc,UAAW,IAAQ,WACjE,mBAAc,KAAK,OAAO,QACtB,UAAU,YAAa,KAAK,OAAO,SACnC,YACJ,YAAc,YAAY,IAAI,AAAG,YAAO,MAEjC,KAAK,OAAO,mBACf,KAAK,aAAa,YAAa,QAC/B,KAAK,cAAc,YAAa,eAI3B,0BACX,MAAO,MAAK,aAAa,KAAM,YAAW,OAAQ,gBAGvC,4BAA6D,IACxE,IAAQ,UAAW,gBAAmB,GAAI,mBAAkB,wBAE3C,KAAM,YAAW,WACtB,KAAM,MAAK,aAAa,SAAU,gBACjC,AAAG,UAAK,IAAM,AAAG,aAAQ,KAAK,GAAG,8BAEtB,CACtB,MAAO,SAAS,cAAc,GAC9B,OAAQ,SAAS,eAAe,YAGlB,KAAM,MAAK,aAAa,KAAM,SAAS,2BAA2B,GAAI,gBACtF,IAAI,UACJ,KAAK,UAEL,UAAc,QAAQ,IAAI,KAAS,IAAI,YACxB,QAAQ,IAAI,KAAS,IAAI,mBACpB,QAAQ,IAAI,KAAS,IAAI,uBAC1B,QAAQ,IAAI,KAAS,KAAK,OAAO,QAAQ,IAAI,gBAEhD,kBACd,MAAM,IAAI,KAAS,IAAI,QAAQ,YAC/B,OACA,KAAK,OAAO,aACZ,eAGiB,QAAQ,IAAI,KAAS,GAAI,iBAC1C,OAAO,KACP,YAAY,KACZ,WAAW,KACX,MAAM,KACN,kBAGF,MAAO,YAGC,sBACR,MAAO,GAGC,sCACR,MAAO,8BAA2B,UAAW,KAAK,QAG1C,uBACR,gBAAoB,KAAK,OAAO,aAAe,gBAAe,gCAE3C,YAAc,YAAY,OAAS,OACtD,GAAI,aAAe,GAAK,aAAe,GAAK,aAAe,EACzD,KAAM,IAAI,OAAM,oEAAoE,oCAEtF,MAAO,iBAAc,QAAS,KAAK,OAAQ,KAAK,gBAAiB,kBAGnD,+DAKd,IAAQ,MAAO,QAAW,8BACR,KAAK,IAAI,MAAO,0BACR,UAAY,wBACZ,UAAY,gBAErB,aAAa,MAAM,YACnB,KAAK,OAAO,QAAQ,oDAEkB,AAAG,UAAK,KAC7D,aAAiB,aAAa,QAAQ,CAAC,SAAU,SAAU,SAAU,KAAK,wBAE5D,SAAS,MAAM,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,SAAU,SAAU,SAAU,WAC3D,SAAS,MAAM,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,SAAU,SAAU,SAAU,gBACvD,KAAK,gBACrB,AAAG,aAAQ,SAAS,MAAM,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,SAAU,SAAU,SAAU,KAAK,OAAO,QAAQ,SAAU,GACrG,AAAG,YAAO,GACd,MAAO,CAAC,MAAO,OAAQ,uBAGT,cAEG,KAAM,cAAa,kBACpB,KAAM,aAAY,QACpC,YAAe,EAAG,IAAM,SAAU,MAChC,YAAe,EAAG,IAAM,SAAU,MAChC,eAAkB,EAAG,OAAS,SAAU,UACtC,UAAc,QAAQ,WAAW,KAAK,KAAK,QAAQ,IACnD,GAAI,CAAC,gBAAkB,MAAQ,gBAC7B,QAAc,KAAM,QAAQ,UAAU,KAAK,KAAK,QAAQ,KAAO,SAAY,sBAC7D,KAAM,QAAQ,UAAU,KAAK,KAAK,QAAQ,KAAO,SAAY,6BACtD,KAAK,IAAI,UAAU,KAAK,KAAK,QAAQ,IAAM,KAAK,OAAO,QAAQ,QAAQ,EAAK,SAAY,8BACvF,KAAK,IAAI,UAAU,KAAK,KAAK,QAAQ,IAAM,KAAK,OAAO,QAAQ,QAAQ,EAAK,SAAY,oBAEnG,IAAO,WAAa,IACpB,IAAO,YAAc,MAEpB,CAAE,IAAK,IAAK,SAChB,WAAY,OAAU,KAAK,gBAC/B,KAAM,MAAK,sBAAsB,kBAAkC,KACnE,CAAE,WAAY,EAAG,MAAO,GAE5B,QAAQ,KAAK,CACX,IAAK,GAAI,aAAY,EAAG,EAAG,EAAI,WAAY,EAAI,aAC/C,MACA,WAAY,MAAQ,WACpB,SACG,OAOb,mBAAY,UACZ,aAAa,UACb,kBAAkB,UAEX,aAGK,0CACZ,IAAQ,IAAK,IAAK,QAAW,gBACT,KAAM,eAAc,QACxC,MAAO,OAAM,KAAK,OAAO,QAAQ,QAAQ,KAAK,GAC3C,IAAI,OAAU,YAAY,KAAK,KAAK,QAAQ,IAC5C,IAAI,oBAAwB,EAC3B,WACA,SAED,OAAO,YAAgB,IAAI,WAAa,KAAK,WAAa,IAAM,uBApPvE,gBAwBgB,AAxBhB,eAwBgB,qBAAuB,CACnC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,MQzBxC,IAAA,wBAiBgC,gBAC9B,+BAA0C,IACxC,YAAe,CACb,mBACA,aAAc,cACd,QAAS,CAAC,WACN,mBACA,CACA,QAAS,sBACT,QAAS,oBAET,CACA,QAAS,YACT,gBAAiB,KAIvB,MAAM,YAGG,sBACT,MAAO,MAAK,OAAO,sBAGV,WACT,MAAO,MAAK,OAAO,aAGR,kCACX,qBAAyB,KAAM,MAAK,OAAO,MAAO,eAClD,MAAO,kBAAiB,IAAI,KAAS,GAAI,eAAc,IAAI,MAAO,IAAI,YAAa,CAAE,MAAO,IAAI,WAAY,OAAQ,IAAI,eAGhH,sBACR,MAAO,MAAK,mBAAqB,kCAAoC,mBAG7D,sCACR,MAAO,OAAM,2BAA2B,aC9CrC,0BAA0B,2BAAqD,IACpF,QAAY,GAAI,YAAW,oBAC3B,WAAI,eAAe,SACZ,ICZT,IAAA,qCAI6C,mBAJ7C,kCAKY,WAAgB,4BCL5B,0BACe,mBAIX,MAAO,aAAY,KAAM,MAAK,YAGnB,OACX,KAAM,IAAI,OAAM,6CCRpB,KAAoB,+BCDpB,KAAoB,+BAOpB,gDACE,sEAMwF,EAAG,eAAkB,aAE7G,cAAkB,cAAc,IAAI,cAAmB,oBAAoB,cACvE,oBAAoB,cACpB,aAAa,iBACqC,gBACpD,iBAAoB,aAChB,KAAM,oBAAmB,MAAO,WAChC,KAAM,cAAa,MAAO,oBAGhB,KAAM,gBAAe,OAErC,aAAM,QAAQ,GAAO,YAAgB,cAAU,EAAE,WAE1C,QAGT,sHASE,MAAO,kCACL,CAAC,cACD,MACA,aAAiB,cAAc,MAAM,IACrC,eACA,qBC5CG,IAAM,eAAgB,gBAEF,CACzB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,UACpB,GAAI,OAAM,SAAU,oBAG4B,CAAC,QAAS,QAAS,QCZrE,8BAUsC,gBACpC,cACE,YAAe,CACb,mBAAoB,GACpB,aAAc,eACd,QAAS,CAAC,QACV,QAAS,aACT,QAAS,SACT,mBAAoB,GACpB,YAAa,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,MAGzC,MAAM,YAGG,WACT,MAAO,MAAK,OAAO,aAGR,kCACX,qBAAyB,KAAM,MAAK,OAAO,MAAO,eAClD,MAAO,kBAAiB,IAAI,KAAS,GAAI,eAAc,IAAI,MAAO,IAAI,YAAa,CAAE,MAAO,IAAI,WAAY,OAAQ,IAAI,eAGhH,sBACR,MAAO,2BAGC,sCACR,MAAO,OAAM,2BAA2B,aCvB/B,KAAO,CAClB,eAAgB,GAAI,gBACpB,iBAAkB,GAAI,kBACtB,WAAY,GAAI,YAChB,kBAAmB,GAAI,mBACvB,sBAAuB,GAAI,uBAC3B,mBAAoB,GAAI,oBACxB,kBAAmB,GAAI,mBACvB,aAAc,GAAI,8BAUU,iBAAgF,KAAK,eAAe,YAAY,MAAO,0BASrH,iBAAkF,KAAK,iBAAiB,YAAY,MAAO,qBASjI,iBAA6E,KAAK,WAAW,YAAY,MAAO,6BASvG,OAAoE,KAAK,kBAAkB,gBAAgB,+BAWvG,OAAoE,KAAK,sBAAsB,gBAAgB,6BAYjH,OAA8D,KAAK,mBAAmB,sBAAsB,gCASzG,OAAoE,KAAK,kBAAkB,mBAAmB,2BASnH,OAAkF,KAAK,aAAa,oBAAoB,+BAEpH,KAAiB,KAAK,eAAe,KAAK,+BACxC,KAAiB,KAAK,iBAAiB,KAAK,yBAClD,KAAiB,KAAK,WAAW,KAAK,2BACpC,KAAiB,KAAK,kBAAkB,KAAK,+BACzC,KAAiB,KAAK,sBAAsB,KAAK,8BAClD,KAAiB,KAAK,mBAAmB,KAAK,6BAC/C,KAAiB,KAAK,kBAAkB,KAAK,wBAClD,KAAiB,KAAK,aAAa,KAAK,4BAGpC,oCACX,+BACI,oBCpH/B,4CAmB4E,gBAC1E,6CAQE,QANU,2BAEA,iBAEA,mEA1Bd,aAkCU,qCACK,OACX,kBAAsB,KAAM,MAAK,iCAEH,KAAM,kCAClC,cACA,KAAK,MACL,aAAiB,QAAQ,IAAI,MAAM,IACjC,MAAU,KAAK,kBAAkB,mBAAmB,QAEtD,KAAK,gBAGP,MAAO,eAAc,IACnB,kBAAqB,0BAAmC,aAAc,sBAAsB,KAIhG,mBACE,MAAO,IAAI,4BAA2B,KAAM,KAAK,0CArDrD,aA2DU,qCACK,OACX,iBAAqB,KAAM,MAAK,WAChC,GAAI,CAAC,aACH,OAGF,oBAAwB,KAAM,mCAC5B,aACA,KAAK,MACL,MAAU,KAAK,kBAAkB,mBAAmB,MACpD,KAAK,gBAGP,MAAO,2BAA0B,aAAc,iBAGjD,mBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,wDA7ExD,aAmFU,+BACR,mBACE,MAAO,IAAI,6CAA4C,KAAM,KAAK,OAGpE,sBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,2DAzFxD,aA+FU,kCACR,mBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,qBACE,MAAO,IAAI,iCAAgC,KAAM,KAAK,SCrG1D,yCAoByE,gBACvE,6CAQE,QANU,2BAEA,iBAEA,gEA3Bd,aAmCU,kCACK,OACX,kBAAsB,KAAM,MAAK,8BAEN,KAAM,kCAC/B,cACA,KAAK,MACL,aAAiB,QAAQ,IAAI,MAAM,IACjC,MAAU,KAAK,aAAa,oBAAoB,QAElD,KAAK,gBAGP,MAAO,eAAc,IAAI,mBACvB,IAAQ,IAAK,OAAQ,mBAAsB,mBAAmB,GAC9D,MAAO,eAAc,iBAAiB,aAAc,OAAQ,mBAAoB,OAIpF,sBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,uCAvDxD,aA6DU,kCACK,OACX,iBAAqB,KAAM,MAAK,WAChC,GAAI,CAAC,aACH,OAGF,IAAQ,IAAK,OAAQ,mBAAsB,KAAM,mCAC/C,aACA,KAAK,MACL,MAAU,KAAK,aAAa,oBAAoB,MAChD,KAAK,gBAGP,MAAO,eAAc,iBAAiB,aAAc,OAAQ,mBAAoB,KAGlF,sBACE,MAAO,IAAI,kCAAiC,KAAM,KAAK,qDA/E3D,aAqFU,4BACR,sBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,sBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,wDA3FxD,aAiGU,+BACR,sBACE,MAAO,IAAI,mDAAkD,KAAM,KAAK,OAG1E,qBACE,MAAO,IAAI,iCAAgC,KAAM,KAAK,SCvG1D,4CAiB4E,gBAC1E,8BAME,QAJU,2BAEA,iDAtBd,aA8BU,qCACK,OACX,kBAAsB,KAAM,MAAK,uBAEb,KAAM,kCACxB,cACA,KAAK,MACL,OAAW,QAAQ,IAAI,MAAM,IAAI,MAAU,KAAK,mBAAmB,sBAAsB,QACzF,KACA,cAAkB,aAAa,UAAU,MAAM,KAAM,CAAE,iBAAkB,MAG3E,MAAO,aAAY,IAAI,gBAAmB,yBAAkC,cAAc,GAAI,aAGhG,sBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,mBACE,MAAO,IAAI,6CAA4C,KAAM,KAAK,yCAlDtE,aAwDU,qCACK,OACX,iBAAqB,KAAM,MAAK,WAChC,GAAI,CAAC,aACH,OAEF,eAAmB,KAAM,mCACvB,aACA,KAAK,MACL,MAAU,KAAK,mBAAmB,sBAAsB,MACxD,KAEA,eAAkB,cAAa,UAAU,MAAM,KAAM,CAAE,iBAAkB,MAG3E,MAAO,0BAAyB,aAAc,YAGhD,sBACE,MAAO,IAAI,mDAAkD,KAAM,KAAK,OAG1E,mBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,SP/EzE,yCAqByE,gBACvE,iDAQE,QANU,2BAEA,iBAEA,8CAKE,eACZ,MAAO,MAAK,mBACR,KAAK,sBACL,KAAK,+CApCb,aA0CU,kCACK,OACX,kBAAsB,KAAM,MAAK,sBACd,cAAc,IAAI,KAAS,IAAI,iBAEI,KAAK,gBAAoB,aAC3E,KAAM,oBAAmB,KAAK,MAAO,YACrC,KAAM,cAAa,KAAK,MAAO,gCAEP,KAAM,SAAQ,IAAI,MAAM,IAClD,MAAU,KAAK,YAAY,gBAAgB,QAG7C,aAAM,QAAQ,GAAO,YAAgB,cAAU,EAAE,WAE1C,cAAc,IAAI,kBAAqB,wBAAiC,aAAc,oBAAoB,KAGnH,sBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,mBACE,MAAO,IAAI,6CAA4C,KAAM,KAAK,OAGpE,sBACE,MAAO,IAAI,+BAA8B,KAAM,KAAK,uCArExD,aA2EU,kCACK,OACX,iBAAqB,KAAM,MAAK,WAChC,GAAI,CAAC,aACH,OAGF,IAAQ,WAAc,mBACgC,KAAK,gBAAoB,aAC3E,KAAM,oBAAmB,KAAK,MAAO,CAAC,YACtC,KAAM,cAAa,KAAK,MAAO,CAAC,sBAElB,KAAM,MAAK,YAAY,gBAAgB,MAAM,IAE/D,aAAM,QAAQ,GAAO,YAAgB,cAAU,EAAE,WAE1C,wBAAiC,aAAc,WAGxD,sBACE,MAAO,IAAI,mDAAkD,KAAM,KAAK,OAG1E,mBACE,MAAO,IAAI,gDAA+C,KAAM,KAAK,OAGvE,qBACE,MAAO,IAAI,iCAAgC,KAAM,KAAK,SQvG1D,iCAckD,gBAChD,0BAI4C,GAAI,wBAE9C,QAJU,iBAEA,0CAnBd,aAyBwC,0BACzB,OACX,IAAQ,MAAO,SAAY,2BAGG,kBAAmB,yBAE7C,QAAsB,KAAK,iBAAiB,YAAY,OAAO,SAG/D,kBAAmB,uBAEf,QAAsB,KAAK,eAAe,YAAY,OAAO,SAE7D,kBAAmB,mBAEf,QAAsB,KAAK,WAAW,YAAY,OAAO,SACzD,KAIZ,GAAI,CAAC,sBACH,KAAM,IAAI,OAAM,uIAGlB,MAAO,uBAAsB,OAGvB,iCAEN,MAAO,IAAI,SAAiC,gBAC1C,eAAmB,KAAM,MAAK,MAC9B,QAAQ,WAAW,IAAI,WAAe,wBAAwB,GAAI,eAItE,qCAAgD,IAC9C,MAAO,IAAI,4BACT,KAAK,iCACL,KAAK,MACL,oBAIJ,sBACE,MAAO,IAAI,+BACT,KAAK,iCACL,KAAK,OAIT,mBACE,MAAO,IAAI,4BACT,KAAK,iCACL,KAAK,8BA/EX,aAoF0C,0BAC3B,OACX,mBAAuB,KAAM,IAAI,oBAAmB,KAAK,MAAO,KAAK,uCACjC,eAAe,GACnD,sBAAe,QAAQ,gBACrB,AAAI,cAAc,MAAQ,8BAA8B,OACtD,+BAAgC,iBAG7B,8BAGD,gCAEN,MAAO,IAAI,SAA2C,gBACpD,cAAkB,KAAM,MAAK,MAC7B,QAAQ,UAAY,wBAA4B,GAAI,WAAa,UAIrE,qCAAgD,IAC9C,MAAO,IAAI,+BACT,KAAK,gCACL,KAAK,MACL,oBAIJ,sBACE,MAAO,IAAI,kCACT,KAAK,gCACL,KAAK,OAIT,mBACE,MAAO,IAAI,+BACT,KAAK,gCACL,KAAK,SCrHJ,0BACL,cACgC,GAAI,wBAEpC,MAAO,IAAI,sBAAqB,MAAO,SAGlC,sCAE2B,GAAI,wBAEpC,MAAO,IAAI,oBAAmB,MAAO,SCRvC,sCACE,qBAGA,MAAO,gBAAe,MAAO,GAAI,uBAAsB,cAAgB,CAAE,eAAkB,KACxF,oBACA,sBAGL,sDAEsC,IAEpC,MAAO,gBAAe,MAAO,GAAI,mBAAkB,gBAChD,oBACA,sBAGE,aAAiB,uBC1BjB,2BAA2B,WAChC,GAAI,KAAK,SAAW,KAAK,OACvB,KAAM,IAAI,OAAM,kDAElB,UAAc,MAAM,KAAK,YACX,MAAM,KAAK,MAEzB,MAAO,MAAK,KACV,MACG,IAAI,SAAY,IAAM,MAAM,IAC5B,OAAO,YAAe,IAAM,KAAK,IAAI,KAAM,GAAI,ICVtD,IAAA,kBAUE,qCAE8B,IAE5B,KAAK,mBAAqB,kBAE1B,eAAmB,MAAM,QAAQ,QAAU,OAAS,CAAC,QAErD,GAAI,CAAC,WAAW,OACd,KAAM,IAAI,OAAM,2DAGlB,UAAY,oBACc,IAAM,UAAU,UAE1C,KAAK,oBAAsB,WAAW,IAAI,OACxC,GAAI,eAAgB,wBAClB,MAAO,MAGT,GAAI,eAAgB,cAClB,MAAO,IAAI,wBAAuB,oBAAqB,CAAC,OAG1D,GAAI,KAAK,YAAc,KAAK,qBAAsB,cAChD,MAAO,IAAI,wBAAuB,oBAAqB,CAAC,KAAK,aAG/D,KAAM,IAAI,OAAM,4MAIT,sBAAiD,MAAO,MAAK,uBAE7D,qBAA8B,MAAO,MAAK,mBAE9C,iDACL,MAAO,aACJ,IAAI,GAAO,kBAAkB,EAAG,kBAChC,OAAO,SAAY,GAAK,GAAI,GACxB,aAAY,QAAU,GAGxB,iCACL,MAAO,MAAK,mBACT,IAAI,EAAG,YAAa,SAAY,GAAI,WACnC,MACA,KAAK,oBAAoB,gBAAiB,eAE3C,OAAO,aAAiB,KAAK,SAAW,KAAK,SAAW,KAAO,MAG7D,+BACL,cAAkB,KAAK,gBAAgB,iBACvC,MAAO,WAAU,SAAW,KAAK,kBAC7B,UACA,GAAI,WAAU,UAAW,UAAU,UAGlC,SACL,MAAO,CACL,kBAAmB,KAAK,kBACxB,mBAAoB,KAAK,mBAAmB,IAAI,IAAQ,GAAG,iBAIjD,gBACZ,uBAA2B,KAAK,mBAC7B,IAAI,IAAa,uBAAuB,SAAS,KACpD,MAAO,IAAI,aAAY,mBAAoB,KAAK,qBC1E7C,gCAAgC,SACrC,QAAY,GAAI,kBAChB,WAAI,eAAe,SACZ,ICFF,uBAA0B,oBAE/B,IAAQ,MAAO,QAAW,GAAI,YAAW,WAAW,MAAO,WAAW,QAEtE,GAAI,OAAS,GAAK,QAAU,EAC1B,KAAM,IAAI,OAAM,uCAAuC,KAAK,UAAU,CAAE,MAAO,YAGjF,GAAI,MAAM,QAAQ,SAEhB,MAAQ,SAAuB,IAAI,KAAO,cAAc,IAAK,CAAE,MAAO,UAGxE,GAAI,oBAAoB,UACtB,qBAAyB,QAAQ,UAAU,QAAQ,MAAO,yBACjC,QAAQ,mBAAmB,QAAQ,iBAAiB,IAAI,MAAO,iBAAiB,IAAI,QAC7G,MAAO,yBAAwB,wBAAwB,QAAS,kBAAmB,kBAGrF,MAAI,qBAAoB,SACf,wBAAwB,QAAS,QAAQ,UAAU,QAAQ,MAAO,SAGvE,kBAAmB,gBAAiB,kBAAmB,eACjD,QAAgB,QAAQ,MAAO,QAGlC,QjJTT,IAAM,KAAQ,MAAO,UAAY,qBAEhB,MAAO,YAAc,aAAiB,MAAO,WAAU,WAAc,qBAC/D,CAAE,QAAa,QAAmB,KAAM", "names": [] } diff --git a/dist/face-api.node.json b/dist/face-api.node.json index 956520c..b36ba13 100644 --- a/dist/face-api.node.json +++ b/dist/face-api.node.json @@ -5,11 +5,11 @@ "imports": [] }, "src/draw/drawContour.ts": { - "bytes": 526, + "bytes": 539, "imports": [] }, "src/classes/Dimensions.ts": { - "bytes": 737, + "bytes": 745, "imports": [ { "path": "src/utils/index.ts" @@ -17,7 +17,7 @@ ] }, "src/utils/index.ts": { - "bytes": 1776, + "bytes": 1845, "imports": [ { "path": "dist/tfjs.esm.js" @@ -31,11 +31,11 @@ ] }, "src/classes/Point.ts": { - "bytes": 923, + "bytes": 925, "imports": [] }, "src/classes/Box.ts": { - "bytes": 5477, + "bytes": 5690, "imports": [ { "path": "src/utils/index.ts" @@ -46,7 +46,7 @@ ] }, "src/classes/BoundingBox.ts": { - "bytes": 389, + "bytes": 402, "imports": [ { "path": "src/classes/Box.ts" @@ -54,7 +54,7 @@ ] }, "src/classes/ObjectDetection.ts": { - "bytes": 1395, + "bytes": 1424, "imports": [ { "path": "src/classes/Box.ts" @@ -65,7 +65,7 @@ ] }, "src/classes/FaceDetection.ts": { - "bytes": 651, + "bytes": 656, "imports": [ { "path": "src/classes/ObjectDetection.ts" @@ -73,11 +73,11 @@ ] }, "src/ops/iou.ts": { - "bytes": 468, + "bytes": 473, "imports": [] }, "src/ops/minBbox.ts": { - "bytes": 479, + "bytes": 498, "imports": [ { "path": "src/classes/index.ts" @@ -85,7 +85,7 @@ ] }, "src/ops/nonMaxSuppression.ts": { - "bytes": 908, + "bytes": 924, "imports": [ { "path": "src/ops/iou.ts" @@ -93,7 +93,7 @@ ] }, "src/ops/normalize.ts": { - "bytes": 478, + "bytes": 486, "imports": [ { "path": "dist/tfjs.esm.js" @@ -101,7 +101,7 @@ ] }, "src/ops/padToSquare.ts": { - "bytes": 1659, + "bytes": 1687, "imports": [ { "path": "dist/tfjs.esm.js" @@ -109,11 +109,11 @@ ] }, "src/ops/shuffleArray.ts": { - "bytes": 274, + "bytes": 273, "imports": [] }, "src/ops/index.ts": { - "bytes": 322, + "bytes": 331, "imports": [ { "path": "src/ops/iou.ts" @@ -136,7 +136,7 @@ ] }, "src/classes/Rect.ts": { - "bytes": 346, + "bytes": 359, "imports": [ { "path": "src/classes/Box.ts" @@ -144,7 +144,7 @@ ] }, "src/classes/FaceLandmarks.ts": { - "bytes": 4167, + "bytes": 4199, "imports": [ { "path": "src/ops/index.ts" @@ -170,7 +170,7 @@ ] }, "src/classes/FaceLandmarks5.ts": { - "bytes": 358, + "bytes": 360, "imports": [ { "path": "src/utils/index.ts" @@ -181,7 +181,7 @@ ] }, "src/classes/FaceLandmarks68.ts": { - "bytes": 905, + "bytes": 915, "imports": [ { "path": "src/utils/index.ts" @@ -192,7 +192,7 @@ ] }, "src/classes/FaceMatch.ts": { - "bytes": 570, + "bytes": 578, "imports": [ { "path": "src/utils/index.ts" @@ -200,7 +200,7 @@ ] }, "src/classes/LabeledBox.ts": { - "bytes": 641, + "bytes": 645, "imports": [ { "path": "src/utils/index.ts" @@ -211,11 +211,11 @@ ] }, "src/classes/LabeledFaceDescriptors.ts": { - "bytes": 1083, + "bytes": 1072, "imports": [] }, "src/classes/PredictedBox.ts": { - "bytes": 944, + "bytes": 952, "imports": [ { "path": "src/utils/index.ts" @@ -226,7 +226,7 @@ ] }, "src/classes/index.ts": { - "bytes": 427, + "bytes": 436, "imports": [ { "path": "src/classes/BoundingBox.ts" @@ -273,7 +273,7 @@ ] }, "src/factories/WithFaceDetection.ts": { - "bytes": 496, + "bytes": 486, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -281,15 +281,15 @@ ] }, "src/env/createBrowserEnv.ts": { - "bytes": 685, + "bytes": 636, "imports": [] }, "src/env/createFileSystem.ts": { - "bytes": 650, + "bytes": 654, "imports": [] }, "src/env/createNodejsEnv.ts": { - "bytes": 1170, + "bytes": 1202, "imports": [ { "path": "src/env/createFileSystem.ts" @@ -297,19 +297,19 @@ ] }, "src/env/isBrowser.ts": { - "bytes": 352, + "bytes": 354, "imports": [] }, "src/env/isNodejs.ts": { - "bytes": 293, + "bytes": 295, "imports": [] }, "src/env/types.ts": { - "bytes": 470, + "bytes": 570, "imports": [] }, "src/env/index.ts": { - "bytes": 1801, + "bytes": 1817, "imports": [ { "path": "src/env/createBrowserEnv.ts" @@ -332,7 +332,7 @@ ] }, "src/dom/resolveInput.ts": { - "bytes": 197, + "bytes": 200, "imports": [ { "path": "src/env/index.ts" @@ -340,7 +340,7 @@ ] }, "src/dom/getContext2dOrThrow.ts": { - "bytes": 666, + "bytes": 673, "imports": [ { "path": "src/env/index.ts" @@ -351,7 +351,7 @@ ] }, "src/draw/DrawTextField.ts": { - "bytes": 3710, + "bytes": 4094, "imports": [ { "path": "src/dom/getContext2dOrThrow.ts" @@ -362,7 +362,7 @@ ] }, "src/draw/DrawBox.ts": { - "bytes": 1750, + "bytes": 1831, "imports": [ { "path": "src/classes/index.ts" @@ -376,7 +376,7 @@ ] }, "src/draw/drawDetections.ts": { - "bytes": 1018, + "bytes": 1128, "imports": [ { "path": "src/classes/index.ts" @@ -396,7 +396,7 @@ ] }, "src/dom/isMediaLoaded.ts": { - "bytes": 276, + "bytes": 277, "imports": [ { "path": "src/env/index.ts" @@ -404,7 +404,7 @@ ] }, "src/dom/awaitMediaLoaded.ts": { - "bytes": 848, + "bytes": 963, "imports": [ { "path": "src/env/index.ts" @@ -415,7 +415,7 @@ ] }, "src/dom/bufferToImage.ts": { - "bytes": 691, + "bytes": 687, "imports": [ { "path": "src/env/index.ts" @@ -423,7 +423,7 @@ ] }, "src/dom/getMediaDimensions.ts": { - "bytes": 526, + "bytes": 529, "imports": [ { "path": "src/classes/Dimensions.ts" @@ -434,7 +434,7 @@ ] }, "src/dom/createCanvas.ts": { - "bytes": 1128, + "bytes": 1139, "imports": [ { "path": "src/env/index.ts" @@ -451,7 +451,7 @@ ] }, "src/dom/imageTensorToCanvas.ts": { - "bytes": 611, + "bytes": 618, "imports": [ { "path": "dist/tfjs.esm.js" @@ -465,7 +465,7 @@ ] }, "src/dom/isMediaElement.ts": { - "bytes": 226, + "bytes": 228, "imports": [ { "path": "src/env/index.ts" @@ -473,7 +473,7 @@ ] }, "src/dom/imageToSquare.ts": { - "bytes": 1162, + "bytes": 1175, "imports": [ { "path": "src/env/index.ts" @@ -490,7 +490,7 @@ ] }, "src/dom/NetInput.ts": { - "bytes": 5465, + "bytes": 5511, "imports": [ { "path": "dist/tfjs.esm.js" @@ -513,7 +513,7 @@ ] }, "src/dom/toNetInput.ts": { - "bytes": 2100, + "bytes": 2115, "imports": [ { "path": "src/utils/index.ts" @@ -533,7 +533,7 @@ ] }, "src/dom/extractFaces.ts": { - "bytes": 1755, + "bytes": 1782, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -556,7 +556,7 @@ ] }, "src/dom/extractFaceTensors.ts": { - "bytes": 1718, + "bytes": 1733, "imports": [ { "path": "dist/tfjs.esm.js" @@ -570,7 +570,7 @@ ] }, "src/dom/fetchOrThrow.ts": { - "bytes": 348, + "bytes": 390, "imports": [ { "path": "src/env/index.ts" @@ -578,7 +578,7 @@ ] }, "src/dom/fetchImage.ts": { - "bytes": 447, + "bytes": 451, "imports": [ { "path": "src/dom/bufferToImage.ts" @@ -589,7 +589,7 @@ ] }, "src/dom/fetchJson.ts": { - "bytes": 154, + "bytes": 155, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -597,7 +597,7 @@ ] }, "src/dom/fetchNetWeights.ts": { - "bytes": 199, + "bytes": 200, "imports": [ { "path": "src/dom/fetchOrThrow.ts" @@ -605,11 +605,11 @@ ] }, "src/common/getModelUris.ts": { - "bytes": 990, + "bytes": 1052, "imports": [] }, "src/dom/loadWeightMap.ts": { - "bytes": 549, + "bytes": 555, "imports": [ { "path": "dist/tfjs.esm.js" @@ -623,7 +623,7 @@ ] }, "src/dom/matchDimensions.ts": { - "bytes": 396, + "bytes": 401, "imports": [ { "path": "src/dom/getMediaDimensions.ts" @@ -631,11 +631,11 @@ ] }, "src/dom/types.ts": { - "bytes": 385, + "bytes": 386, "imports": [] }, "src/dom/index.ts": { - "bytes": 674, + "bytes": 696, "imports": [ { "path": "src/dom/awaitMediaLoaded.ts" @@ -720,7 +720,7 @@ ] }, "src/common/depthwiseSeparableConv.ts": { - "bytes": 411, + "bytes": 417, "imports": [ { "path": "dist/tfjs.esm.js" @@ -728,7 +728,7 @@ ] }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytes": 2021, + "bytes": 2041, "imports": [ { "path": "dist/tfjs.esm.js" @@ -739,7 +739,7 @@ ] }, "src/common/convLayer.ts": { - "bytes": 425, + "bytes": 431, "imports": [ { "path": "dist/tfjs.esm.js" @@ -747,11 +747,11 @@ ] }, "src/common/disposeUnusedWeightTensors.ts": { - "bytes": 284, + "bytes": 290, "imports": [] }, "src/common/extractConvParamsFactory.ts": { - "bytes": 768, + "bytes": 769, "imports": [ { "path": "dist/tfjs.esm.js" @@ -767,11 +767,11 @@ ] }, "src/common/types.ts": { - "bytes": 513, + "bytes": 800, "imports": [] }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytes": 1490, + "bytes": 1536, "imports": [ { "path": "dist/tfjs.esm.js" @@ -782,7 +782,7 @@ ] }, "src/common/extractWeightEntryFactory.ts": { - "bytes": 587, + "bytes": 579, "imports": [ { "path": "src/utils/index.ts" @@ -790,11 +790,11 @@ ] }, "src/common/extractWeightsFactory.ts": { - "bytes": 433, + "bytes": 441, "imports": [] }, "src/common/index.ts": { - "bytes": 388, + "bytes": 399, "imports": [ { "path": "src/common/convLayer.ts" @@ -829,7 +829,7 @@ ] }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytes": 1568, + "bytes": 1587, "imports": [ { "path": "src/common/index.ts" @@ -837,7 +837,7 @@ ] }, "src/faceFeatureExtractor/extractParams.ts": { - "bytes": 1008, + "bytes": 1030, "imports": [ { "path": "src/common/index.ts" @@ -848,11 +848,11 @@ ] }, "src/common/loadConvParamsFactory.ts": { - "bytes": 426, + "bytes": 469, "imports": [] }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytes": 1522, + "bytes": 1547, "imports": [ { "path": "src/common/index.ts" @@ -863,7 +863,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytes": 833, + "bytes": 841, "imports": [ { "path": "src/common/index.ts" @@ -874,7 +874,7 @@ ] }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytes": 1794, + "bytes": 1809, "imports": [ { "path": "dist/tfjs.esm.js" @@ -900,7 +900,7 @@ ] }, "src/common/fullyConnectedLayer.ts": { - "bytes": 275, + "bytes": 266, "imports": [ { "path": "dist/tfjs.esm.js" @@ -908,7 +908,7 @@ ] }, "src/faceProcessor/extractParams.ts": { - "bytes": 751, + "bytes": 759, "imports": [ { "path": "src/common/index.ts" @@ -916,7 +916,7 @@ ] }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytes": 839, + "bytes": 826, "imports": [ { "path": "src/common/index.ts" @@ -924,11 +924,11 @@ ] }, "src/faceProcessor/util.ts": { - "bytes": 417, + "bytes": 424, "imports": [] }, "src/faceProcessor/FaceProcessor.ts": { - "bytes": 3015, + "bytes": 3037, "imports": [ { "path": "dist/tfjs.esm.js" @@ -954,11 +954,11 @@ ] }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytes": 855, + "bytes": 869, "imports": [] }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytes": 1648, + "bytes": 1667, "imports": [ { "path": "dist/tfjs.esm.js" @@ -978,7 +978,7 @@ ] }, "src/faceExpressionNet/index.ts": { - "bytes": 71, + "bytes": 72, "imports": [ { "path": "src/faceExpressionNet/FaceExpressionNet.ts" @@ -989,7 +989,7 @@ ] }, "src/factories/WithFaceExpressions.ts": { - "bytes": 533, + "bytes": 524, "imports": [ { "path": "src/faceExpressionNet/FaceExpressions.ts" @@ -997,7 +997,7 @@ ] }, "src/draw/drawFaceExpressions.ts": { - "bytes": 1519, + "bytes": 1612, "imports": [ { "path": "src/classes/index.ts" @@ -1020,7 +1020,7 @@ ] }, "src/factories/WithFaceLandmarks.ts": { - "bytes": 1507, + "bytes": 1643, "imports": [ { "path": "src/classes/FaceDetection.ts" @@ -1034,7 +1034,7 @@ ] }, "src/draw/DrawFaceLandmarks.ts": { - "bytes": 3371, + "bytes": 3528, "imports": [ { "path": "src/classes/FaceLandmarks.ts" @@ -1054,7 +1054,7 @@ ] }, "src/draw/index.ts": { - "bytes": 194, + "bytes": 201, "imports": [ { "path": "src/draw/drawContour.ts" @@ -1076,8 +1076,12 @@ } ] }, + "package.json": { + "bytes": 1719, + "imports": [] + }, "src/xception/extractParams.ts": { - "bytes": 3412, + "bytes": 3440, "imports": [ { "path": "src/common/index.ts" @@ -1088,7 +1092,7 @@ ] }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytes": 3105, + "bytes": 3133, "imports": [ { "path": "src/common/index.ts" @@ -1102,7 +1106,7 @@ ] }, "src/xception/TinyXception.ts": { - "bytes": 3123, + "bytes": 3151, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1131,7 +1135,7 @@ ] }, "src/ageGenderNet/extractParams.ts": { - "bytes": 769, + "bytes": 778, "imports": [ { "path": "src/common/index.ts" @@ -1139,7 +1143,7 @@ ] }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytes": 906, + "bytes": 894, "imports": [ { "path": "src/common/index.ts" @@ -1147,11 +1151,11 @@ ] }, "src/ageGenderNet/types.ts": { - "bytes": 399, + "bytes": 528, "imports": [] }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytes": 4223, + "bytes": 4272, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1183,7 +1187,7 @@ ] }, "src/ageGenderNet/index.ts": { - "bytes": 56, + "bytes": 57, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1194,7 +1198,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytes": 3695, + "bytes": 3720, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1217,7 +1221,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytes": 619, + "bytes": 622, "imports": [ { "path": "src/faceFeatureExtractor/FaceFeatureExtractor.ts" @@ -1228,7 +1232,7 @@ ] }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytes": 797, + "bytes": 805, "imports": [ { "path": "src/common/index.ts" @@ -1239,7 +1243,7 @@ ] }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytes": 951, + "bytes": 960, "imports": [ { "path": "src/common/index.ts" @@ -1250,7 +1254,7 @@ ] }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytes": 1805, + "bytes": 1819, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1276,7 +1280,7 @@ ] }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytes": 656, + "bytes": 659, "imports": [ { "path": "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts" @@ -1287,7 +1291,7 @@ ] }, "src/faceLandmarkNet/index.ts": { - "bytes": 194, + "bytes": 195, "imports": [ { "path": "src/faceLandmarkNet/FaceLandmark68Net.ts" @@ -1301,7 +1305,7 @@ ] }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytes": 231, + "bytes": 232, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1309,7 +1313,7 @@ ] }, "src/faceRecognitionNet/convLayer.ts": { - "bytes": 844, + "bytes": 853, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1320,7 +1324,7 @@ ] }, "src/faceRecognitionNet/extractParams.ts": { - "bytes": 4855, + "bytes": 4910, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1334,7 +1338,7 @@ ] }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytes": 3121, + "bytes": 3104, "imports": [ { "path": "src/common/index.ts" @@ -1345,7 +1349,7 @@ ] }, "src/faceRecognitionNet/residualLayer.ts": { - "bytes": 1321, + "bytes": 1345, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1356,7 +1360,7 @@ ] }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytes": 2946, + "bytes": 2984, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1385,7 +1389,7 @@ ] }, "src/faceRecognitionNet/index.ts": { - "bytes": 248, + "bytes": 252, "imports": [ { "path": "src/faceRecognitionNet/FaceRecognitionNet.ts" @@ -1396,15 +1400,15 @@ ] }, "src/factories/WithFaceDescriptor.ts": { - "bytes": 310, + "bytes": 301, "imports": [] }, "src/factories/WithAge.ts": { - "bytes": 343, + "bytes": 334, "imports": [] }, "src/factories/WithGender.ts": { - "bytes": 633, + "bytes": 618, "imports": [ { "path": "src/ageGenderNet/types.ts" @@ -1415,7 +1419,7 @@ ] }, "src/factories/index.ts": { - "bytes": 201, + "bytes": 208, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1438,7 +1442,7 @@ ] }, "src/ssdMobilenetv1/extractParams.ts": { - "bytes": 8250, + "bytes": 8342, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1449,7 +1453,7 @@ ] }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytes": 5858, + "bytes": 5785, "imports": [ { "path": "src/common/index.ts" @@ -1460,7 +1464,7 @@ ] }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytes": 390, + "bytes": 394, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1468,7 +1472,7 @@ ] }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytes": 1794, + "bytes": 1814, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1479,11 +1483,11 @@ ] }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytes": 2193, + "bytes": 2190, "imports": [] }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytes": 2160, + "bytes": 2190, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1491,7 +1495,7 @@ ] }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytes": 612, + "bytes": 620, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1502,7 +1506,7 @@ ] }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytes": 2036, + "bytes": 2058, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1516,11 +1520,11 @@ ] }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytes": 872, + "bytes": 881, "imports": [] }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytes": 3784, + "bytes": 3829, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1561,7 +1565,7 @@ ] }, "src/ssdMobilenetv1/index.ts": { - "bytes": 466, + "bytes": 471, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1.ts" @@ -1575,7 +1579,7 @@ ] }, "src/tinyYolov2/const.ts": { - "bytes": 695, + "bytes": 704, "imports": [ { "path": "src/classes/index.ts" @@ -1583,11 +1587,11 @@ ] }, "src/tinyYolov2/config.ts": { - "bytes": 1696, + "bytes": 1701, "imports": [] }, "src/tinyYolov2/leaky.ts": { - "bytes": 269, + "bytes": 274, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1595,7 +1599,7 @@ ] }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytes": 528, + "bytes": 535, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1606,7 +1610,7 @@ ] }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytes": 500, + "bytes": 505, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1617,7 +1621,7 @@ ] }, "src/tinyYolov2/extractParams.ts": { - "bytes": 3862, + "bytes": 3921, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1634,7 +1638,7 @@ ] }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytes": 3265, + "bytes": 3287, "imports": [ { "path": "src/common/disposeUnusedWeightTensors.ts" @@ -1648,11 +1652,11 @@ ] }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytes": 987, + "bytes": 913, "imports": [] }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytes": 9605, + "bytes": 9703, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1705,7 +1709,7 @@ ] }, "src/tinyYolov2/TinyYolov2.ts": { - "bytes": 1792, + "bytes": 1804, "imports": [ { "path": "src/classes/index.ts" @@ -1719,11 +1723,11 @@ ] }, "src/tinyYolov2/types.ts": { - "bytes": 954, + "bytes": 955, "imports": [] }, "src/tinyYolov2/index.ts": { - "bytes": 342, + "bytes": 349, "imports": [ { "path": "src/tinyYolov2/TinyYolov2.ts" @@ -1740,7 +1744,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytes": 271, + "bytes": 272, "imports": [ { "path": "src/tinyYolov2/index.ts" @@ -1748,11 +1752,11 @@ ] }, "src/globalApi/ComposableTask.ts": { - "bytes": 273, + "bytes": 322, "imports": [] }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytes": 1848, + "bytes": 2040, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1766,7 +1770,7 @@ ] }, "src/tinyFaceDetector/const.ts": { - "bytes": 349, + "bytes": 354, "imports": [ { "path": "src/classes/index.ts" @@ -1774,7 +1778,7 @@ ] }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytes": 1463, + "bytes": 1473, "imports": [ { "path": "src/classes/index.ts" @@ -1788,7 +1792,7 @@ ] }, "src/globalApi/nets.ts": { - "bytes": 6529, + "bytes": 6336, "imports": [ { "path": "src/ageGenderNet/AgeGenderNet.ts" @@ -1817,7 +1821,7 @@ ] }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytes": 3635, + "bytes": 3830, "imports": [ { "path": "src/factories/WithFaceExpressions.ts" @@ -1840,7 +1844,7 @@ ] }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytes": 3815, + "bytes": 4011, "imports": [ { "path": "src/factories/WithAge.ts" @@ -1866,7 +1870,7 @@ ] }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytes": 3029, + "bytes": 3215, "imports": [ { "path": "src/factories/WithFaceDescriptor.ts" @@ -1889,7 +1893,7 @@ ] }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytes": 3807, + "bytes": 4005, "imports": [ { "path": "dist/tfjs.esm.js" @@ -1918,7 +1922,7 @@ ] }, "src/globalApi/DetectFacesTasks.ts": { - "bytes": 4073, + "bytes": 4604, "imports": [ { "path": "src/factories/WithFaceDetection.ts" @@ -1950,7 +1954,7 @@ ] }, "src/globalApi/detectFaces.ts": { - "bytes": 633, + "bytes": 638, "imports": [ { "path": "src/ssdMobilenetv1/SsdMobilenetv1Options.ts" @@ -1961,7 +1965,7 @@ ] }, "src/globalApi/allFaces.ts": { - "bytes": 1283, + "bytes": 1056, "imports": [ { "path": "src/ssdMobilenetv1/index.ts" @@ -1979,7 +1983,7 @@ "imports": [] }, "src/globalApi/FaceMatcher.ts": { - "bytes": 2973, + "bytes": 2992, "imports": [ { "path": "src/classes/FaceMatch.ts" @@ -1993,11 +1997,11 @@ ] }, "src/globalApi/types.ts": { - "bytes": 512, + "bytes": 556, "imports": [] }, "src/globalApi/index.ts": { - "bytes": 292, + "bytes": 300, "imports": [ { "path": "src/globalApi/allFaces.ts" @@ -2029,7 +2033,7 @@ ] }, "src/tinyFaceDetector/index.ts": { - "bytes": 281, + "bytes": 285, "imports": [ { "path": "src/tinyFaceDetector/TinyFaceDetector.ts" @@ -2062,12 +2066,8 @@ } ] }, - "package.json": { - "bytes": 1363, - "imports": [] - }, "src/index.ts": { - "bytes": 988, + "bytes": 1027, "imports": [ { "path": "dist/tfjs.esm.js" @@ -2078,6 +2078,9 @@ { "path": "src/utils/index.ts" }, + { + "path": "package.json" + }, { "path": "src/ageGenderNet/index.ts" }, @@ -2125,9 +2128,6 @@ }, { "path": "src/resizeResults.ts" - }, - { - "path": "package.json" } ] } @@ -2136,7 +2136,7 @@ "dist/face-api.node.js.map": { "imports": [], "inputs": {}, - "bytes": 392028 + "bytes": 303796 }, "dist/face-api.node.js": { "imports": [], @@ -2149,7 +2149,7 @@ "bytesInOutput": 229 }, "src/index.ts": { - "bytesInOutput": 4767 + "bytesInOutput": 4729 }, "src/draw/index.ts": { "bytesInOutput": 447 @@ -2158,13 +2158,13 @@ "bytesInOutput": 313 }, "src/utils/index.ts": { - "bytesInOutput": 1563 + "bytesInOutput": 1561 }, "src/classes/Dimensions.ts": { "bytesInOutput": 394 }, "src/classes/Point.ts": { - "bytesInOutput": 490 + "bytesInOutput": 472 }, "src/classes/Box.ts": { "bytesInOutput": 3300 @@ -2197,7 +2197,7 @@ "bytesInOutput": 341 }, "src/ops/padToSquare.ts": { - "bytesInOutput": 880 + "bytesInOutput": 888 }, "src/ops/shuffleArray.ts": { "bytesInOutput": 188 @@ -2206,7 +2206,7 @@ "bytesInOutput": 135 }, "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1899 + "bytesInOutput": 1884 }, "src/classes/FaceLandmarks5.ts": { "bytesInOutput": 153 @@ -2227,22 +2227,22 @@ "bytesInOutput": 508 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 205 + "bytesInOutput": 194 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 483 + "bytesInOutput": 478 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 398 + "bytesInOutput": 374 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 818 + "bytesInOutput": 714 }, "src/env/isBrowser.ts": { "bytesInOutput": 274 }, "src/env/index.ts": { - "bytesInOutput": 1154 + "bytesInOutput": 1146 }, "src/dom/resolveInput.ts": { "bytesInOutput": 104 @@ -2254,7 +2254,7 @@ "bytesInOutput": 2254 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 831 + "bytesInOutput": 821 }, "src/draw/drawDetections.ts": { "bytesInOutput": 424 @@ -2272,7 +2272,7 @@ "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 481 + "bytesInOutput": 482 }, "src/dom/getMediaDimensions.ts": { "bytesInOutput": 265 @@ -2302,7 +2302,7 @@ "bytesInOutput": 769 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 217 + "bytesInOutput": 212 }, "src/dom/fetchImage.ts": { "bytesInOutput": 269 @@ -2344,19 +2344,19 @@ "bytesInOutput": 175 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 467 + "bytesInOutput": 460 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 435 + "bytesInOutput": 428 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 960 + "bytesInOutput": 945 }, "src/common/types.ts": { "bytesInOutput": 173 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 373 + "bytesInOutput": 366 }, "src/common/extractWeightsFactory.ts": { "bytesInOutput": 311 @@ -2368,7 +2368,7 @@ "bytesInOutput": 570 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 195 + "bytesInOutput": 187 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { "bytesInOutput": 984 @@ -2398,19 +2398,22 @@ "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 217 + "bytesInOutput": 206 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 783 + "bytesInOutput": 803 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 603 + "bytesInOutput": 592 }, "src/draw/DrawFaceLandmarks.ts": { "bytesInOutput": 1763 }, + "package.json": { + "bytesInOutput": 19 + }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytesInOutput": 2558 + "bytesInOutput": 2554 }, "src/xception/TinyXception.ts": { "bytesInOutput": 1917 @@ -2467,7 +2470,7 @@ "bytesInOutput": 3416 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2100 + "bytesInOutput": 2099 }, "src/faceRecognitionNet/residualLayer.ts": { "bytesInOutput": 806 @@ -2476,16 +2479,16 @@ "bytesInOutput": 113 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 128 + "bytesInOutput": 117 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 159 + "bytesInOutput": 148 }, "src/factories/WithGender.ts": { - "bytesInOutput": 279 + "bytesInOutput": 268 }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { "bytesInOutput": 1928 @@ -2524,7 +2527,7 @@ "bytesInOutput": 485 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5910 + "bytesInOutput": 5928 }, "src/tinyYolov2/config.ts": { "bytesInOutput": 1186 @@ -2545,10 +2548,10 @@ "bytesInOutput": 2042 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 901 + "bytesInOutput": 588 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 833 + "bytesInOutput": 818 }, "src/tinyYolov2/index.ts": { "bytesInOutput": 139 @@ -2575,22 +2578,22 @@ "bytesInOutput": 1516 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1701 + "bytesInOutput": 1695 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1795 + "bytesInOutput": 1789 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { "bytesInOutput": 1417 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2219 + "bytesInOutput": 2221 }, "src/globalApi/detectFaces.ts": { "bytesInOutput": 224 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 620 + "bytesInOutput": 392 }, "src/globalApi/index.ts": { "bytesInOutput": 0 @@ -2606,12 +2609,9 @@ }, "src/resizeResults.ts": { "bytesInOutput": 824 - }, - "package.json": { - "bytesInOutput": 19 } }, - "bytes": 134176 + "bytes": 133313 } } } diff --git a/dist/tfjs.esm.js b/dist/tfjs.esm.js index c41e049..08d423a 100644 --- a/dist/tfjs.esm.js +++ b/dist/tfjs.esm.js @@ -27,7 +27,7 @@ Expected: ${expectedFlat}.`)}}function expectPromiseToFail(fn,done){fn().then(() 2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return fn}else{let config=identifier;if(config.className==null||config.config==null)throw new ValueError(`${printableModuleName}: Improper config format: ${JSON.stringify(config)}. 'className' and 'config' must set.`);let className=config.className,cls,fromConfig;if(className in customObjects?[cls,fromConfig]=customObjects[className]:className in _GLOBAL_CUSTOM_OBJECTS?[cls,fromConfig]=_GLOBAL_CUSTOM_OBJECTS.className:className in moduleObjects&&([cls,fromConfig]=moduleObjects[className]),cls==null)throw new ValueError(`Unknown ${printableModuleName}: ${className}. This may be due to one of the following reasons: 1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config.config);let returnObj=fromConfig(cls,config.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique4(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now2=util_exports.now();return now2-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config={className,config:{}};return deserializeConstraint(config)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config){return new MinMaxNorm(config)}var exports_initializers_exports={};__export(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones7,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros7});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_INTERPOLATION_FORMAT_VALUES=["nearest","bilinear"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"];var nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkInterpolationFormat(value){checkStringTypeUnionValue(VALID_INTERPOLATION_FORMAT_VALUES,"InterpolationFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod7=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile6(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile6(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean8=0,stddev=1,dtype,seed){return randomNormal(shape,mean8,stddev,dtype,seed)}function dot4(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather6(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square23(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu5(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity2=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity2.className="Identity";serialization_exports.registerClass(Identity2);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config={};return config.className=className,config.config={},deserializeInitializer(config)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros7(){return new Zeros}function ones7(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity(args){return new Identity2(args)}function varianceScaling(config){return new VarianceScaling(config)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add30,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d4,conv2d:()=>conv2d9,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d2,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d4,dot:()=>dot5,dropout:()=>dropout3,elu:()=>elu6,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum7,minimum:()=>minimum6,multiply:()=>multiply,permute:()=>permute,prelu:()=>prelu5,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape73,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax3,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable2=variableAndValue[0];variable2.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor165,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor165.sourceLayer,nodeIndex=tensor165.nodeIndex),layer.inboundNodes.length===0)return[tensor165];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log10=mul(div(1,this.seen),this.totals[key]);logs5[key]=log10,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square23(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square23(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon(),Number.MAX_VALUE),firstLog=log(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon(),Number.MAX_VALUE),secondLog=log(add2(1,clippedTrue));return mean(square23(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square23(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg21=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg21,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon(),1-epsilon()),neg(sum2(mul(target.toFloat(),log(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon(),1-epsilon());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon(),1-epsilon()),y=log(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon(),1),clippedPred=clipByValue(yPred,epsilon(),1);return sum2(mul(yTrue,log(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log(add2(epsilon(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast44(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast44(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon()),Adam:()=>train.adam(.001,.9,.999,epsilon()),Adamax:()=>train.adamax(.002,.9,.999,epsilon(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack8=[],marks=[];for(stack8.push(fetch3);stack8.length>0;){let top=stack8[stack8.length-1];if(visited.has(top.name)){stack8.pop();continue}let topIsMarked=marks[marks.length-1]===stack8.length-1;if(top.inputs.length===0||topIsMarked)stack8.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack8.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack8.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique4(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor165,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor165.sourceLayer,nodeIndex=tensor165.nodeIndex,tensorIndex=tensor165.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor165.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version2}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config.customObjects!=null?config.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config.name,layersFromConfig=config.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data){if(data.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data[0],ys:data[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather6(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range3(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor165=tensors[name];oldTensorIds.indexOf(tensor165.id)===-1&&tensorsToDispose.push(tensor165)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data!=null){let gotUnexpectedData=!1;if(isDataArray(data)&&data.length>0)gotUnexpectedData=!0;else if(isDataDict(data)){for(let key in data)if(data.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data}`)}return[]}if(data==null)return names.map(name=>null);let arrays;if(isDataDict(data)){data=data,arrays=[];for(let name of names){if(data[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data[name])}}else if(isDataArray(data)){if(data=data,data.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data}`);arrays=data}else{if(data=data,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data.shape}`);arrays=[data]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique4(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique4(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data.shape)}.`);arrays=[data]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor165,i)=>{tensor165==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range3(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data=>{let lossValues=[],inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version2}`,convertedBy:null},includeOptimizer=config==null?!1:config.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer9,specs){let name2Tensor=io_exports.decodeWeights(buffer9,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config instanceof Array){if(!(config[0].className!=null)||config[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config}else util_exports.assert(config.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config.layers,delete config.layers,extraModelConfig=config;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2=void 0,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config){return new Sequential(config)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config){return Input(config)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu2=class extends Activation{apply(x,alpha=1){return elu5(x,alpha)}};Elu2.className="elu";serialization_exports.registerClass(Elu2);var Selu2=class extends Activation{apply(x){return selu(x)}};Selu2.className="selu";serialization_exports.registerClass(Selu2);var Relu2=class extends Activation{apply(x){return relu(x)}};Relu2.className="relu";serialization_exports.registerClass(Relu2);var Relu62=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu62.className="relu6";serialization_exports.registerClass(Relu62);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid2=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid2.className="sigmoid";serialization_exports.registerClass(Sigmoid2);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus2=class extends Activation{apply(x){return softplus(x)}};Softplus2.className="softplus";serialization_exports.registerClass(Softplus2);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh2=class extends Activation{apply(x){return tanh2(x)}};Tanh2.className="tanh";serialization_exports.registerClass(Tanh2);var Softmax2=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax2.className="softmax";serialization_exports.registerClass(Softmax2);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config={};return config.className="linear",config.config={},deserializeActivation(config)}if(typeof identifier=="string"){let config={};return config.className=identifier,config.config={},deserializeActivation(config)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square23(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config){return new cls({l1:config.l1,l2:config.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config={className,config:{}};return deserializeRegularizer(config)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D2=class extends Conv{constructor(args){super(2,args);Conv2D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D2.className="Conv2D";serialization_exports.registerClass(Conv2D2);var Conv3D2=class extends Conv{constructor(args){super(3,args);Conv3D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D2.className="Conv3D";serialization_exports.registerClass(Conv3D2);var Conv2DTranspose=class extends Conv2D2{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config=super.getConfig();return delete config.dilationRate,config}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config){super(rank,config);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config.kernelInitializer!=null||config.kernelRegularizer!=null||config.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config.padding!=null&&config.padding!=="same"&&config.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config.padding)}`);this.depthMultiplier=config.depthMultiplier==null?1:config.depthMultiplier,this.depthwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config=super.getConfig();return delete config.rank,delete config.kernelInitializer,delete config.kernelRegularizer,delete config.kernelConstraint,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config=super.getConfig();return delete config.rank,delete config.dataFormat,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.interpolation=args.interpolation==null?"nearest":args.interpolation,checkInterpolationFormat(this.interpolation)}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width])}})}getConfig(){let config={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d3(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d3(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config=super.getConfig();return config.depthMultiplier=this.depthMultiplier,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range3(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range3(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step9=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step9,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile6(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile6(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cellConfig=config.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min5([1,max7([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min5([1,max7([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot4(mul(inputs,dpMask),this.kernel.read()):h=dot4(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot4(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return new cls(config)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min5([1,max7([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min5([1,max7([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min5([1,max7([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min5([1,max7([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config={cells:cellConfigs};return Object.assign({},baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cells=[];for(let cellConfig of config.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones8(),rate),createMask=()=>inTrainPhase(droppedInputs,ones8,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config){return new cls(config)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot4(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot4(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config={n:this.n},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape2=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Reshape2.className="Reshape";serialization_exports.registerClass(Reshape2);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range3(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={maskValue:this.maskValue};return Object.assign(config,baseConfig),config}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast44(input2,"int32"));let output=gather6(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique4(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max7(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range3(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range3(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={stddev:this.stddev};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast44(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean8,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean8,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean8,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean8,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean8=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean8,variance,beta,gamma,epsilon3);return[normed,mean8,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean8=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range3(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean8.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean8,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range3(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range3(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range3(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean8,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable2,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable2.read(),updateDelta=origValue.sub(value).mul(decay);variable2.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean8,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique4(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean8,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config,customObjects={}){let layerConfig=config.layer,layer=deserialize(layerConfig,customObjects);delete config.layer;let newConfig={layer};return Object.assign(newConfig,config),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step9=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step9,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor165 of additionalInputs)if(tensor165 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}static fromConfig(cls,config){let rnnLayer=deserialize(config.layer);if(delete config.layer,config.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu6(args){return new ELU(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu5(args){return new PReLU(args)}function softmax3(args){return new Softmax3(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d4(args){return new Conv1D(args)}function conv2d9(args){return new Conv2D2(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d2(args){return new Conv3D2(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d4(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape73(args){return new Reshape2(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add30(args){return new Add2(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum7(args){return new Maximum2(args)}function minimum6(args){return new Minimum2(args)}function multiply(args){return new Multiply2(args)}function dot5(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config){return new L1L2(config)}function l12(config){return l1(config)}function l22(config){return l2(config)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less6(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less6:this.mode==="max"?this.monitorFunc=greater11:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater11:this.monitorFunc=less6,this.monitorFunc===less6&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less6?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping};var DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor165=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data=tensor165.dataSync();return inputParam.type==="number"?data[0]:util_exports.toNestedArray(tensor165.shape,data)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor165=resourceManager.getHashTableHandleByName(nodeName);if(tensor165!=null)return tensor165}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad10=getParamValue("pad",node,tensorMap,context);if(pad10==="explicit"){pad10=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad10[i*2],explicitPadding[i][1]=pad10[i*2+1];return explicitPadding}return pad10}function cloneTensor(tensor165){return tensor165.kept?tensor165:clone(tensor165)}var arithmetic_exports={};__export(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{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:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export(control_exports,{json:()=>json3});var json3=[{tfOpName:"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:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{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"}]}],creation_exports={};__export(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"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:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],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:!0}]},{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:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}];var OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}};var executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round2(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Relu6":return[relu6(getParamValue("x",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor165.tensor.id))&&tensor165.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor165){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor165.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, +2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config.config);let returnObj=fromConfig(cls,config.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique4(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now2=util_exports.now();return now2-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config={className,config:{}};return deserializeConstraint(config)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config){return new MinMaxNorm(config)}var exports_initializers_exports={};__export(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones7,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros7});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_INTERPOLATION_FORMAT_VALUES=["nearest","bilinear"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"];var nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkInterpolationFormat(value){checkStringTypeUnionValue(VALID_INTERPOLATION_FORMAT_VALUES,"InterpolationFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod7=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile6(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile6(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean8=0,stddev=1,dtype,seed){return randomNormal(shape,mean8,stddev,dtype,seed)}function dot4(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather6(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square23(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu5(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity2=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity2.className="Identity";serialization_exports.registerClass(Identity2);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config={};return config.className=className,config.config={},deserializeInitializer(config)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros7(){return new Zeros}function ones7(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity(args){return new Identity2(args)}function varianceScaling(config){return new VarianceScaling(config)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add30,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d4,conv2d:()=>conv2d9,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d2,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d4,dot:()=>dot5,dropout:()=>dropout3,elu:()=>elu6,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum7,minimum:()=>minimum6,multiply:()=>multiply,permute:()=>permute,prelu:()=>prelu5,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape73,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax3,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable2=variableAndValue[0];variable2.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor165,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor165.sourceLayer,nodeIndex=tensor165.nodeIndex),layer.inboundNodes.length===0)return[tensor165];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log10=mul(div(1,this.seen),this.totals[key]);logs5[key]=log10,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square23(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square23(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon(),Number.MAX_VALUE),firstLog=log(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon(),Number.MAX_VALUE),secondLog=log(add2(1,clippedTrue));return mean(square23(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square23(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg21=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg21,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon(),1-epsilon()),neg(sum2(mul(target.toFloat(),log(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon(),1-epsilon());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon(),1-epsilon()),y=log(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon(),1),clippedPred=clipByValue(yPred,epsilon(),1);return sum2(mul(yTrue,log(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log(add2(epsilon(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast44(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast44(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon()),Adam:()=>train.adam(.001,.9,.999,epsilon()),Adamax:()=>train.adamax(.002,.9,.999,epsilon(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack8=[],marks=[];for(stack8.push(fetch3);stack8.length>0;){let top=stack8[stack8.length-1];if(visited.has(top.name)){stack8.pop();continue}let topIsMarked=marks[marks.length-1]===stack8.length-1;if(top.inputs.length===0||topIsMarked)stack8.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack8.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack8.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique4(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor165,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor165.sourceLayer,nodeIndex=tensor165.nodeIndex,tensorIndex=tensor165.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor165.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version2}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config.customObjects!=null?config.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config.name,layersFromConfig=config.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data){if(data.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data[0],ys:data[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather6(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range3(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor165=tensors[name];oldTensorIds.indexOf(tensor165.id)===-1&&tensorsToDispose.push(tensor165)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data!=null){let gotUnexpectedData=!1;if(isDataArray(data)&&data.length>0)gotUnexpectedData=!0;else if(isDataDict(data)){for(let key in data)if(data.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data}`)}return[]}if(data==null)return names.map(name=>null);let arrays;if(isDataDict(data)){data=data,arrays=[];for(let name of names){if(data[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data[name])}}else if(isDataArray(data)){if(data=data,data.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data}`);arrays=data}else{if(data=data,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data.shape}`);arrays=[data]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique4(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique4(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data.shape)}.`);arrays=[data]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor165,i)=>{tensor165==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range3(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data=>{let lossValues=[],inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version2}`,convertedBy:null},includeOptimizer=config==null?!1:config.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer9,specs){let name2Tensor=io_exports.decodeWeights(buffer9,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config instanceof Array){if(!(config[0].className!=null)||config[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config}else util_exports.assert(config.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config.layers,delete config.layers,extraModelConfig=config;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2=void 0,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config){return new Sequential(config)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config){return Input(config)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu2=class extends Activation{apply(x,alpha=1){return elu5(x,alpha)}};Elu2.className="elu";serialization_exports.registerClass(Elu2);var Selu2=class extends Activation{apply(x){return selu(x)}};Selu2.className="selu";serialization_exports.registerClass(Selu2);var Relu2=class extends Activation{apply(x){return relu(x)}};Relu2.className="relu";serialization_exports.registerClass(Relu2);var Relu62=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu62.className="relu6";serialization_exports.registerClass(Relu62);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid2=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid2.className="sigmoid";serialization_exports.registerClass(Sigmoid2);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus2=class extends Activation{apply(x){return softplus(x)}};Softplus2.className="softplus";serialization_exports.registerClass(Softplus2);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh2=class extends Activation{apply(x){return tanh2(x)}};Tanh2.className="tanh";serialization_exports.registerClass(Tanh2);var Softmax2=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax2.className="softmax";serialization_exports.registerClass(Softmax2);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config={};return config.className="linear",config.config={},deserializeActivation(config)}if(typeof identifier=="string"){let config={};return config.className=identifier,config.config={},deserializeActivation(config)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square23(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config){return new cls({l1:config.l1,l2:config.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config={className,config:{}};return deserializeRegularizer(config)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D2=class extends Conv{constructor(args){super(2,args);Conv2D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D2.className="Conv2D";serialization_exports.registerClass(Conv2D2);var Conv3D2=class extends Conv{constructor(args){super(3,args);Conv3D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D2.className="Conv3D";serialization_exports.registerClass(Conv3D2);var Conv2DTranspose=class extends Conv2D2{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config=super.getConfig();return delete config.dilationRate,config}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config){super(rank,config);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config.kernelInitializer!=null||config.kernelRegularizer!=null||config.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config.padding!=null&&config.padding!=="same"&&config.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config.padding)}`);this.depthMultiplier=config.depthMultiplier==null?1:config.depthMultiplier,this.depthwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config=super.getConfig();return delete config.rank,delete config.kernelInitializer,delete config.kernelRegularizer,delete config.kernelConstraint,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config=super.getConfig();return delete config.rank,delete config.dataFormat,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.interpolation=args.interpolation==null?"nearest":args.interpolation,checkInterpolationFormat(this.interpolation)}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width])}})}getConfig(){let config={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d3(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d3(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config=super.getConfig();return config.depthMultiplier=this.depthMultiplier,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range3(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range3(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step9=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step9,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile6(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile6(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cellConfig=config.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min5([1,max7([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min5([1,max7([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot4(mul(inputs,dpMask),this.kernel.read()):h=dot4(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot4(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return new cls(config)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min5([1,max7([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min5([1,max7([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min5([1,max7([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min5([1,max7([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config={cells:cellConfigs};return Object.assign({},baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cells=[];for(let cellConfig of config.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones8(),rate),createMask=()=>inTrainPhase(droppedInputs,ones8,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config){return new cls(config)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot4(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot4(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config={n:this.n},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape2=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Reshape2.className="Reshape";serialization_exports.registerClass(Reshape2);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range3(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={maskValue:this.maskValue};return Object.assign(config,baseConfig),config}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast44(input2,"int32"));let output=gather6(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique4(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max7(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range3(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range3(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={stddev:this.stddev};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast44(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean8,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean8,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean8,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean8,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean8=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean8,variance,beta,gamma,epsilon3);return[normed,mean8,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean8=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range3(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean8.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean8,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range3(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range3(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range3(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean8,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable2,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable2.read(),updateDelta=origValue.sub(value).mul(decay);variable2.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean8,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique4(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean8,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config,customObjects={}){let layerConfig=config.layer,layer=deserialize(layerConfig,customObjects);delete config.layer;let newConfig={layer};return Object.assign(newConfig,config),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step9=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step9,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor165 of additionalInputs)if(tensor165 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}static fromConfig(cls,config){let rnnLayer=deserialize(config.layer);if(delete config.layer,config.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu6(args){return new ELU(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu5(args){return new PReLU(args)}function softmax3(args){return new Softmax3(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d4(args){return new Conv1D(args)}function conv2d9(args){return new Conv2D2(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d2(args){return new Conv3D2(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d4(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape73(args){return new Reshape2(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add30(args){return new Add2(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum7(args){return new Maximum2(args)}function minimum6(args){return new Minimum2(args)}function multiply(args){return new Multiply2(args)}function dot5(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config){return new L1L2(config)}function l12(config){return l1(config)}function l22(config){return l2(config)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less6(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less6:this.mode==="max"?this.monitorFunc=greater11:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater11:this.monitorFunc=less6,this.monitorFunc===less6&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less6?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping};var DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor165=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data=tensor165.dataSync();return inputParam.type==="number"?data[0]:util_exports.toNestedArray(tensor165.shape,data)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor165=resourceManager.getHashTableHandleByName(nodeName);if(tensor165!=null)return tensor165}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad10=getParamValue("pad",node,tensorMap,context);if(pad10==="explicit"){pad10=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad10[i*2],explicitPadding[i][1]=pad10[i*2+1];return explicitPadding}return pad10}function cloneTensor(tensor165){return tensor165.kept?tensor165:clone(tensor165)}var arithmetic_exports={};__export(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{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:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export(control_exports,{json:()=>json3});var json3=[{tfOpName:"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:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{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"}]}],creation_exports={};__export(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"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:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],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:!0}]},{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:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}];var OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}};var executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round2(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Relu6":return[relu6(getParamValue("x",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor165.tensor.id))&&tensor165.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor165){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor165.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because the value dtype is ${tensor165.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor165.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor165.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor165,keep(tensor165),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor165,0))}split(length,tensor165){if(tensor165.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor165.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor165.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is ${totalLength}, and tensor's shape is: ${tensor165.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor165.size/totalLength,tensors=[];tidy(()=>{tensor165=reshape(tensor165,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor165.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor165.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor165.shape,"TensorList shape mismatch: "),keep(tensor165)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor165=>{(keepIds==null||!keepIds.has(tensor165.id))&&tensor165.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor165=>reshape(tensor165,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor165=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor165.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor165,elementShape)}pushBack(tensor165){if(tensor165.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor165.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor165.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor165),this.tensors.push(tensor165)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor165){if(tensor165.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor165.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor165.shape,"TensorList shape mismatch: "),keep(tensor165),this.tensors[elementIndex]=tensor165}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor165,elementShape,elementDtype){let dtype=tensor165.dtype;if(tensor165.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor165.shape}`);if(tensor165.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor165.dtype}, but list elements ${elementDtype}`);let outputShape=tensor165.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor165);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor165,indices,elementShape,numElements){if(indices.length!==tensor165.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor165.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor165.dtype,numElements),tensors=unstack(tensor165,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split7(tensor165,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor165.shape[0])throw new Error(`Expected sum of lengths to be equal to @@ -951,7 +951,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(getChannel(packedInput, ${coords2})); } - `}};var whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice19,shape,isPacked}=texData;if(slice19!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice19,dtype,complexTensorInfos,isPacked}=texData;if(slice19!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer9=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer9=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer9==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer9,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice19}=this.texData.get(dataId),key=slice19&&slice19.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!env().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));dataId=this.write(encodedValues,shape,dtype)}else dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var webgl2={forceHalfFloat};var CHECK_NAN_SNIPPET2=` + `}};var whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice19,shape,isPacked}=texData;if(slice19!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice19,dtype,complexTensorInfos,isPacked}=texData;if(slice19!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer9=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer9=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer9==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer9,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice19}=this.texData.get(dataId),key=slice19&&slice19.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!env().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));dataId=this.write(encodedValues,shape,dtype)}else dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var CHECK_NAN_SNIPPET2=` if (isnan(a)) return a; if (isnan(b)) return b; `,BinaryOpProgram=class{constructor(op2,aShape,bShape){this.variableNames=["A","B"],this.outputShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),this.userCode=` diff --git a/dist/tfjs.esm.js.map b/dist/tfjs.esm.js.map index 3274eae..37fcc33 100644 --- a/dist/tfjs.esm.js.map +++ b/dist/tfjs.esm.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts"], - "sourcesContent": ["", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null], - "mappings": ";;;;;;;ghCAAA,mCCAA,4CA2BA,AAAC,mCAED,oBACE,OAAS,UAAa,OAEtB,GAAG,KAAO,WACR,MAAQ,QAAU,GAAG,GAAK,GAAG,EAAI,sBACjC,UAAG,GAAK,GAAG,GACX,GAAG,GAAK,GAAG,GACJ,GAAG,GAAK,EAAK,IAAG,EAAI,EAAI,IAIjC,GAAG,EAAI,EACP,GAAG,GAAK,KAAK,KACb,GAAG,GAAK,KAAK,KACb,GAAG,GAAK,KAAK,KACb,GAAG,IAAM,KAAK,MACd,AAAI,GAAG,GAAK,GAAK,IAAG,IAAM,GAC1B,GAAG,IAAM,KAAK,MACd,AAAI,GAAG,GAAK,GAAK,IAAG,IAAM,GAC1B,GAAG,IAAM,KAAK,MACd,AAAI,GAAG,GAAK,GAAK,IAAG,IAAM,GAC1B,KAAO,KAGT,mBACE,SAAE,EAAI,EAAE,EACR,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACF,EAGT,yBACE,OAAS,GAAI,MAAK,aACN,MAAQ,KAAK,WACd,GAAG,KACd,YAAK,MAAQ,WAAa,MAAQ,IAAG,OAAS,WAAe,GAC7D,KAAK,OAAS,WACZ,MAAO,QAAU,QAAS,QAAW,GAAK,uBAE5C,KAAK,MAAQ,KACb,AAAI,QACF,CAAI,MAAO,SAAU,UAAU,KAAK,OAAO,IAC3C,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGT,gBACE,MAAQ,gBAEG,eACT,KAAO,KAAK,WACZ,UAAa,EAAG,EAAI,KAAK,OAAQ,KAC/B,GAAK,KAAK,WAAW,GACrB,MAAQ,mBAAsB,EAC9B,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EACL,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EAAI,WAEX,MAAQ,KAAM,GAAK,uBAGrB,MAAO,MAIT,AAAI,SAAU,QAAO,QACnB,QAAO,QAAU,KACZ,AAAI,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,KAAO,OAIZ,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,UC9GnC,8CAGA,AAAC,mCAED,sBACE,OAAS,aAAgB,GAEzB,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EAGP,GAAG,KAAO,WACR,MAAQ,GAAG,EAAK,GAAG,GAAK,GACxB,UAAG,EAAI,GAAG,EACV,GAAG,EAAI,GAAG,EACV,GAAG,EAAI,GAAG,EACH,GAAG,GAAM,GAAG,IAAM,GAAM,EAAK,IAAM,GAG5C,AAAI,OAAU,MAAO,GAEnB,GAAG,EAAI,KAGP,SAAW,KAIb,UAAa,EAAG,EAAI,QAAQ,OAAS,GAAI,IACvC,GAAG,GAAK,QAAQ,WAAW,GAAK,EAChC,GAAG,OAIP,mBACE,SAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,yBACE,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,YAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACb,AAAI,QACF,CAAI,MAAO,SAAU,UAAU,KAAK,OAAO,IAC3C,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGT,AAAI,SAAU,QAAO,QACnB,QAAO,QAAU,KACZ,AAAI,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,OAAS,OAId,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,UC7EnC,8CAGA,AAAC,mCAED,sBACE,OAAS,aAAgB,GAGzB,GAAG,KAAO,WACR,MAAS,GAAG,EAAK,GAAG,IAAM,EAC1B,UAAG,EAAI,GAAG,EAAG,GAAG,EAAI,GAAG,EAAG,GAAG,EAAI,GAAG,EAAG,GAAG,EAAI,GAAG,EACzC,IAAG,EAAK,GAAG,EAAI,OAAS,GAC5B,IAAG,EAAK,GAAG,EAAK,GAAG,GAAK,EAAO,GAAK,GAAK,IAAO,GAGtD,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,EAEP,AAAI,OAAU,MAAO,GAEnB,GAAG,EAAI,KAGP,SAAW,KAIb,UAAa,EAAG,EAAI,QAAQ,OAAS,GAAI,IACvC,GAAG,GAAK,QAAQ,WAAW,GAAK,EAChC,AAAI,GAAK,QAAQ,QACf,IAAG,EAAI,GAAG,GAAK,GAAK,GAAG,IAAM,GAE/B,GAAG,OAIP,mBACE,SAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,yBACE,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,YAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACb,AAAI,QACF,CAAI,MAAO,SAAU,UAAU,KAAK,OAAO,IAC3C,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGT,AAAI,SAAU,QAAO,QACnB,QAAO,QAAU,KACZ,AAAI,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,OAAS,OAId,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,UClFnC,iDAKA,AAAC,mCAED,sBACE,OAAS,KAGT,GAAG,KAAO,WAER,MAAQ,GAAG,IAAO,GAAG,QACrB,SAAI,EAAE,GAAI,GAAM,IAAM,EAAI,EAAI,EAAK,GAAK,GACxC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,GACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,EACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,GAAK,EACnC,EAAI,EAAG,EAAI,EAAK,GAAI,EAAI,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,EACtD,EAAE,GAAK,EACP,GAAG,EAAK,EAAI,EAAK,EACV,GAGT,0BACE,UAAc,GAEd,GAAI,QAAU,OAAO,GAEnB,EAAI,EAAE,GAAK,UAIX,KADA,MAAO,GAAK,MACP,EAAI,EAAG,EAAI,MAAK,OAAQ,EAAE,EAC7B,EAAE,EAAI,GAAM,EAAE,EAAI,IAAM,GACnB,MAAK,WAAW,GAAK,EAAG,EAAI,EAAK,IAAM,GAIhD,KAAO,EAAE,OAAS,GAAG,EAAE,KAAK,GAC5B,IAAK,EAAI,EAAG,EAAI,GAAK,EAAE,KAAO,EAAG,EAAE,EAAE,CAOrC,IANA,AAAI,GAAK,EAAG,EAAI,EAAE,GAAK,GAAS,EAAI,EAAE,GAEtC,IAAG,EAAI,EACP,IAAG,EAAI,EAGF,EAAI,IAAK,EAAI,EAAG,EAAE,EACrB,IAAG,OAIP,MAAK,GAAI,MAGX,mBACE,SAAE,EAAI,EAAE,EAAE,QACV,EAAE,EAAI,EAAE,EACD,EAGT,yBACE,AAAI,MAAQ,MAAM,MAAO,CAAE,GAAI,OAC/B,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,YAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACb,AAAI,QACF,CAAI,OAAM,GAAG,KAAK,OAAO,IACzB,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGT,AAAI,SAAU,QAAO,QACnB,QAAO,QAAU,KACZ,AAAI,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,UAAY,OAIjB,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,UC9FnC,+CAyBA,AAAC,mCAED,sBACE,OAAS,KAGT,GAAG,KAAO,WACR,MAAQ,GAAG,IACH,GAAG,IAAO,GAAG,MAErB,UAAG,EAAI,EAAK,EAAI,WAAc,EAE9B,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GAEX,EAAI,EAAE,GAAK,EAAI,EACf,GAAG,EAAI,EAEC,EAAK,GAAK,IAAM,IAAQ,GAGlC,0BACE,gBAAuB,SAAY,IAYnC,IAXA,AAAI,QAAU,OAAO,GAEnB,GAAI,MACJ,MAAO,MAGP,OAAO,MAAO,KACd,EAAI,EACJ,MAAQ,KAAK,IAAI,MAAO,MAAK,SAG1B,EAAI,EAAG,EAAI,IAAK,EAAI,MAAO,EAAE,EAEhC,AAAI,OAAM,IAAK,MAAK,WAAY,GAAI,IAAM,MAAK,SAE/C,AAAI,IAAM,GAAG,GAAI,GACjB,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,GAAK,EACV,GAAK,IAAM,GACX,AAAI,GAAK,GACP,GAAK,EAAI,WAAc,EACvB,EAAK,EAAE,EAAI,MAAS,EAAI,EACxB,EAAK,AAAK,GAAL,EAAU,EAAI,EAAI,GAW3B,IAPA,AAAI,GAAK,KACP,GAAG,QAAQ,MAAK,QAAU,GAAK,KAAO,IAKxC,EAAI,IACC,EAAI,EAAI,IAAK,EAAI,EAAG,EAAE,EACzB,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GACX,EAAE,GAAK,EAAI,EAGb,IAAG,EAAI,EACP,IAAG,EAAI,EACP,IAAG,EAAI,EAGT,MAAK,GAAI,MAGX,mBACE,SAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAGT,yBACE,AAAI,MAAQ,MAAM,MAAO,CAAE,GAAI,OAC/B,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,YAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACb,AAAI,QACF,CAAI,OAAM,GAAG,KAAK,OAAO,IACzB,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGT,AAAI,SAAU,QAAO,QACnB,QAAO,QAAU,KACZ,AAAI,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,QAAU,OAIf,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,UChJnC,8CAIA,AAAC,mCAED,sBACE,OAAS,aAAgB,GAGzB,GAAG,KAAO,WACR,MAAQ,GAAG,IAAO,GAAG,IAAO,GAAG,IAAO,GAAG,EACzC,SAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,GAAG,EAAI,EAAK,GAAK,GAAO,IAAM,GAAM,EACpC,GAAG,EAAI,EAAK,EAAI,EAAK,EACrB,GAAG,EAAK,GAAK,GAAO,IAAM,GAAM,EACzB,GAAG,EAAK,EAAI,EAAK,GAmB1B,GAAG,EAAI,EACP,GAAG,EAAI,EACP,GAAG,EAAI,WAAa,EACpB,GAAG,EAAI,WAEP,AAAI,OAAS,KAAK,MAAM,MAEtB,IAAG,EAAK,KAAO,WAAe,EAC9B,GAAG,EAAI,KAAO,GAGd,SAAW,KAIb,UAAa,EAAG,EAAI,QAAQ,OAAS,GAAI,IACvC,GAAG,GAAK,QAAQ,WAAW,GAAK,EAChC,GAAG,OAIP,mBACE,SAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,yBACE,OAAS,GAAI,QAAO,aACR,MAAQ,KAAK,WACd,WAAa,MAAQ,IAAG,SAAW,GAAK,YACnD,YAAK,OAAS,WACZ,EACE,SAAU,GAAG,SAAW,OACb,IAAG,SAAW,GAAK,kBAChB,KAAM,KAAQ,IAAK,UAC1B,SAAW,GACpB,MAAO,SAET,KAAK,MAAQ,GAAG,KAChB,KAAK,MAAQ,KACb,AAAI,QACF,CAAI,MAAO,SAAU,UAAU,KAAK,OAAO,IAC3C,KAAK,MAAQ,WAAa,MAAO,MAAK,GAAI,MAErC,KAGT,AAAI,SAAU,QAAO,QACnB,QAAO,QAAU,KACZ,AAAI,SAAU,QAAO,IAC1B,QAAO,WAAa,MAAO,QAE3B,KAAK,OAAS,OAId,SACC,MAAO,SAAW,UAAY,OAC9B,MAAO,SAAW,YAAc,UCnGnC,kCCAA,kDAwBA,AAAC,sBAID,YAAa,WACD,WACC,SACA,WACC,oBACG,KAAK,IAAI,MAAO,qBACd,KAAK,IAAI,EAAG,iBAChB,aAAe,OACnB,MAAQ,aAOnB,4CACE,QAAU,GACV,QAAW,SAAW,GAAQ,CAAE,QAAS,IAAU,SAAW,GAG9D,cAAgB,OAAO,SACrB,QAAQ,QAAU,CAAC,KAAM,SAAS,QACjC,MAAQ,KAAQ,WAAa,KAAM,GAAI,UAG/B,GAAI,MAAK,UAIT,WAIT,UAHQ,KAAK,EAAE,UACP,aACA,EACD,EAAI,cACT,EAAK,GAAI,GAAK,MACd,GAAK,MACL,EAAI,KAAK,EAAE,GAEb,KAAO,GAAK,UACV,GAAK,EACL,GAAK,EACL,KAAO,EAET,MAAQ,GAAI,GAAK,GAGnB,YAAK,MAAQ,WAAa,MAAO,MAAK,EAAE,GAAK,GAC7C,KAAK,MAAQ,WAAa,MAAO,MAAK,EAAE,GAAK,YAC7C,KAAK,OAAS,KAGd,OAAO,SAAS,KAAK,GAAI,OAGjB,SAAQ,MAAQ,UACpB,0CAUE,MATA,AAAI,SAEF,CAAI,OAAM,GAAK,KAAK,OAAO,MAE3B,MAAK,MAAQ,WAAa,MAAO,MAAK,KAAM,MAK1C,aAAgB,MAAK,SAAW,MAAa,OAIrC,QAElB,KACA,UACA,UAAY,SAAU,QAAQ,OAAU,MAAQ,KAChD,QAAQ,OAEV,KAAK,OAAS,SAAW,YAYzB,mBACE,aAAgB,IAAI,UACX,OAAU,IAAO,GAAG,EAAI,GAAG,EAAI,IAAO,GAAG,EAAI,GAMtD,IAHA,AAAK,QAAU,KAAM,CAAC,WAGf,EAAI,OACT,EAAE,GAAK,IAET,IAAK,EAAI,EAAG,EAAI,MAAO,IACrB,EAAE,GAAK,EAAE,EAAI,KAAQ,EAAI,IAAI,EAAI,QAAW,GAAI,EAAE,KAClD,EAAE,GAAK,EAIT,AAAC,IAAG,EAAI,iBAIN,aAFW,KACH,GAAG,KAAO,GAAG,KAAO,GAAG,EACxB,UACL,GAAI,GAAE,GAAI,KAAQ,GAAI,GACtB,EAAI,EAAI,MAAQ,GAAE,KAAS,IAAE,IAAK,GAAE,GAAI,KAAQ,GAAI,KAAQ,IAAE,IAAK,KAErE,UAAG,EAAI,GAAG,GAAG,EAAI,GACV,IAIN,OAOL,mBACE,SAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAOT,6BACE,WAAa,OAAW,MAAO,UAC/B,GAAI,OAAS,KAAO,SAClB,IAAK,OAAQ,KACX,IAAM,OAAO,KAAK,SAAQ,IAAI,MAAO,MAAQ,cAGjD,MAAQ,QAAO,OAAS,OAAS,KAAO,SAAW,IAAM,IAAM,KAQjE,0BAEE,mBADiB,KAAO,WAAe,EAChC,EAAI,WAAW,QACpB,IAAI,KAAO,GACT,KAAS,QAAS,IAAI,KAAO,GAAK,IAAM,WAAW,WAAW,KAElE,MAAO,UAAS,KAQlB,oBACE,IACE,QACA,MAAI,aAAe,KAAM,WAAW,aAElC,IAAM,IAAI,OAEV,KAAM,GAAI,YAAW,OACpB,SAAO,QAAU,QAAO,UAAU,gBAAgB,MAE9C,SAAS,cAEhB,YAAc,QAAO,kBACP,SAAW,QAAQ,QACjC,MAAO,CAAC,CAAC,GAAI,MAAM,QAAQ,QAAS,QAAO,OAAQ,SAAS,SAQhE,qBACE,MAAO,QAAO,aAAa,MAAM,EAAG,GAgBtC,GANA,OAAO,KAAK,SAAU,OAMjB,MAAO,SAAW,UAAY,OAAO,SACxC,OAAO,QAAU,YAEjB,IACE,WAAqB,iCAElB,AAAK,OAAO,SAAW,YAAc,OAAO,KACjD,OAAO,WAAa,MAAO,iBAK3B,GACA,QCrPF,mDAYA,UAAmB,sBAKE,wBAKA,2BAQG,4BASF,yBAOD,oBAIJ,qBAEjB,GAAG,KAAO,MACV,GAAG,OAAS,OACZ,GAAG,OAAS,OACZ,GAAG,UAAY,UACf,GAAG,QAAU,QACb,GAAG,OAAS,OAEZ,OAAO,QAAU,KC3DjB,0CCAA,gCCAA,0CCAA,sCCAA,uEACA,kCAAqC,WACnC,eAAiB,MAAO,WAAa,aAAe,SAAS,cAAgB,SAAS,cAAc,IAAM,OAC1G,MAAI,OAAO,aAAe,aAAa,YAAa,YAAc,YAEpE,yCACE,+BAAgC,gCAAiC,GAEnE,4BAA4B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,MAAM,4BAA4B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,OAAO,6BAA6B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,OAAO,6BAA6B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,QAAQ,6BAA6B,MAAG,YAAW,QAAQ,SAAQ,2BAA2B,WAAW,QAAe,QAAQ,WAAW,MAAO,iCAAgC,YAAY,+BAA8B,eAAkB,uBAA8B,OAAW,IAAI,MAAO,QAAQ,AAAG,OAAO,eAAe,MAAM,iBAAgB,KAAK,OAAO,MAAM,eAAe,eAAmB,uBAA2B,yBAAyB,KAAM,6BAAgC,yBAAgC,uBAA8B,wBAA+B,GAAM,mBAAmB,MAAO,SAAS,SAAS,sBAAsB,MAAO,gBAAgB,WAAW,oBAAoB,MAAO,UAAU,UAAU,MAAO,SAAQ,UAAW,UAAU,MAAO,SAAQ,SAAS,MAAO,SAAS,qBAAqB,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,sBAAsB,2BAA2B,OAAO,wBAA2B,GAAM,AAAG,wBAAwB,SAAO,OAAO,OAAU,aAAa,OAAO,aAAgB,eAAe,OAAO,gBAAkB,oBAAoB,GAAG,0BAA0B,MAAG,QAAO,WAAsB,OAAO,WAAc,KAAK,iBAAwB,gBAAgB,KAAK,8DAAsE,GAAG,qBAAqB,AAAG,sBAAuB,gBAAgB,AAAQ,eAAQ,QAAQ,iBAAiB,IAAS,gBAAgB,UAAU,IAAI,MAAM,0BAAqC,MAAI,SAAO,QAAe,eAAM,AAAI,UAAS,UAAiB,gBAAQ,SAAS,SAAS,UAAa,UAAiB,OAAO,aAAgB,SAAS,OAAO,KAAK,SAAS,WAAW,mBAA8B,QAAQ,MAAM,SAAS,IAAM,MAAI,KAAI,QAAQ,KAAI,GAAI,YAAW,MAAK,QAAO,IAAI,QAAe,KAAK,AAAG,QAAQ,KAAQ,OAAO,GAAG,aAAY,QAAQ,KAAQ,GAAG,QAAQ,MAAM,MAAK,WAAW,QAAQ,KAAQ,MAAM,GAAG,QAAQ,GAAM,oBAAoB,aAAa,GAAG,CAAE,cAAc,aAAa,KAAM,MAAM,QAAQ,GAAM,qBAAqB,OAAO,MAAM,iBAAiB,QAAQ,KAAQ,SAAS,OAAO,QAAW,WAAW,MAAM,8BAA8B,sBAAsB,IAAI,kBAA0B,kCAA2B,cAAQ,MAAM,2GAAiH,EAAE,OAAO,kBAAkB,WAAY,AAAG,sBAAsB,CAAG,MAAO,OAAM,aAAa,OAAM,YAAuB,MAAO,MAAK,KAAI,WAAW,YAAuB,SAAS,MAAG,OAAO,aAAa,WAAmB,GAAI,YAAW,WAAW,IAAI,MAAK,KAAK,EAAE,UAAU,QAAO,MAAO,OAAO,UAAiB,OAAM,AAAG,MAAO,aAAY,YAAa,WAAW,WAAgB,AAAG,MAAO,YAAW,aAAa,YAAW,WAAU,AAAG,MAAO,OAAO,YAAY,OAAM,iBAAiB,KAAK,UAAS,AAAG,MAAO,QAAQ,aAAa,CAAG,MAAO,UAAU,aAAY,SAAQ,IAAG,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAAQ,MAAM,MAAO,WAAW,YAAY,SAAS,QAAY,AAAG,qBAAoB,wBAAuB,CAAG,sBAAuB,gBAAgB,KAAK,SAAS,KAAU,AAAG,SAAS,eAAe,iBAAgB,SAAS,cAAc,KAAI,AAAG,aAAY,iBAAgB,aAAW,AAAG,gBAAgB,QAAQ,WAAW,EAAG,gBAAgB,gBAAgB,OAAO,EAAE,gBAAgB,YAAY,KAAK,GAAQ,gBAAgB,GAAG,AAAG,oBAAqB,OAAM,0BAAqC,MAAI,SAAO,QAAe,eAAM,AAAI,UAAS,UAAiB,gBAAQ,SAAS,SAAS,UAAa,UAAiB,OAAO,aAAgB,SAAS,OAAO,KAAK,SAAS,WAAW,mBAA8B,QAAQ,MAAM,SAAS,IAAM,MAAI,KAAI,QAAQ,KAAI,GAAI,YAAW,MAAK,QAAO,IAAI,QAAe,MAAU,OAAM,cAAyB,QAAQ,GAAI,gBAAe,WAAI,KAAK,MAAM,IAAI,IAAO,IAAI,KAAK,MAAa,IAAI,cAAc,AAAG,uBAAuB,YAAW,cAAyB,QAAQ,GAAI,gBAAe,WAAI,KAAK,MAAM,IAAI,IAAO,IAAI,aAAa,cAAc,IAAI,KAAK,MAAa,GAAI,YAAW,IAAI,YAAW,UAAU,6BAAuC,QAAQ,GAAI,gBAAe,IAAI,KAAK,MAAM,IAAI,IAAM,IAAI,aAAa,cAAc,IAAI,OAAO,WAAsB,GAAG,IAAI,QAAQ,KAAK,IAAI,QAAQ,GAAG,IAAI,UAAU,OAAO,IAAI,UAAU,OAAO,WAAW,IAAI,QAAQ,QAAQ,IAAI,KAAK,QAAO,eAAe,gBAAgB,SAAS,MAAM,QAAa,AAAG,qBAAqB,CAAG,MAAO,cAAc,aAAa,aAAY,AAAQ,qBAAc,cAAa,QAAQ,OAAO,OAAU,QAAQ,IAAI,KAAK,aAAiB,OAAO,UAAa,QAAQ,KAAK,KAAK,SAAS,IAAI,MAAO,iBAAiB,AAAG,gBAAgB,eAAe,MAAM,QAAO,KAAK,gBAAgB,MAAM,gBAAgB,KAAK,AAAG,OAAO,WAAa,YAAW,OAAO,WAAa,AAAG,OAAO,aAAe,aAAY,OAAO,aAAe,AAAG,OAAO,MAAQ,OAAM,OAAO,MAAQ,iBAAiB,QAAQ,mBAAuB,QAAQ,8BAAkC,QAAQ,2BAA+B,AAAG,OAAO,YAAc,YAAW,OAAO,YAAc,kBAAkB,AAAG,OAAO,eAAiB,eAAc,OAAO,eAAiB,AAAG,MAAO,cAAc,UAAU,IAAI,mCAAmC,yBAA6B,GAAI,aAAY,MAAM,CAAC,QAAU,IAAI,QAAU,IAAI,EAAE,QAAU,wCAAgD,eAAmB,QAAY,cAAqB,EAAE,iCAAgC,AAAI,WAAW,MAAM,qBAAqB,MAAO,yBAAyB,UAAS,OAAO,IAAI,OAAO,eAAO,MAAK,gCAAgC,MAAM,8BAAqC,MAAK,oDAAoD,QAAQ,CAAC,OAAS,cAAc,SAAQ,EAAE,GAAG,KAAM,MAAuB,MAAM,GAAG,QAAS,KAAI,QAAQ,GAAG,EAAE,KAAI,WAAW,KAAK,aAAa,IAAI,KAAI,KAAK,MAAO,OAAK,MAAQ,cAAc,SAAQ,WAAW,IAAI,QAAQ,0BAAmB,IAAI,MAAY,OAAM,kCAAiC,MAAG,cAAa,SAAgB,aAAa,MAAQ,aAAa,UAAiB,QAAQ,MAAY,KAAI,UAAS,SAAS,aAAiB,UAAa,EAAE,GAAG,KAAM,UAAU,EAAE,EAAE,KAAK,OAAO,KAAK,cAAc,IAAI,SAAS,IAAI,AAAG,UAAW,CAAG,SAAQ,GAAE,QAAM,aAAY,MAAM,GAAG,UAAU,KAAK,KAAS,MAAM,GAAG,KAAK,GAAK,QAAQ,MAAK,MAAM,KAAK,OAAO,WAAI,mBAAmB,KAAK,AAAG,SAAQ,GAAE,aAAa,QAAc,IAAI,+CAA+C,SAAS,UAAU,GAAG,gBAAgB,SAAS,MAAM,eAAe,MAAO,QAAO,sBAA0B,aAAa,SAAS,MAAG,aAAY,aAAa,CAAC,KAAa,SAAS,OAAc,WAAW,MAAO,OAAM,MAAM,WAAW,SAAS,UAAU,OAAO,oDAA6F,eAA9B,IAAI,mBAAuB,GAAS,CAAE,MAAK,UAAS,OAAO,KAAK,OAAO,GAAG,CAAC,GAAG,MAAO,KAAI,GAAG,CAAE,IAAG,MAAM,KAAK,OAAO,aAAa,IAAI,SAAS,OAAO,KAAK,OAAO,GAAG,GAAI,IAAG,MAAM,KAAK,KAAK,OAAO,aAAc,IAAG,KAAK,EAAE,IAAI,SAAS,OAAO,KAAK,OAAO,GAA4F,GAAzF,AAAI,IAAG,MAAM,IAAK,GAAI,IAAG,KAAK,GAAG,IAAI,EAAE,GAAQ,GAAI,IAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,OAAO,GAAM,GAAG,MAAO,KAAK,OAAO,aAAa,SAAS,OAAO,GAAG,MAAM,KAAK,OAAO,aAAa,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,MAAO,KAAI,0CAA0C,MAAO,KAAI,kBAAkB,mBAAmB,IAAI,gBAAgB,GAAG,4DAA4D,GAAG,CAAE,iBAAgB,GAAG,MAAO,GAA0D,iBAA3C,cAAkB,OAAO,gBAAgB,IAAY,EAAE,EAAE,IAAI,OAAO,EAAE,GAAG,MAAM,IAAI,WAAW,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,OAAO,IAAI,WAAW,EAAE,GAAG,EAAE,MAAQ,IAAE,OAAO,IAAI,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,QAAQ,OAAO,MAAM,KAAK,UAAU,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,EAAE,KAAK,UAAU,IAAI,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,EAAE,GAAG,KAAK,UAAU,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,EAAE,GAAG,KAAK,UAAU,IAAI,EAAE,IAAI,YAAK,QAAQ,EAAS,OAAO,SAAS,kDAAkD,MAAO,mBAAkB,IAAI,mBAAmB,OAAO,iBAAiB,8BAAwC,YAAF,IAAY,EAAE,EAAE,IAAI,OAAO,EAAE,GAAG,MAAM,IAAI,WAAW,GAAG,AAAG,GAAG,OAAO,GAAG,OAAM,GAAE,MAAQ,IAAE,OAAO,IAAI,IAAI,WAAW,EAAE,GAAG,MAAK,AAAG,GAAG,IAAI,EAAE,IAAS,AAAG,GAAG,KAAK,KAAK,EAAO,AAAG,GAAG,MAAM,KAAK,EAAO,KAAK,EAAE,MAAO,KAAI,6CAA0C,mBAAmB,IAAI,OAAM,UAAQ,mBAAmB,MAAM,6BAA6B,MAAG,GAAE,SAAS,GAAG,IAAG,SAAS,EAAE,UAAgB,EAAE,uEAAsE,yCAAyC,QAAO,IAAI,OAAO,MAAS,MAAM,GAAI,WAAU,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,QAAW,QAAQ,GAAI,aAAY,KAAK,OAAO,QAAW,QAAQ,GAAI,aAAY,KAAK,OAAO,QAAW,QAAQ,GAAI,cAAa,KAAK,OAAO,QAAW,QAAQ,GAAI,cAAa,KAAK,eAAe,iBAAiB,qBAAqB,mBAAmB,uBAAuB,6BAA6D,OAAO,gBAAmB,SAAS,GAAG,uBAAwB,WAAW,OAAO,WAAc,QAAO,OAAO,eAAkB,OAAO,WAAe,WAAW,OAAO,mBAAmB,WAAW,GAAI,aAAY,OAAO,CAAC,QAAU,uBAAuB,eAAe,QAAU,WAAW,eAAe,OAAS,KAAU,CAAE,YAAW,iBAAkB,oBAAoB,UAAI,+NAA+N,AAAG,qBAAqB,QAAQ,IAAI,qHAA2H,MAAM,cAAgB,AAAG,YAAY,SAAO,WAAW,QAAO,uBAAuB,QAAO,WAAW,2BAA2B,SAAQ,AAAI,wBAAwB,qBAAoB,gBAAgB,GAAG,cAAa,0CAAyC,KAAM,WAAU,OAAO,IAAG,aAAa,WAAU,QAAQ,GAAG,MAAO,WAAU,YAAY,SAAS,QAAQ,SAAS,UAAS,SAAS,KAAK,AAAG,MAAO,QAAO,SAAU,AAAG,SAAS,MAAM,OAAW,OAAO,UAAa,OAAW,OAAO,WAAc,MAAK,SAAS,KAAW,MAAK,SAAS,MAAM,OAAU,KAAK,SAAS,MAAO,iBAAiB,cAAkB,cAAkB,cAAkB,iBAAqB,sBAA0B,GAAM,AAAG,wBAAuB,oBAAmB,IAAK,kBAAkB,GAAG,uBAAuB,OAAO,GAAG,OAAO,OAAsF,IAA3E,AAAG,MAAO,QAAO,QAAW,YAAW,QAAO,OAAU,CAAC,OAAO,SAAiB,OAAO,OAAU,QAAQ,YAAY,OAAO,OAAU,SAAU,qBAAqB,cAAc,uBAAuB,mBAAmB,GAAK,qBAAqB,YAAY,mBAAmB,GAAG,uBAAuB,OAAO,qBAAqB,YAAY,mBAAmB,GAAG,uBAAuB,OAAO,GAAG,OAAO,QAA0F,IAA9E,AAAG,MAAO,QAAO,SAAY,YAAW,QAAO,QAAW,CAAC,OAAO,UAAkB,OAAO,QAAW,QAAQ,aAAa,OAAO,QAAW,SAAU,qBAAqB,eAAe,yBAAyB,aAAa,QAAQ,IAAI,0BAA0B,cAAc,QAAQ,IAAI,cAAc,KAAK,gBAAoB,KAAK,sBAA0B,uBAA2B,2BAA+B,KAAK,8BAA8B,QAAO,CAAC,uBAAuB,uDAAuD,kBAAkB,AAAG,OAAO,wBAA2B,OAAO,uBAA0B,iBAAkB,iCAA0I,GAAzG,kBAAkB,AAAG,OAAO,wBAA2B,OAAO,uBAA0B,iBAAoB,iBAAiB,GAAG,CAAG,uBAAuB,MAAM,eAAc,sBAAsB,qBAAqB,MAAQ,wBAAuB,aAAa,sBAAsB,sBAAsB,KAAK,YAAa,OAAO,gBAAmB,GAAG,OAAO,gBAAmB,GAAG,qBAAqB,KAAG,QAAO,SAAY,OAAO,QAAW,MAAM,AAAG,wBAAuB,QAAQ,MAAM,uBAAwB,GAAI,SAAO,OAAO,MAAM,GAAG,IAAI,MAAM,IAAI,MAAM,MAAM,GAAK,WAAW,EAAE,KAAK,SAAS,KAAK,+CAAqD,GAAI,aAAY,aAAa,MAAM,+BAA+B,MAAO,QAAO,UAAU,WAAW,IAAI,WAAW,QAAQ,IAAI,QAAQ,UAAU,EAAE,kBAAkB,wCAAwC,6BAA6B,MAAO,WAAU,SAAS,eAAe,kBAAkB,UAAU,6BAA6B,MAAO,WAAU,SAAS,eAAe,mBAAmB,uCAAuC,AAAI,UAAU,iBAAiB,gBAAe,WAAW,iBAAgB,qBAAqB,IAAI,GAAG,WAAY,MAAO,IAAI,YAAW,YAAY,GAAG,WAAY,MAAO,YAAW,gBAAqB,KAAK,8DAA8D,MAAM,OAAM,4BAA4B,MAAG,CAAC,YAAa,qBAAoB,wBAAwB,MAAO,QAAQ,YAAY,CAAC,UAAU,gBAAwB,MAAM,eAAe,CAAC,YAAY,gBAAgB,KAAK,mBAAmB,GAAG,CAAC,SAAS,GAAO,KAAK,uCAAuC,eAAe,IAAI,MAAO,UAAS,gBAAmB,MAAM,WAAW,MAAO,eAAqB,GAAI,SAAQ,yBAAyB,QAAQ,eAAe,sBAAsB,SAAS,CAAC,EAAI,eAAe,2CAA0C,aAAY,SAAS,QAAgD,GAAxC,OAAO,IAAO,SAAQ,WAAW,QAAU,CAAC,wBAAwB,qBAAqB,QAAQ,cAAc,OAAO,QAAQ,cAAc,QAAQ,YAAY,QAAQ,uBAAuB,EAAE,WAAW,AAAI,EAAE,kBAAiB,oBAAoB,yBAAyB,AAAI,wBAAwB,iBAAiB,oBAAoB,2CAA2C,gBAAgB,OAAO,SAAY,OAAO,QAAW,0CAA0C,MAAO,oBAAmB,KAAK,iBAAiB,MAAO,aAAY,YAAY,OAAO,QAAQ,KAAK,SAAS,iBAAiB,IAAI,0CAA0C,QAAQ,MAAM,UAAU,4BAA4B,GAAG,CAAC,YAAY,MAAO,aAAY,sBAAuB,YAAY,CAAC,UAAU,iBAAiB,CAAC,UAAU,iBAAiB,MAAO,QAAQ,WAAY,MAAM,eAAe,CAAC,YAAY,gBAAgB,KAAK,mBAAmB,WAAW,YAAY,qBAAqB,SAAS,MAAM,MAAO,QAAO,KAAK,0BAA0B,iBAAiB,IAAI,kCAAkC,QAAQ,IAAI,6CAA6C,uBAAuB,mCAAoC,OAAO,wBAAuB,2BAA4B,GAAG,OAAO,gBAAoB,IAAI,aAAY,OAAO,gBAAmB,KAAK,iBAAiB,MAAO,mBAAiB,WAAI,sDAAsD,GAAU,GAAO,0BAAyB,GAAG,eAAe,GAAG,0BAA0B,QAAQ,cAAc,AAAI,wBAAuB,WAAW,KAAK,CAAC,KAAK,WAAW,wBAAwB,kBAAkB,mCAAuC,mCAAuC,EAAE,oFAAoF,WAAW,WAAW,EAAE,oBAAoB,oBAAoB,EAAE,oBAAoB,oBAAoB,EAAE,cAAc,WAAW,iCAAiC,oBAAoB,iCAAiC,oBAAoB,OAAO,uBAA0B,uBAAuB,gBAAgB,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,QAAQ,IAAI,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,GAAG,OAAO,GAAG,MAAM,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU,GAAG,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,GAAG,KAAK,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,GAAG,UAAU,GAAG,QAAQ,IAAI,QAAQ,EAAE,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,WAAW,IAAI,aAAa,IAAI,WAAW,GAAG,QAAQ,GAAG,aAAa,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,IAAI,aAAa,GAAG,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,IAAI,aAAa,GAAG,YAAY,GAAG,SAAS,EAAE,aAAa,GAAG,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,IAAI,cAAc,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,IAAI,OAAO,IAAI,OAAO,GAAG,OAAO,GAAG,QAAQ,IAAI,UAAU,IAAI,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,gBAAgB,GAAG,WAAW,GAAG,SAAS,sCAA0C,MAAM,6CAA4C,GAAG,MAAM,GAAG,KAAK,mBAAmB,QAAQ,KAAK,IAAM,OAAM,EAAE,MAAM,IAAI,GAAG,QAAO,EAAE,MAAO,GAAE,AAAG,QAAO,YAAW,QAAM,UAAS,0BAA0B,QAAQ,KAAK,oBAAoB,kCAAkC,mBAAuB,EAAE,GAAG,uBAAuB,MAAM,eAAe,QAAQ,gBAAgB,oBAAoB,kCAAkC,EAAE,sBAAsB,GAAG,GAAG,YAAY,uBAAuB,GAAE,OAAM,gBAAgB,EAAK,QAAO,GAAE,MAAO,GAAG,QAAQ,QAAQ,OAAO,oBAAoB,MAAM,EAAE,QAAO,GAAG,KAAK,EAAE,MAAO,KAAI,gBAAgB,KAAK,+CAA+C,IAAI,OAAO,uBAA0B,uBAAuB,oCAAoC,GAAG,uBAAuB,KAAK,uFAAuF,GAAG,CAAC,YAAY,KAAK,oDAAoD,oBAAoB,YAAY,IAAI,GAAG,EAAE,YAAY,QAAQ,SAAS,aAAa,QAAQ,OAAO,YAAY,QAAQ,eAAe,SAAS,QAAQ,eAAe,OAAO,QAAQ,eAAe,QAAQ,QAAQ,QAAQ,GAAG,QAAQ,OAAO,QAAQ,OAAU,sCAAsC,GAAG,uBAAuB,KAAK,yFAAyF,GAAG,CAAC,YAAY,KAAK,sDAAsD,YAAY,QAAQ,SAAS,aAAa,QAAQ,OAAO,YAAY,CAAC,IAAM,WAAW,uCAAuC,GAAG,uBAAuB,KAAK,0FAA0F,GAAG,CAAC,YAAY,KAAK,uDAAuD,oBAAoB,YAAY,IAAI,GAAG,EAAE,YAAY,QAAQ,SAAS,aAAa,GAAG,SAAS,WAAW,QAAQ,OAAO,QAAQ,mBAAmB,SAAS,YAAY,CAAC,eAAe,EAAE,eAAe,CAAC,YAAY,EAAE,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,WAAW,uBAAuB,QAAQ,gBAAgB,CAAC,sBAAsB,GAAG,4CAA4C,QAAQ,kBAAkB,oBAAoB,WAAiC,wBAAF,IAAY,EAAE,EAAE,gBAAgB,EAAE,EAAG,QAAQ,uBAAuB,QAAQ,gBAAgB,MAAM,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,QAAQ,gBAAgB,EAAE,GAAG,EAAE,oBAAoB,QAAQ,gBAAgB,IAAI,GAAG,QAAQ,gBAAgB,YAAY,QAAQ,gBAAgB,IAAI,oBAAoB,SAAS,GAAG,QAA4B,kBAAN,QAAgB,EAAE,EAAE,IAAI,EAAE,EAAE,oBAAoB,UAAU,EAAE,GAAG,EAAE,QAAQ,MAAM,oBAAoB,QAAQ,gBAAgB,KAAK,EAAE,WAAW,QAAQ,MAAM,oBAAoB,QAAQ,gBAAgB,IAAI,EAAE,QAAQ,iBAAiB,QAAQ,MAAM,oBAAoB,QAAQ,gBAAgB,IAAI,EAAE,KAAK,WAAW,aAAa,SAAS,GAAG,aAAa,KAAK,gBAAgB,aAAa,gBAAgB,WAAW,GAAG,QAAQ,eAAe,MAAM,KAAM,QAAQ,aAAa,OAAO,GAAG,QAAQ,aAAa,QAAQ,QAAQ,aAAa,KAAK,AAAG,wBAAwB,kBAAiB,4BAA4B,WAAW,mBAAmB,OAAO,gBAAgB,AAAG,IAAI,SAAQ,MAAM,oBAAoB,GAAG,GAAG,EAAE,UAAU,QAAQ,MAAM,oBAAoB,GAAG,GAAG,EAAE,GAAG,QAAQ,MAAM,oBAAoB,GAAG,IAAI,EAAE,GAAG,QAAQ,MAAM,oBAAoB,GAAG,IAAI,EAAE,GAAG,QAAQ,kBAAkB,uBAAuB,GAAG,EAAE,YAAY,uBAAuB,EAAE,EAAE,GAAG,iBAAiB,EAAE,AAAG,wBAAwB,YAAY,CAAC,IAAM,WAAY,aAAa,WAAW,QAAQ,kBAAkB,QAAQ,MAAM,oBAAoB,iBAAiB,GAAG,EAAE,IAAI,QAAQ,MAAM,oBAAoB,iBAAiB,GAAG,EAAE,GAAG,uBAAuB,iBAAiB,EAAE,YAAY,iBAAiB,aAAa,EAAE,uBAAuB,EAAE,EAAE,GAAG,YAAY,CAAC,IAAM,gBAAgB,oBAAoB,WAAW,YAAa,SAAQ,UAAU,YAAY,QAAQ,SAAS,GAAG,AAAG,SAAS,QAAQ,QAAQ,QAAQ,mBAAmB,QAAQ,QAAS,QAAQ,SAAS,GAAG,UAAU,EAAE,EAAE,QAAQ,cAAc,OAAO,EAAE,GAAG,WAAW,QAAQ,cAAc,GAAG,OAAO,YAAY,QAAQ,cAAc,GAAG,UAAU,EAAE,EAAE,QAAQ,eAAe,OAAO,EAAE,GAAG,WAAW,QAAQ,eAAe,WAAe,OAAO,QAAQ,QAAQ,eAAe,SAAS,OAAO,YAAY,QAAQ,eAAe,IAAI,eAAe,kBAAkB,GAAG,CAAC,QAAQ,OAAO,GAAG,QAAQ,kBAAkB,cAAc,oBAAoB,QAAQ,iBAAiB,KAAK,GAAG,oBAAoB,QAAQ,iBAAiB,KAAK,GAAG,EAAE,MAAM,WAAW,MAAM,QAAQ,kBAAkB,QAAQ,iBAAiB,EAAE,AAAG,QAAQ,mBAAmB,QAAQ,WAAU,MAAM,QAAQ,WAAW,QAAQ,UAAU,EAAE,AAAG,QAAQ,QAAO,SAAQ,OAAO,QAAQ,OAAM,mBAAmB,iBAAiB,MAAO,SAAQ,SAAS,OAAO,QAAQ,QAAQ,QAAQ,cAAc,KAAK,QAAQ,QAAQ,eAAe,OAAO,QAAQ,eAAe,QAAQ,QAAQ,GAAG,QAAQ,eAAe,OAAO,SAAS,OAAO,QAAQ,QAAW,sBAAsB,iBAAiB,uBAAuB,mCAAmC,OAAO,UAAU,YAAY,MAAM,EAAE,SAAgB,EAAE,IAAqG,GAA9F,AAAG,OAAO,SAAQ,SAAQ,oCAAoC,OAAO,QAAQ,kBAAoB,EAAE,cAAiB,EAAE,cAAiB,iBAAiB,WAAW,QAAQ,SAAS,EAAE,cAAc,AAAG,OAAQ,OAAO,OAAO,YAAY,EAAE,KAAK,EAAE,cAAsB,QAAQ,MAAM,0CAA0C,IAAI,uBAAuB,EAAE,aAAgB,uCAAuC,QAAQ,oCAAoC,OAAU,OAAO,GAAG,MAAM,8BAA+B,uDAAuD,MAAM,cAAe,eAAe,EAAE,cAAc,MAAM,gBAAiB,iBAAiB,EAAE,gBAAmB,MAAM,aAAc,cAAc,EAAE,gBAAmB,MAAM,eAAgB,gBAAgB,EAAE,gBAAmB,MAAM,SAAU,OAAO,OAAO,GAAK,AAAG,mBAAkB,kBAAkB,QAAQ,AAAG,OAAO,YAAY,QAAO,aAAa,MAAO,QAAO,oBAAoB,MAAM,QAAS,IAAI,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,MAAM,WAAY,IAAI,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,MAAM,QAAS,MAAM,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,MAAM,QAAQ,aAAa,OAAO,SAAS,QAAQ,KAAK,oBAAoB,OAAO,QAAQ,OAAO,IAAI,GAAG,AAAG,UAAU,QAAQ,mBAAmB,YAAc,AAAG,OAAM,aAAc,QAAQ,mBAAmB,QAAa,AAAG,MAAM,iBAAkB,QAAQ,sBAAsB,EAAE,MAAW,AAAG,EAAE,KAAK,SAAS,eAAgB,OAAO,YAAY,EAAE,MAAW,IAAI,kCAAkC,KAAK,QAAQ,oCAAoC,QAAW,OAAO,QAAQ,YAAY,IAAI,0BAA0B,EAAE,SAAS,IAAI,EAAE,OAAO,KAAK,EAAE,UAAU,AAAG,qBAAqB,QAAO,GAAG,UAAU,eAAe,OAAO,UAAU,CAAC,SAAc,OAAO,GAAG,QAAQ,eAAe,OAAO,QAAQ,QAAQ,OAAO,GAAG,OAAO,eAAe,QAAQ,IAAI,qDAAoD,OAAO,YAAY,CAAC,IAAM,OAAO,UAAY,OAAO,qBAAwB,YAAW,WAAwB,WAAwB,aAA4B,kBAAmC,qBAAqB,WAAW,kBAAkB,WAAW,6CAA6C,QAAQ,cAAc,KAAK,GAAI,QAAO,iBAAiB,aAAa,WAAuI,MAA5H,AAAG,SAAQ,cAAc,QAAQ,GAAG,SAAQ,uBAAuB,QAAQ,uBAAuB,QAAQ,cAAc,KAAO,QAAQ,cAAc,OAAO,EAAS,QAAQ,cAAc,MAAkB,MAAM,aAAa,gBAA8C,UAAxB,YAAY,MAAM,MAAY,YAAY,MAAM,GAAE,IAAK,gDAAgD,WAAW,SAAS,SAAS,UAAU,SAAS,aAAa,UAAU,OAAO,oBAAuB,oBAAoB,4BAA4B,MAAO,eAAc,OAAO,iBAAoB,iBAAiB,uDAAsD,MAAM,qBAAqB,aAAa,WAAW,SAAS,CAAC,SAAS,aAAa,UAAU,mBAAmB,KAAK,MAAK,aAAa,OAAM,qBAAqB,iCAAiC,eAAe,MAAM,KAAK,MAAM,wBAAwB,AAAG,oBAAqB,oBAAoB,WAAW,MAAM,QAAQ,SAAY,MAAO,GAAE,GAAG,IAAI,EAAE,GAAG,KAAU,AAAG,uBAAwB,oBAAoB,WAAW,MAAO,aAAY,MAAM,OAAO,+BAAuC,AAAG,MAAO,UAAU,YAAa,oBAAoB,QAAa,oBAAoB,WAAW,MAAO,aAAY,OAAO,yBAAyB,2BAAoB,qBAAqB,GAAG,MAAa,MAAM,4BAA2B,GAAG,uBAAuB,MAAO,qCAAoC,EAAE,EAAE,MAAK,KAAK,WAAW,QAAQ,CAAC,KAAK,MAAK,MAAU,uEAAuE,GAAG,gBAAgB,aAAc,YAAY,CAAC,IAAM,wCAAwC,uBAAwB,YAAY,CAAC,aAAe,eAAe,IAAM,4BAA4B,YAAY,QAAQ,SAAS,uBAA2B,SAAS,QAAQ,OAAO,GAAG,CAAC,OAAQ,OAAO,OAAO,YAAY,CAAC,IAAM,uBAAuB,MAAO,GAAE,kBAAkB,QAAQ,qFAAqF,eAAe,eAAe,EAAE,UAAU,UAAU,EAAE,kDAAkD,GAAG,MAAM,GAAG,KAAK,mBAAmB,QAAQ,KAAK,GAAK,MAAM,IAAI,GAAG,uBAAuB,QAAQ,QAAQ,KAAK,oBAAoB,MAAM,EAAE,IAAI,SAAS,GAAG,MAAM,YAAY,MAAM,IAAI,GAAG,MAAM,YAAY,MAAM,GAAG,GAAG,MAAM,KAAK,MAAO,GAAE,KAAK,6CAA6C,SAAS,cAAc,QAAQ,KAAK,oBAAoB,MAAM,GAAG,GAAG,KAAK,UAAU,MAAM,GAAG,SAAS,YAAY,WAAe,KAAK,QAAQ,QAAQ,MAAM,oBAAoB,kCAAkC,EAAE,MAA8B,uBAAL,KAAW,MAAM,iBAAuC,GAAvB,KAAK,YAAY,MAAS,KAAK,KAAM,MAAM,IAAI,+CAA+C,KAAK,QAAQ,KAAK,oBAAoB,kCAAkC,GAAG,MAAO,IAAG,8CAA8C,MAAO,kCAAiC,EAAE,8CAA8C,MAAO,kCAAiC,EAAE,8CAA8C,mBAAmB,WAAW,KAAK,IAAI,IAAI,KAAK,yCAAyC,MAAO,WAAU,oBAAuB,yDAAmK,oBAA1F,UAAU,OAAO,SAAY,iBAAqB,WAAW,YAAY,KAAS,MAAM,IAAY,EAAE,EAAE,YAAY,IAAK,oBAAoB,EAAE,GAAG,UAAU,EAAE,GAAG,QAAQ,0CAA0C,MAAM,YAAY,KAAK,MAAM,oBAAa,QAAc,IAAI,mDAAmD,GAAG,sCAAsC,AAAI,iBAAiB,OAAO,kBAAiB,MAAM,IAAG,SAAS,iBAAiB,MAAM,KAAK,OAAO,EAAS,WAAM,GAAG,mBAAmB,WAAW,AAAG,KAAK,KAAK,KAAK,IAAK,KAAI,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,oBAAoB,KAAK,IAAI,KAAK,GAAO,KAAI,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,oBAAoB,KAAK,IAAI,KAAK,GAAG,MAAO,MAAK,uEAAuE,+CAA+C,OAAO,YAA0B,UAAR,MAAM,IAAY,EAAE,EAAE,YAAY,IAAK,+CAA+C,GAAG,oBAAoB,EAAE,GAAG,iBAAiB,MAAM,QAAW,AAAC,aAAyC,WAAW,CAAC,MAAM,GAA9C,qBAAqB,OAA4B,GAAG,cAAc,WAAW,+CAA+C,aAAiB,+CAA+C,aAAiB,iBAAiB,OAAO,WAAW,MAAO,OAAK,MAAM,KAAK,WAAW,MAAO,OAAK,MAAM,KAAK,gDAAgD,qCAAqC,MAAO,oBAAmB,OAAO,yCAAyC,IAAI,kBAAW,KAAK,KAAK,QAAO,WAAW,QAAQ,IAAI,2BAA2B,WAAW,QAAe,aAAa,gDAAgD,cAAc,gBAAgB,EAAE,YAAY,4BAA4B,GAAG,eAAe,QAAS,MAAO,GAAM,kBAAkB,kBAAsB,WAAW,GAAG,cAAc,YAAa,MAAO,GAA+B,oBAAT,iBAAyB,EAAE,SAAS,EAAE,SAAS,GAAG,sBAAsB,QAAS,GAAE,GAAG,SAAS,kBAAkB,KAAK,IAAI,kBAAkB,cAAc,WAAW,YAAY,KAAK,IAAI,YAAY,QAAQ,KAAK,IAAI,YAAY,cAAc,mBAAmB,4BAAgC,0BAA0B,SAAS,GAAG,YAAa,MAAO,GAAM,MAAO,GAAM,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,WAAW,EAAE,0BAA0B,KAAK,gBAAgB,KAAK,gBAAgB,KAAK,+BAA+B,GAAM,wBAAwB,WAAW,UAAU,SAAS,cAAc,OAAO,EAAE,GAAG,EAAE,EAAE,EAAG,SAAS,eAAe,GAAG,SAAS,cAAc,GAAG,SAAS,cAAc,IAAI,6BAA6B,WAAW,AAAI,SAAS,gCAAgC,YAAW,KAAK,SAAS,yBAAyB,SAAS,+BAA+B,KAAO,cAAc,GAAG,UAAU,6CAA6C,2CAA2C,GAAG,KAAK,QAAQ,KAAK,OAAO,MAAO,GAAM,aAAa,MAAM,GAAG,KAAK,KAAI,KAAK,IAAG,MAAO,GAAM,MAAO,GAAK,YAAa,UAAS,eAAe,SAAS,SAAS,cAAc,GAAG,GAAG,KAAK,gBAAgB,gBAAgB,uBAAuB,KAAK,SAAS,UAAW,OAAQ,SAAS,cAAc,KAAK,CAAC,eAA8B,WAAsB,WAAoB,SAAS,cAAc,KAAK,cAAc,MAAO,GAAE,WAAW,EAAE,cAAc,oBAAoB,yBAAyB,UAAU,EAAE,EAAE,SAAS,cAAc,OAAO,EAAE,EAAG,AAAG,SAAS,cAAc,GAAG,gBAAgB,gBAAgB,UAAS,cAAc,OAAO,EAAE,GAAG,EAAE,IAAK,+BAA+B,WAAW,MAAO,UAAS,gBAAgB,SAAS,oBAAoB,qBAAqB,iBAAiB,WAAW,GAAG,CAAC,SAAS,iCAAkC,OAAO,UAAU,EAAE,EAAE,SAAS,cAAc,OAAO,EAAE,GAAG,SAAS,SAAS,cAAc,GAAG,SAAS,cAAc,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,eAAe,MAAM,KAAK,KAAK,YAAY,eAAe,EAAE,oBAAoB,KAAK,cAAc,GAAG,0BAA0B,iCAAiC,UAAU,EAAE,EAAE,SAAS,cAAc,OAAO,EAAE,EAAG,AAAG,SAAS,cAAc,GAAG,QAAQ,QAAS,EAAC,iBAAiB,iBAAiB,SAAS,cAAc,GAAG,kBAAkB,SAAS,eAAe,MAAQ,eAAe,YAAY,MAAM,SAAS,cAAc,GAAG,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,SAAS,cAAc,OAAO,EAAE,IAAI,wBAAwB,uBAAuB,mBAAmB,gBAA+B,EAAE,SAAS,eAAe,SAAS,oBAAoB,aAAa,SAAS,mBAAmB,aAAa,YAAY,OAAO,SAAS,mBAAmB,EAAE,SAAS,gBAAgB,GAAG,aAAa,aAAc,aAAa,kBAAkB,eAAe,aAAa,OAAO,iBAAiB,aAAa,gBAAgB,eAAe,aAAa,YAAY,SAAS,cAAc,KAAK,cAAc,SAAS,mCAAoC,WAAU,EAAE,EAAE,SAAS,cAAc,OAAO,EAAE,EAAG,AAAG,SAAS,cAAc,GAAG,QAAQ,aAAa,QAAQ,SAAS,cAAc,GAAG,iBAAiB,aAAa,iBAAiB,SAAS,eAAe,MAAS,+BAA+B,uEAAuE,aAAa,oBAAwB,WAAW,IAAI,oBAAoB,SAAS,GAAG,YAAY,oBAAoB,QAAQ,GAAG,GAAG,UAAU,oBAAoB,QAAQ,GAAG,GAAG,SAAS,mCAAmC,aAAa,UAAU,iBAAiB,UAAU,SAAS,aAAa,WAAW,gCAAgC,uBAAuB,OAAO,kBAAmB,GAAE,MAAO,OAAO,GAAE,MAAO,SAAQ,4CAA4C,MAAO,gBAAe,qBAAqB,iBAAiB,MAAI,QAAmB,QAAQ,OAAa,UAAa,QAAQ,OAAa,UAAiB,QAAQ,OAAO,SAAS,OAAO,SAAS,GAAtH,IAA0H,kBAAkB,WAAW,MAAO,UAAS,mBAAmB,SAAS,0BAA0B,mCAAmC,WAAW,gBAAgB,UAAU,UAAc,QAAQ,QAAQ,oBAAa,SAAS,QAAQ,QAAe,QAAQ,0GAA0G,aAAa,oBAAwB,WAAW,oBAAwB,EAAE,AAAG,cAAc,iBAAgB,gBAAgB,eAAc,oBAAoB,SAAS,GAAG,gBAAgB,oBAAoB,QAAQ,GAAG,GAAG,MAAM,oBAAoB,QAAQ,GAAG,GAAG,OAAO,mCAAmC,aAAa,UAAU,EAAE,gBAAgB,SAAS,aAAa,UAAU,uGAAuG,aAAa,aAAa,aAAa,cAAc,GAAG,yDAAyD,aAAa,aAAa,MAAM,QAAQ,2CAA2C,MAAO,SAAQ,EAAE,aAAa,SAAS,QAAQ,uBAAuB,CAAC,EAAE,MAAO,WAAW,YAAY,SAAS,EAAE,MAAO,SAAS,YAAY,OAAO,GAAG,mCAAmC,OAAO,yBAAyB,QAAQ,eAAe,mBAAmB,SAAU,OAAO,WAAW,YAAY,SAAS,cAAc,QAAQ,QAAW,MAAO,YAAW,yCAAyC,MAAO,mBAAkB,QAAQ,iFAAiF,WAAW,wBAAwB,QAAQ,GAAG,CAAC,OAAO,MAAM,GAA2I,GAAxI,AAAG,OAAO,iBAAiB,qBAAoB,OAAO,iBAAiB,GAAG,MAAM,oBAAoB,OAAO,gBAAgB,GAAG,GAAG,QAAU,OAAO,iBAAiB,CAAC,OAAO,6BAA6B,AAAG,OAAO,iBAAgB,QAAO,OAAO,iBAAgB,uBAAuB,GAAM,GAAG,OAAO,aAAa,OAAO,YAAY,OAAO,iBAAiB,OAAO,YAAY,MAAM,aAAa,MAAM,mBAAmB,aAAa,KAAK,GAAG,aAAa,KAAK,GAAG,aAAa,KAAK,OAAO,OAAO,aAAa,KAAK,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,AAAG,oBAAoB,OAAO,YAAY,MAAM,SAAS,EAAE,EAAE,MAAM,gBAAiB,OAAO,iBAAiB,iBAAiB,oBAAoB,OAAO,gBAAgB,GAAG,GAAG,6DAAsD,aAAa,OAAO,MAAM,QAAe,MAAO,OAAM,GAAG,MAAO,GAAE,8EAA8E,MAAG,wBAA8B,oCAAoC,EAAE,EAAE,OAAO,MAAM,QAAe,mDAAmD,OAAO,MAAM,QAAQ,kEAAkE,WAAW,wBAAwB,QAAQ,MAAG,QAAe,mDAAmD,OAAO,MAAM,QAAoB,gDAAgD,OAAO,MAAM,QAAS,0DAA0D,UAAU,UAAU,EAAE,oDAAoD,SAAS,SAAS,EAAE,KAAK,KAAK,EAAE,oDAAoD,QAAQ,IAAI,aAAa,0BAA0B,GAAG,IAAK,WAAI,oBAAuB,wBAAwB,IAAI,yBAA4B,MAAM,UAAU,IAAI,oBAAuB,sCAAqC,IAAI,yBAA4B,KAAK,MAAM,OAAM,YAAY,IAAI,sBAAyB,6CAA4C,IAAI,2BAA8B,KAAK,OAAM,KAAK,QAAQ,YAAmB,EAAG,qDAAqD,QAAQ,IAAI,aAAa,2BAA2B,GAAG,IAAK,WAAI,kBAAqB,WAAW,MAAO,KAAI,wBAA2B,IAAI,kBAAqB,cAAc,IAAI,qBAAwB,MAAM,IAAI,gBAAmB,cAAc,IAAI,mBAAsB,MAAM,IAAI,cAAiB,cAAc,MAAO,KAAI,iBAAoB,MAAa,EAAG,gDAAgD,QAAQ,IAAI,aAAa,sBAAsB,GAAG,IAAK,WAAI,YAAe,iBAAiB,IAAI,iBAAoB,EAAE,OAAc,EAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,eAAe,KAAK,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,EAAE,KAAK,WAA8E,4BAA3C,GAAI,cAAa,GAAG,yBAAiC,EAAE,EAAE,GAAG,sBAAsB,IAAK,GAAG,yBAAyB,GAAG,oBAAoB,SAAS,EAAE,EAAE,GAAkE,0BAAzC,GAAI,YAAW,GAAG,yBAAiC,EAAE,EAAE,GAAG,sBAAsB,IAAK,GAAG,uBAAuB,GAAG,kBAAkB,SAAS,EAAE,EAAE,IAAK,YAAY,oBAAgC,AAAI,GAAG,WAAW,IAAG,UAAU,YAAY,SAAS,gBAAqC,YAAb,GAAG,YAAoB,MAAM,OAAO,EAAE,IAAI,IAAK,MAAM,GAAG,KAAK,MAAO,MAAK,sBAAsB,IAAI,yBAAyB,CAAC,GAAG,uBAAuB,CAAC,GAAG,UAAU,sCAAmD,eAAH,KAAa,EAAE,EAAE,OAAM,EAAE,GAAG,QAAQ,OAAO,oBAAoB,OAAO,EAAE,GAAG,GAAG,GAAG,QAAQ,aAAa,oBAAoB,OAAO,EAAE,GAAG,GAAG,IAAI,EAAE,OAAU,KAAK,MAAO,SAAQ,cAAc,wCAAwC,QAAQ,OAAO,WAAW,QAAQ,wBAAwB,GAAG,CAAC,IAAI,MAAO,GAAE,WAAW,GAAG,gBAAgB,IAAI,wBAAwB,MAAO,SAAQ,gBAAgB,qCAAqC,WAAW,QAAQ,GAAG,oBAAoB,OAAO,GAAG,GAAG,gBAAgB,YAAY,CAAC,OAAc,WAAW,uBAAuB,QAAQ,uBAAuB,aAAa,MAAM,KAAK,MAAG,KAAI,QAAO,KAAI,OAAO,YAAY,SAAQ,GAAG,SAAS,QAAQ,QAAQ,AAAG,OAAO,wBAAuB,2BAA4B,aAAa,uBAAuB,4BAA2B,GAAG,eAAe,SAAgB,QAAQ,mBAAmB,wBAAwB,UAAG,eAAe,GAAG,SAAS,eAAe,OAAO,IAAI,MAAM,GAAG,gBAAgB,GAAG,eAAe,MAAY,CAAE,gBAAe,CAAC,QAAQ,WAAW,wBAAwB,MAAO,IAAG,SAAS,gBAAgB,cAAc,wBAAwB,AAAG,GAAG,iBAAiB,GAAG,SAAS,gBAAe,IAAG,eAAe,MAAK,AAAG,MAAO,WAAW,UAAS,SAAS,0BAA0B,GAAG,SAAS,eAAe,MAAM,QAAQ,AAAG,GAAG,SAAS,gBAAgB,GAAG,SAAS,eAAe,MAAM,QAAO,IAAG,SAAS,eAAe,MAAM,OAAO,YAAY,QAAU,MAAM,GAAG,SAAS,eAAe,QAAQ,GAAG,SAAS,eAAe,MAAM,eAAe,kBAAwD,GAAtC,AAAI,SAAQ,SAAQ,GAAG,gBAAkB,QAAQ,mBAAmB,OAAO,QAAQ,mBAAmB,GAAK,WAAU,QAAQ,MAAM,sCAAsC,QAAO,uCAAuC,QAAO,kCAAkC,QAAO,OAAM,sBAAsB,OAAM,aAAa,4BAA4B,mCAAmC,CAAC,oBAAoB,yBAAyB,2BAA2B,0BAA0B,gCAAgC,sBAAsB,yBAAyB,iCAAiC,iBAAiB,qBAAqB,yBAAyB,2BAA2B,gCAAgC,mBAAmB,yBAAyB,qBAAqB,iCAAiC,8BAA8B,2BAA2B,WAAW,gCAAgC,2BAA2B,+BAA+B,gCAAgC,yBAAyB,qCAAqC,kCAAkC,8CAAkD,OAAM,0BAA0B,GAAG,KAAK,QAAQ,cAAc,AAAG,+BAA+B,QAAQ,MAAM,IAAI,OAAM,aAAa,QAAS,qBAAqB,kBAAmP,WAA3N,GAAG,SAAS,gBAAoB,GAAG,aAAa,SAAS,CAAC,SAAS,GAAG,iBAAiB,EAAE,mBAAmB,GAAG,0BAA0B,WAAe,OAAO,qBAAyB,MAAM,oBAAoB,GAAE,SAAiB,EAAE,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,iBAAiB,GAAE,QAAY,EAAE,KAAK,OAAO,iBAAiB,KAAK,IAAI,OAAO,iBAAiB,KAAK,OAAO,GAAG,AAAG,KAAK,MAAM,KAAK,KAAK,MAAK,KAAK,MAAM,EAAE,KAAK,YAAY,OAAM,QAAQ,MAAM,mBAAmB,GAAE,MAAM,GAAG,KAAK,OAAO,GAAG,SAAS,GAAG,UAAU,OAAO,MAAM,CAAC,EAAE,KAAK,IAAI,GAAG,SAAS,IAAI,IAAI,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,IAAI,EAAE,IAAI,IAAI,MAAM,mBAAmB,GAAE,GAAG,GAAG,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,IAAI,8CAAkD,CAAC,UAAU,YAAY,oBAAoB,gEAAgE,sBAAsB,KAAS,YAAY,EAAE,kBAAkB,MAAS,CAAC,CAAC,oBAAoB,EAAG,IAAG,IAAI,kBAAkB,MAAS,CAAC,CAAC,oBAAoB,EAAG,IAAG,IAAI,kBAAkB,QAAW,CAAC,CAAC,oBAAoB,EAAG,IAAG,IAAI,kBAAkB,UAAa,CAAC,CAAC,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,mBAAsB,CAAC,CAAC,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,sBAAyB,CAAC,CAAC,oBAAoB,EAAG,KAAI,IAAI,oBAAoB,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,gBAAmB,qCAAqC,iBAAiB,kBAAkB,6BAAgC,CAAC,CAAC,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,aAAa,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,aAAa,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,0BAA0B,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,oBAAoB,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,yBAAyB,oBAAoB,EAAG,KAAI,IAAI,kBAAkB,6BAA6B,oBAAoB,EAAG,KAAI,IAAI,WAAW,wBAAwB,QAAQ,GAAG,CAAC,OAAQ,MAAM,GAAG,GAAG,kBAAkB,oBAAqB,MAAM,GAAG,kBAAkB,GAAG,cAAc,OAAO,mBAAmB,MAAO,eAAc,kDAAiD,MAAO,qCAAoC,GAAG,KAAI,SAAS,CAAC,UAAU,mBAAmB,gBAAgB,gEAAgE,MAAO,aAAY,KAAK,UAAU,MAAM,IAAI,eAAe,+BAAwC,WAAF,IAAY,MAAM,OAAO,EAAE,GAAG,EAAE,KAAK,SAAS,MAAM,GAAG,AAAG,OAAO,IAAK,MAAM,OAAO,EAAE,GAAQ,AAAG,OAAO,KAAM,OAAM,OAAO,EAAE,GAAG,MAAU,AAAG,IAAI,OAAM,OAAO,EAAE,GAAG,MAAM,GAAG,eAAgB,KAAK,GAAG,KAAM,MAAM,QAAQ,MAAO,MAAO,QAAO,UAAU,eAAe,eAAe,KAAK,OAAO,KAAK,kBAAkB,KAAK,OAAO,MAAM,IAAI,YAAK,KAAK,eAAe,KAAK,MAAM,KAAK,OAAO,aAAY,MAAM,CAAC,CAAC,KAAI,CAAC,YAAY,KAAK,KAAK,AAAG,CAAC,MAAM,CAAC,YAAY,MAAK,KAAI,AAAG,MAAM,eAAe,OAAM,KAAW,YAAW,IAAI,IAAI,MAAM,QAAQ,eAAe,WAAW,KAAK,UAAU,WAAW,OAAO,OAAO,OAAO,GAAG,MAAG,CAAC,MAAM,CAAC,IAAW,IAAI,CAAG,KAAK,KAAI,IAAI,OAAO,EAAE,IAAI,OAAO,IAAU,KAAK,MAAK,SAAS,eAAe,GAAG,OAAO,IAAI,MAAM,IAAI,cAAc,KAAK,YAAY,KAAK,MAAG,aAAY,GAAU,KAAY,KAAK,OAAO,UAAU,IAAI,QAAQ,eAAe,MAAO,MAAK,UAAU,MAAM,IAAI,KAAK,WAAW,UAAU,MAAM,UAAU,MAAM,KAAK,UAAU,GAAG,MAAO,MAAK,UAAU,MAAM,KAAK,OAAO,MAAM,cAAc,MAAO,MAAK,UAAU,EAAE,IAAI,cAAkB,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,UAAU,sBAAsB,aAAW,SAAS,QAAQ,QAAQ,AAAG,OAAO,GAAG,OAAO,GAAK,WAAS,EAAE,IAAI,KAAK,kBAAkB,SAAO,IAAI,SAAO,OAAO,GAAO,SAAO,KAAK,OAAQ,QAAQ,OAAU,IAAI,WAAW,SAAS,SAAS,EAAE,QAAQ,oBAAoB,SAAS,QAAQ,GAAG,GAAG,MAAO,MAAK,OAAO,cAAc,QAAQ,aAAa,KAAK,MAAO,MAAK,MAAM,mBAAmB,MAAO,OAAM,uBAAuB,MAAG,wBAA8B,oCAAoC,EAAE,EAAE,IAAW,EAAE,8DAA8D,GAAG,uBAAuB,MAAO,qCAAoC,EAAE,EAAE,GAAG,WAAW,YAAY,OAAO,WAAW,uCAAuC,GAAG,uBAAuB,MAAO,qCAAoC,EAAE,EAAE,GAAG,IAAI,OAAO,MAAgB,YAAF,IAAY,EAAE,EAAE,OAAO,KAAyF,YAA5E,oBAAoB,IAAI,EAAE,GAAG,OAAW,oBAAoB,IAAK,GAAE,EAAE,IAAI,KAAa,EAAE,EAAE,IAAI,IAAK,SAAS,UAAU,GAAG,mBAAmB,IAAI,IAAI,KAAK,IAAI,2BAAoB,MAAM,GAAG,IAAW,EAAE,wCAAuC,YAAY,QAAQ,aAAa,MAAM,AAAG,UAAQ,UAAU,4CAA4C,AAAG,QAAQ,eAAe,MAAM,SAAQ,aAAa,IAAG,QAAQ,aAAa,KAAK,WAAW,WAAW,QAAQ,OAAO,sCAAsC,GAAG,uBAAuB,KAAK,wFAAwF,WAAW,QAAQ,eAAe,GAAG,OAAO,UAAU,OAAU,KAAK,kBAAkB,GAAG,CAAC,aAAa,YAAY,KAAK,kCAAkC,QAAQ,eAAe,KAAK,QAAqC,kBAAf,QAAQ,IAAI,KAAa,EAAE,EAAE,IAAI,EAAE,EAAG,oBAAoB,UAAU,EAAE,GAAG,GAAG,EAAE,cAAc,aAAa,UAAU,aAAa,kBAAsB,QAAQ,SAAS,aAAa,aAAa,CAAC,OAAc,UAAU,aAAa,UAAU,UAAU,aAAa,UAAU,kBAAkB,aAAa,kBAAkB,OAAO,aAAa,YAAY,iBAAiB,aAAa,iBAAqB,QAAQ,kBAAkB,EAAE,QAAQ,MAAM,oBAAoB,IAAK,IAAG,GAAG,GAAG,QAAQ,MAAM,oBAAoB,IAAK,IAAG,GAAG,GAAG,QAAQ,MAAM,oBAAoB,IAAK,IAAG,GAAG,GAAG,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,aAAa,UAAU,QAAQ,MAAM,oBAAoB,IAAK,MAAK,GAAG,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,GAAG,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,QAAQ,kBAAkB,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,IAAI,QAAQ,MAAM,oBAAoB,IAAK,MAAK,GAAG,aAAa,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,aAAa,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,GAAG,GAAG,WAAW,QAAQ,MAAM,oBAAoB,IAAK,KAAI,IAAI,GAAG,aAAa,UAAU,QAAQ,MAAM,oBAAoB,IAAK,KAAI,IAAI,GAAG,aAAa,aAAa,QAAQ,MAAM,oBAAoB,IAAK,KAAI,IAAI,GAAG,aAAa,WAAW,gBAAgB,4CAAgD,YAAY,GAAG,QAAQ,MAAM,oBAAoB,IAAK,MAAK,GAAG,eAAe,OAAO,QAAQ,QAAQ,QAAQ,CAAC,IAAM,MAAM,cAAgB,aAAa,aAAa,IAAM,aAAa,IAAI,iBAAmB,aAAa,YAAY,aAAe,aAAa,YAAY,eAAiB,aAAa,mBAAmB,UAAY,aAAa,UAAU,UAAY,aAAa,WAAW,OAAO,WAAW,WAAW,IAAI,KAAK,YAAY,MAAM,OAAO,YAAY,IAAI,aAAa,eAAe,AAAG,OAAO,QAAQ,QAAO,aAAa,MAAO,QAAO,YAAY,0DAA0D,GAAG,CAAC,QAAQ,CAAC,WAAW,MAAO,aAAY,OAAO,GAAG,CAAC,OAAQ,WAAI,4DAAmE,YAAY,MAAM,UAAS,oBAAoB,OAAO,IAAI,GAAG,GAAG,QAAO,OAAQ,WAAI,6CAA6C,OAAO,wEAA+E,YAAY,MAAM,gBAAgB,QAAQ,KAAK,oBAAoB,OAAO,IAAI,IAAI,aAAiB,QAAQ,KAAK,oBAAoB,OAAO,IAAI,IAAI,GAAG,MAAG,SAAO,qBAAoB,QAAQ,GAAG,aAAY,AAAG,YAAW,qBAAoB,YAAY,GAAG,WAAiB,EAAE,yBAAyB,MAAO,eAAc,EAAE,OAAO,cAAiB,cAAc,6DAA6D,GAAG,MAAO,oBAAoB,YAAa,WAAI,uFAA8F,EAAE,GAAG,CAAC,YAAa,WAAI,qDAA4D,GAAG,iBAAiB,SAAa,EAAE,GAAG,wBAAyB,cAAa,SAAS,GAAG,OAAQ,MAAO,uCAAsC,UAAU,YAAY,KAAK,cAAc,KAAK,GAAG,MAAM,MAAO,OAAM,cAAc,YAAgB,WAAe,cAAkB,YAAgB,EAAE,GAAG,MAAM,UAAU,oBAAoB,MAAM,GAAG,WAAW,MAAM,UAAU,oBAAoB,KAAK,GAAG,GAAG,SAAS,oBAAoB,KAAK,IAAI,KAAK,EAAE,iBAAiB,oBAAoB,KAAK,IAAI,KAAK,EAAE,GAAG,cAAc,oBAAoB,oBAAoB,KAAK,IAAI,iBAAqB,oBAAoB,KAAK,IAAI,mBAAuB,QAAQ,oCAAoC,QAAQ,oCAAoC,gBAAgB,uBAAuB,gBAAgB,KAAK,GAAG,KAAK,IAAI,YAAY,oBAAoB,KAAK,IAAI,GAAG,UAAU,oBAAoB,KAAK,IAAI,GAAG,oBAAoB,KAAK,IAAI,GAAG,gBAAgB,oBAAoB,KAAK,IAAI,GAAG,kBAAmB,aAAY,oBAAoB,KAAK,IAAI,GAAG,UAAU,oBAAoB,KAAK,IAAI,OAAS,WAAU,QAAQ,sBAAsB,WAAW,EAAE,AAAG,kBAAmB,UAAU,UAAU,GAAG,WAAgB,YAAW,UAAU,QAAO,UAAU,IAAqC,0BAAb,QAAQ,OAAe,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,oBAAqB,oBAAkB,GAAG,GAAG,EAAE,oBAAoB,aAAa,GAAG,kBAAiB,oBAAoB,kBAAiB,IAAI,GAAG,kBAAiB,YAAY,kBAAiB,IAAI,oBAAoB,SAAS,GAAG,QAAQ,iBAAiB,CAAC,UAAoB,UAAoB,kBAAoC,YAAwB,UAAoB,SAAkB,aAAa,cAAc,YAAY,kBAAiB,mBAAmB,gBAAgB,IAAQ,cAA2B,MAAG,wBAAwB,cAAa,IAAI,cAAc,YAAY,aAAa,eAAmB,eAAe,cAAqB,EAAE,oBAAoB,SAAE,CAAC,EAAS,GAAG,EAAG,CAAC,WAAW,EAAG,IAAK,CAAC,UAAU,EAAE,IAAK,wBAAwB,GAAG,uBAAuB,MAAO,qCAAoC,EAAE,EAAE,MAAM,OAAO,UAAW,IAAG,MAAO,WAAW,IAAG,gBAAgB,WAAW,MAAO,aAAY,UAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,SAAS,SAAS,OAAO,QAAQ,QAAQ,SAAS,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,IAAG,MAAO,YAAY,QAAQ,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,QAAQ,SAAS,IAAG,MAAM,OAAQ,SAAS,SAAS,OAAO,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,QAAQ,IAAG,MAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,GAAE,MAAO,UAAU,QAAQ,QAAQ,IAAG,MAAO,QAAQ,QAAQ,QAAQ,IAAG,MAAO,gBAAgB,QAAQ,GAAE,MAAO,WAAW,QAAQ,IAAG,MAAO,QAAQ,QAAQ,IAAG,MAAO,UAAU,GAAE,MAAO,aAAa,GAAE,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,GAAE,MAAO,SAAS,KAAI,MAAO,QAAQ,IAAG,MAAO,QAAQ,GAAE,MAAO,QAAQ,GAAE,MAAO,OAAO,IAAG,MAAO,OAAO,IAAI,MAAG,OAAO,YAAY,UAAgB,UAAU,qBAAwB,EAAY,gBAAS,IAAU,GAAG,AAAI,uBAA0D,QAAQ,aAA3C,QAAQ,sBAAgD,UAAU,GAAG,OAAO,yBAAyB,CAAC,KAAK,QAAQ,gDAAgD,UAAU,SAAS,UAAU,wBAA4B,CAAC,EAAI,eAAe,EAAI,aAAa,EAAI,iCAAiC,EAAI,OAAO,EAAI,kDAAkD,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,oBAAoB,EAAI,mCAAmC,EAAI,mCAAmC,EAAI,uBAAuB,EAAI,8BAA8B,EAAI,sCAAsC,EAAI,wBAAwB,EAAI,oCAAoC,EAAI,sCAAsC,EAAI,4BAA4B,EAAI,iCAAiC,EAAI,UAAU,EAAI,SAAS,EAAI,UAAU,EAAI,eAAe,OAAS,YAAY,OAAO,WAAc,EAAI,qBAAqB,EAAI,sBAAsB,EAAI,gBAAgB,EAAI,cAAc,EAAI,QAAQ,EAAI,SAAS,MAAQ,eAAmB,aAAa,OAAO,IAAO,IAAI,uBAAuB,OAAO,mBAAsB,WAAW,MAAO,oBAAmB,OAAO,mBAAsB,OAAO,IAAO,GAAM,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,GAAM,MAAM,KAAK,6BAAiC,OAAO,iBAAoB,WAAW,MAAO,kBAAiB,OAAO,iBAAoB,OAAO,IAAO,GAAM,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,GAAM,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,GAAM,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,GAAM,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,GAAM,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,GAAM,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,GAAM,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,GAAM,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,GAAM,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,GAAM,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,GAAM,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,GAAM,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,GAAM,MAAM,KAAK,2BAA+B,OAAO,eAAkB,WAAW,MAAO,gBAAe,OAAO,eAAkB,OAAO,IAAO,GAAM,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,GAAM,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,GAAM,MAAM,KAAK,mCAAuC,OAAO,uBAA0B,WAAW,MAAO,wBAAuB,OAAO,uBAA0B,OAAO,IAAO,GAAM,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,GAAM,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,GAAM,MAAM,KAAK,2BAA+B,OAAO,eAAkB,WAAW,MAAO,gBAAe,OAAO,eAAkB,OAAO,IAAO,GAAM,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,GAAM,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,GAAM,MAAM,KAAK,4BAAgC,OAAO,gBAAmB,WAAW,MAAO,iBAAgB,OAAO,gBAAmB,OAAO,IAAO,GAAM,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,GAAM,MAAM,KAAK,kCAAsC,OAAO,sBAAyB,WAAW,MAAO,uBAAsB,OAAO,sBAAyB,OAAO,IAAO,IAAO,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,wBAA4B,OAAO,YAAe,WAAW,MAAO,aAAY,OAAO,YAAe,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,IAAO,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,IAAO,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,IAAO,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,IAAO,MAAM,KAAK,4BAAgC,OAAO,gBAAmB,WAAW,MAAO,iBAAgB,OAAO,gBAAmB,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,8BAAkC,OAAO,kBAAqB,WAAW,MAAO,mBAAkB,OAAO,kBAAqB,OAAO,IAAO,IAAO,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,IAAO,MAAM,KAAK,+BAAmC,OAAO,mBAAsB,WAAW,MAAO,oBAAmB,OAAO,mBAAsB,OAAO,IAAO,IAAO,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,IAAO,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,IAAO,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,IAAO,MAAM,KAAK,8BAAkC,OAAO,kBAAqB,WAAW,MAAO,mBAAkB,OAAO,kBAAqB,OAAO,IAAO,IAAO,MAAM,KAAK,wCAA4C,OAAO,4BAA+B,WAAW,MAAO,6BAA4B,OAAO,4BAA+B,OAAO,IAAO,IAAO,MAAM,KAAK,qCAAyC,OAAO,yBAA4B,WAAW,MAAO,0BAAyB,OAAO,yBAA4B,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,qCAAyC,OAAO,yBAA4B,WAAW,MAAO,0BAAyB,OAAO,yBAA4B,OAAO,IAAO,IAAO,MAAM,KAAK,yDAA6D,OAAO,6CAAgD,WAAW,MAAO,8CAA6C,OAAO,6CAAgD,OAAO,IAAO,IAAO,MAAM,KAAK,4DAAgE,OAAO,gDAAmD,WAAW,MAAO,iDAAgD,OAAO,gDAAmD,OAAO,IAAO,IAAO,MAAM,KAAK,wDAA4D,OAAO,4CAA+C,WAAW,MAAO,6CAA4C,OAAO,4CAA+C,OAAO,IAAO,IAAO,MAAM,KAAK,+CAAmD,OAAO,mCAAsC,WAAW,MAAO,oCAAmC,OAAO,mCAAsC,OAAO,IAAO,IAAO,MAAM,KAAK,iDAAqD,OAAO,qCAAwC,WAAW,MAAO,sCAAqC,OAAO,qCAAwC,OAAO,IAAO,IAAO,MAAM,KAAK,gDAAoD,OAAO,oCAAuC,WAAW,MAAO,qCAAoC,OAAO,oCAAuC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,gEAAoE,OAAO,oDAAuD,WAAW,MAAO,qDAAoD,OAAO,oDAAuD,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,kDAAsD,OAAO,sCAAyC,WAAW,MAAO,uCAAsC,OAAO,sCAAyC,OAAO,IAAO,IAAO,MAAM,KAAK,sDAA0D,OAAO,0CAA6C,WAAW,MAAO,2CAA0C,OAAO,0CAA6C,OAAO,IAAO,IAAO,MAAM,KAAK,+CAAmD,OAAO,mCAAsC,WAAW,MAAO,oCAAmC,OAAO,mCAAsC,OAAO,IAAO,IAAO,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,IAAO,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,IAAO,MAAM,KAAK,YAAY,OAAO,IAAO,IAAI,OAAO,MAAS,MAAM,OAAO,QAAW,QAAQ,OAAO,QAAW,QAAQ,OAAO,cAAiB,cAAc,OAAO,WAAc,WAAW,OAAO,WAAc,WAAW,cAAc,OAAO,KAAQ,gBAAe,GAAG,UAAW,MAAK,aAAa,QAAQ,OAAO,qBAAwB,OAAO,qBAAwB,WAAW,AAAG,KAAI,MAAM,MAAK,SAAS,MAAO,SAAQ,4BAA4B,KAAK,KAAK,aAAa,KAAK,QAAQ,gCAAgC,OAAO,IAAI,KAAK,OAAO,OAAO,sBAAsB,qBAAqB,AAAI,WAAU,MAAM,AAAI,WAAU,uBAAsB,YAAW,mBAAyC,GAAtB,KAAK,MAAM,WAAc,gBAAgB,EAAG,OAAgB,GAAT,SAAY,gBAAgB,EAAE,OAAO,iBAAiB,GAAG,UAAU,OAA+C,GAAxC,UAAU,GAAK,OAAO,UAAa,GAAQ,MAAM,OAAO,cAAc,UAAU,AAAG,OAAO,sBAAwB,OAAO,uBAA0B,UAAU,AAAG,OAAO,UAAc,QAAO,UAAa,cAAc,WAAW,WAAW,WAAW,WAAW,OAAO,UAAa,KAAK,GAAG,SAAS,IAAQ,QAA2B,GAAlB,OAAO,IAAO,IAAO,OAAO,QAA0F,IAA9E,AAAG,MAAO,QAAO,SAAY,YAAW,QAAO,QAAW,CAAC,OAAO,UAAkB,OAAO,QAAW,OAAO,GAAG,OAAO,QAAW,QAAS,MAAI,yBAAuB,eAAc,IAAK,AAAI,wBAAuB,MAG56uE,mCAIT,AAAI,MAAO,WAAY,UAAY,MAAO,SAAW,SAC/C,OAAO,QAAU,8BACd,AAAI,MAAO,SAAW,YAAc,OAAO,IAC9C,OAAO,GAAI,WAAa,MAAO,iCAC5B,AAAI,MAAO,WAAY,UAC1B,UAAQ,8BAAmC,iCCpBjD,yDACA,sBAAyB,WACvB,eAAiB,MAAO,WAAa,aAAe,SAAS,cAAgB,SAAS,cAAc,IAAM,OAC1G,MAAI,OAAO,aAAe,aAAa,YAAa,YAAc,YAEpE,6BACE,mBAAoB,oBAAqB,GAE3C,WAAW,MAAO,qBAAoB,YAAY,mBAAkB,mBAAuB,OAAW,IAAI,MAAO,QAAQ,AAAG,OAAO,eAAe,MAAM,iBAAgB,KAAK,OAAO,MAAM,eAAe,eAAmB,uBAA2B,yBAAyB,KAAM,6BAAgC,yBAAgC,uBAA8B,wBAA+B,GAAM,mBAAmB,MAAO,SAAS,SAAS,sBAAsB,MAAO,gBAAgB,WAAW,oBAAoB,MAAO,UAAU,UAAU,MAAO,SAAQ,UAAW,UAAU,MAAO,SAAQ,SAAS,MAAO,SAAS,qBAAqB,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,sBAAsB,oBAAoB,GAAG,0BAA0B,MAAG,QAAO,WAAsB,OAAO,WAAc,KAAK,iBAAwB,gBAAgB,KAAK,8DAAsE,AAAG,oBAAqB,CAAG,sBAAuB,gBAAgB,AAAQ,eAAQ,QAAQ,iBAAiB,IAAS,gBAAgB,UAAU,IAAI,MAAM,0BAAqC,MAAI,SAAO,QAAe,eAAM,AAAI,UAAS,UAAiB,gBAAQ,SAAS,SAAS,UAAa,UAAiB,OAAO,aAAgB,SAAS,OAAO,KAAK,SAAS,WAAW,mBAA8B,QAAQ,MAAM,SAAS,IAAM,MAAI,KAAI,QAAQ,KAAI,GAAI,YAAW,MAAK,QAAO,IAAI,QAAe,KAAK,AAAG,QAAQ,KAAQ,OAAO,GAAG,aAAY,QAAQ,KAAQ,GAAG,QAAQ,MAAM,MAAK,WAAW,QAAQ,KAAQ,MAAM,GAAG,QAAQ,GAAM,oBAAoB,aAAa,GAAG,CAAE,cAAc,aAAa,KAAM,MAAM,QAAQ,GAAM,qBAAqB,OAAO,MAAM,iBAAiB,QAAQ,KAAQ,SAAS,OAAO,QAAW,WAAW,MAAM,+BAAmC,AAAG,qBAAsB,CAAG,MAAO,OAAM,aAAa,OAAM,YAAuB,MAAO,MAAK,KAAI,WAAW,YAAuB,SAAS,MAAG,OAAO,aAAa,WAAmB,GAAI,YAAW,WAAW,IAAI,MAAK,KAAK,EAAE,UAAU,QAAO,MAAO,OAAO,UAAiB,OAAM,AAAG,MAAO,aAAY,YAAa,WAAW,WAAgB,AAAG,MAAO,YAAW,aAAa,YAAW,WAAU,AAAG,MAAO,OAAO,YAAY,OAAM,iBAAiB,KAAK,UAAS,AAAG,MAAO,QAAQ,aAAa,CAAG,MAAO,UAAU,aAAY,SAAQ,IAAG,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAAQ,MAAM,MAAO,WAAW,YAAY,SAAS,QAAY,AAAG,qBAAoB,wBAAuB,CAAG,sBAAuB,gBAAgB,KAAK,SAAS,KAAU,AAAG,SAAS,eAAe,iBAAgB,SAAS,cAAc,KAAI,AAAG,YAAY,iBAAgB,YAAW,AAAG,gBAAgB,QAAQ,WAAW,EAAG,gBAAgB,gBAAgB,OAAO,EAAE,gBAAgB,YAAY,KAAK,GAAQ,gBAAgB,GAAI,MAAM,cAAyB,QAAQ,GAAI,gBAAe,WAAI,KAAK,MAAM,IAAI,IAAO,IAAI,KAAK,MAAa,IAAI,cAAc,AAAG,uBAAuB,YAAW,cAAyB,QAAQ,GAAI,gBAAe,WAAI,KAAK,MAAM,IAAI,IAAO,IAAI,aAAa,cAAc,IAAI,KAAK,MAAa,GAAI,YAAW,IAAI,YAAW,UAAU,6BAAuC,QAAQ,GAAI,gBAAe,IAAI,KAAK,MAAM,IAAI,IAAM,IAAI,aAAa,cAAc,IAAI,OAAO,WAAsB,GAAG,IAAI,QAAQ,KAAK,IAAI,QAAQ,GAAG,IAAI,UAAU,OAAO,IAAI,UAAU,OAAO,WAAW,IAAI,QAAQ,QAAQ,IAAI,KAAK,OAAO,eAAe,gBAAgB,SAAS,MAAM,QAAa,QAAQ,OAAO,OAAU,QAAQ,IAAI,KAAK,aAAiB,OAAO,UAAa,QAAQ,KAAK,KAAK,SAAS,IAAI,MAAO,iBAAiB,AAAG,gBAAgB,eAAe,MAAM,QAAO,KAAK,gBAAgB,MAAM,gBAAgB,KAAK,AAAG,OAAO,WAAa,YAAW,OAAO,WAAa,AAAG,OAAO,aAAe,aAAY,OAAO,aAAe,AAAG,OAAO,MAAQ,OAAM,OAAO,MAAQ,eAAe,AAAG,OAAO,YAAc,YAAW,OAAO,YAAc,kBAAkB,AAAG,OAAO,eAAiB,eAAc,OAAO,eAAiB,AAAG,MAAO,cAAc,UAAU,IAAI,mCAAmC,yBAA6B,GAAI,aAAY,MAAM,CAAC,QAAU,IAAI,QAAU,IAAI,EAAE,QAAU,kBAAsB,cAAqB,EAAE,iCAAgC,AAAI,WAAW,MAAM,qBAAqB,MAAO,yBAAyB,UAAS,OAAO,IAAI,OAAO,eAAO,MAAK,gCAAgC,MAAM,8BAAqC,MAAK,oDAAoD,QAAQ,CAAC,OAAS,cAAc,SAAQ,EAAE,GAAG,KAAM,MAAuB,MAAM,GAAG,QAAS,KAAI,QAAQ,GAAG,EAAE,KAAI,WAAW,KAAK,aAAa,IAAI,KAAI,KAAK,MAAO,OAAK,MAAQ,cAAc,SAAQ,WAAW,IAAI,QAAQ,0BAAmB,IAAI,MAAY,OAAM,kCAAiC,MAAG,cAAa,SAAgB,aAAa,MAAQ,aAAa,UAAiB,QAAQ,MAAY,KAAI,UAAS,SAAS,aAAiB,UAAa,EAAE,GAAG,KAAM,UAAU,EAAE,EAAE,KAAK,OAAO,KAAK,cAAc,IAAI,SAAS,IAAI,AAAG,UAAW,CAAG,SAAQ,GAAE,QAAM,aAAY,MAAM,GAAG,UAAU,KAAK,KAAS,MAAM,GAAG,KAAK,GAAK,QAAQ,MAAK,MAAM,KAAK,OAAO,WAAI,mBAAmB,KAAK,AAAG,SAAQ,GAAE,aAAa,QAAc,IAAI,+CAA+C,SAAS,UAAU,GAAG,gBAAgB,SAAS,MAAM,eAAe,MAAO,QAAO,sBAA0B,aAAa,SAAS,MAAG,aAAY,aAAa,CAAC,KAAa,SAAS,OAAc,WAAW,MAAO,OAAM,MAAM,WAAW,SAAS,UAAU,OAAO,gBAAgB,MAAO,cAAc,YAAY,GAAI,aAAY,QAAQ,OAAU,oDAAiG,eAAlC,IAAI,sBAA0B,IAAU,KAAK,SAAS,CAAE,SAAQ,SAAQ,EAAE,OAAO,GAAG,OAAO,IAAI,IAAI,KAAK,UAAU,YAAa,MAAO,aAAY,OAAO,KAAK,SAAS,IAAI,SAAyB,YAAH,GAAS,IAAI,SAAQ,OAAO,KAAK,OAAO,GAAG,CAAE,IAAG,MAAM,KAAK,OAAO,aAAa,IAAI,SAAS,OAAO,KAAK,OAAO,GAAG,GAAI,IAAG,MAAM,KAAK,KAAK,OAAO,aAAc,IAAG,KAAK,EAAE,IAAI,SAAS,OAAO,KAAK,OAAO,GAA4F,GAAzF,AAAI,IAAG,MAAM,IAAK,GAAI,IAAG,KAAK,GAAG,IAAI,EAAE,GAAQ,GAAI,IAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,OAAO,GAAM,GAAG,MAAO,KAAK,OAAO,aAAa,SAAS,OAAO,GAAG,MAAM,KAAK,OAAO,aAAa,MAAM,IAAI,GAAG,MAAM,GAAG,OAAQ,MAAO,KAAI,0CAA0C,MAAO,KAAI,kBAAkB,OAAO,IAAI,gBAAgB,GAAG,4DAA4D,GAAG,CAAE,iBAAgB,GAAG,MAAO,GAA0D,iBAA3C,cAAkB,OAAO,gBAAgB,IAAY,EAAE,EAAE,IAAI,OAAO,EAAE,GAAG,MAAM,IAAI,WAAW,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,OAAO,IAAI,WAAW,EAAE,GAAG,EAAE,MAAQ,IAAE,OAAO,IAAI,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,QAAQ,OAAO,MAAM,KAAK,UAAU,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,EAAE,KAAK,UAAU,IAAI,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,EAAE,GAAG,KAAK,UAAU,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,GAAG,GAAG,KAAK,UAAU,IAAI,GAAG,EAAE,GAAG,KAAK,UAAU,IAAI,EAAE,IAAI,YAAK,QAAQ,EAAS,OAAO,SAAS,kDAAkD,MAAO,mBAAkB,IAAI,OAAO,OAAO,iBAAiB,6CAA0C,MAAM,IAAI,OAAM,UAAQ,uEAAsE,yCAAyC,QAAO,IAAI,OAAO,MAAS,MAAM,GAAI,WAAU,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,OAAU,OAAO,GAAI,YAAW,KAAK,OAAO,QAAW,QAAQ,GAAI,aAAY,KAAK,OAAO,QAAW,QAAQ,GAAI,aAAY,KAAK,OAAO,QAAW,QAAQ,GAAI,cAAa,KAAK,OAAO,QAAW,QAAQ,GAAI,cAAa,KAAK,2BAA2B,OAAO,gBAAmB,SAAS,0CAAyC,KAAM,WAAU,OAAO,IAAG,aAAa,WAAU,QAAQ,GAAG,MAAO,WAAU,YAAY,SAAS,QAAQ,SAAS,UAAS,SAAS,KAAK,AAAG,MAAO,QAAO,SAAU,AAAG,SAAS,MAAM,OAAW,OAAO,UAAa,OAAW,OAAO,WAAc,MAAK,SAAS,KAAW,MAAK,SAAS,MAAM,OAAU,KAAK,SAAS,MAAO,iBAAiB,cAAkB,cAAkB,iBAAqB,sBAA0B,iBAAwB,GAAM,kBAAkB,GAAG,OAAO,OAAsF,IAA3E,AAAG,MAAO,QAAO,QAAW,YAAW,QAAO,OAAU,CAAC,OAAO,SAAiB,OAAO,OAAU,QAAQ,YAAY,OAAO,OAAU,SAAU,qBAAqB,cAAc,uBAAuB,mBAAmB,GAAK,qBAAqB,YAAY,mBAAmB,qBAAqB,YAAY,uBAAuB,cAAc,GAAK,mBAAmB,GAAG,OAAO,QAA0F,IAA9E,AAAG,MAAO,QAAO,SAAY,YAAW,QAAO,QAAW,CAAC,OAAO,UAAkB,OAAO,QAAW,QAAQ,aAAa,OAAO,QAAW,SAAU,qBAAqB,eAAe,yBAAyB,aAAa,QAAQ,IAAI,0BAA0B,cAAc,QAAQ,IAAI,cAAc,KAAK,gBAAoB,KAAK,sBAA0B,uBAA2B,2BAA+B,KAAK,8BAA8B,kBAAkB,AAAG,OAAO,wBAA2B,OAAO,uBAA0B,iBAAkB,iCAA0I,GAAzG,kBAAkB,AAAG,OAAO,wBAA2B,OAAO,uBAA0B,iBAAoB,iBAAiB,GAAG,CAAG,uBAAuB,MAAM,eAAc,sBAAsB,qBAAqB,MAAQ,wBAAuB,aAAa,sBAAsB,sBAAsB,KAAK,YAAa,OAAO,gBAAmB,GAAG,OAAO,gBAAmB,GAAG,qBAAqB,KAAG,QAAO,SAAY,OAAO,QAAW,MAAM,MAAM,GAAG,IAAI,MAAM,IAAI,MAAM,MAAM,GAAK,WAAW,EAAE,KAAK,SAAS,KAAK,+CAAqD,GAAI,aAAY,aAAa,MAAM,+BAA+B,MAAO,QAAO,UAAU,WAAW,IAAI,WAAW,QAAQ,IAAI,QAAQ,UAAU,EAAE,kBAAkB,wCAAwC,6BAA6B,MAAO,WAAU,SAAS,eAAe,kBAAkB,UAAU,6BAA6B,MAAO,WAAU,SAAS,eAAe,mBAAmB,yBAAyB,AAAI,UAAU,iBAAiB,gBAAe,WAAW,iBAAgB,qBAAqB,IAAI,GAAG,WAAY,MAAO,IAAI,YAAW,YAAY,GAAG,WAAY,MAAO,YAAW,gBAAqB,KAAK,8DAA8D,MAAM,OAAM,4BAA4B,MAAG,CAAC,YAAa,qBAAoB,wBAAwB,MAAO,QAAQ,YAAY,CAAC,UAAU,gBAAwB,MAAM,eAAe,CAAC,YAAY,gBAAgB,KAAK,mBAAmB,GAAG,CAAC,SAAS,GAAO,KAAK,uCAAuC,eAAe,IAAI,MAAO,UAAS,gBAAmB,MAAM,WAAW,MAAO,eAAqB,GAAI,SAAQ,yBAAyB,QAAQ,eAAe,sBAAsB,SAAS,CAAC,IAAM,cAAc,uBAAyB,eAAe,2CAA0C,aAAY,SAAS,QAAQ,OAAO,IAAO,SAAQ,WAAW,SAAQ,OAAU,2BAA2B,WAAW,QAAQ,oBAAoB,oBAAoB,iBAAiB,oBAAoB,2CAA2C,gBAAgB,OAAO,UAAa,0CAA0C,MAAO,oBAAmB,KAAK,iBAAiB,MAAO,aAAY,YAAY,OAAO,QAAQ,KAAK,SAAS,iBAAiB,IAAI,0CAA0C,QAAQ,MAAM,UAAU,4BAA4B,GAAG,CAAC,YAAY,MAAO,aAAY,sBAAuB,YAAY,CAAC,UAAU,iBAAiB,CAAC,UAAU,iBAAiB,MAAO,QAAQ,WAAY,MAAM,eAAe,CAAC,YAAY,gBAAgB,KAAK,mBAAmB,WAAW,YAAY,qBAAqB,SAAS,MAAM,MAAO,QAAO,KAAK,0BAA0B,iBAAiB,IAAI,kCAAkC,QAAQ,IAAI,6CAA6C,uBAAuB,mCAAoC,OAAO,wBAAuB,2BAA4B,GAAG,OAAO,gBAAoB,IAAI,aAAY,OAAO,gBAAmB,KAAK,iBAAiB,MAAO,mBAAiB,WAAI,sDAAsD,GAAU,GAAO,0BAAyB,GAAG,WAAW,OAAO,uDAAuD,2BAA2B,WAAW,QAAQ,SAAS,CAAC,UAAU,mBAAmB,gBAAgB,gEAAgE,MAAO,aAAY,KAAK,UAAU,MAAM,IAAI,eAAe,+BAAwC,WAAF,IAAY,MAAM,OAAO,EAAE,GAAG,EAAE,KAAK,SAAS,MAAM,GAAG,AAAG,OAAO,IAAK,MAAM,OAAO,EAAE,GAAQ,AAAG,OAAO,KAAM,OAAM,OAAO,EAAE,GAAG,MAAU,AAAG,IAAI,OAAM,OAAO,EAAE,GAAG,MAAM,GAAG,eAAgB,KAAK,GAAG,KAAM,MAAM,QAAQ,MAAO,MAAO,QAAO,UAAU,eAAe,eAAe,KAAK,OAAO,KAAK,kBAAkB,KAAK,OAAO,MAAM,IAAI,YAAK,KAAK,eAAe,KAAK,MAAM,KAAK,OAAO,aAAY,MAAM,CAAC,CAAC,KAAI,CAAC,YAAY,KAAK,KAAK,AAAG,CAAC,MAAM,CAAC,YAAY,MAAK,KAAI,AAAG,MAAM,eAAe,OAAM,KAAW,YAAW,IAAI,IAAI,MAAM,QAAQ,eAAe,WAAW,KAAK,UAAU,WAAW,OAAO,OAAO,OAAO,GAAG,MAAG,CAAC,MAAM,CAAC,IAAW,IAAI,CAAG,KAAK,KAAI,IAAI,OAAO,EAAE,IAAI,OAAO,IAAU,KAAK,MAAK,SAAS,eAAe,GAAG,OAAO,IAAI,MAAM,IAAI,cAAc,KAAK,YAAY,KAAK,MAAG,aAAY,GAAU,KAAY,KAAK,OAAO,UAAU,IAAI,QAAQ,eAAe,MAAO,MAAK,UAAU,MAAM,IAAI,KAAK,WAAW,UAAU,MAAM,UAAU,MAAM,KAAK,UAAU,GAAG,MAAO,MAAK,UAAU,MAAM,KAAK,OAAO,MAAM,cAAc,MAAO,MAAK,UAAU,EAAE,IAAI,cAAkB,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,UAAU,sBAAsB,aAAW,SAAS,QAAQ,QAAQ,AAAG,OAAO,GAAG,OAAO,GAAK,WAAS,EAAE,IAAI,KAAK,kBAAkB,SAAO,IAAI,SAAO,OAAO,GAAO,SAAO,KAAK,OAAQ,QAAQ,OAAU,IAAI,WAAW,SAAS,SAAS,EAAE,QAAQ,OAAO,SAAS,QAAQ,GAAG,GAAG,MAAO,MAAK,OAAO,cAAc,QAAQ,aAAa,KAAK,MAAO,MAAK,MAAM,mBAAmB,MAAO,OAAM,uBAAuB,MAAO,GAAE,+DAA+D,uCAAiD,YAAF,IAAY,EAAE,EAAE,OAAO,KAA+D,YAAlD,OAAO,IAAI,EAAE,GAAG,OAAW,OAAO,IAAK,GAAE,EAAE,IAAI,KAAa,EAAE,EAAE,IAAI,IAAK,SAAS,UAAU,GAAG,OAAO,IAAI,IAAI,KAAK,IAAI,cAAO,MAAM,GAAG,IAAW,EAAE,uBAAuB,KAAK,QAAQ,0BAA0B,MAAM,MAAM,oBAAoB,SAAE,CAAC,EAAS,GAAG,EAAG,CAAC,WAAW,EAAG,IAAK,CAAC,UAAU,EAAE,IAAK,kBAAkB,CAAC,gCAAkC,iCAAiC,SAAW,UAAU,QAAU,SAAS,SAAW,UAAU,UAAY,WAAW,OAAS,aAAiB,aAAa,OAAO,IAAO,IAAI,UAAU,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,6BAAiC,OAAO,iBAAoB,WAAW,MAAO,kBAAiB,OAAO,iBAAoB,OAAO,IAAO,iBAAoB,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,aAAgB,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,aAAgB,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,qBAAwB,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,2BAA+B,OAAO,eAAkB,WAAW,MAAO,gBAAe,OAAO,eAAkB,OAAO,IAAO,eAAkB,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,mCAAuC,OAAO,uBAA0B,WAAW,MAAO,wBAAuB,OAAO,uBAA0B,OAAO,IAAO,uBAA0B,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,2BAA+B,OAAO,eAAkB,WAAW,MAAO,gBAAe,OAAO,eAAkB,OAAO,IAAO,eAAkB,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,4BAAgC,OAAO,gBAAmB,WAAW,MAAO,iBAAgB,OAAO,gBAAmB,OAAO,IAAO,gBAAmB,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,aAAgB,MAAM,KAAK,kCAAsC,OAAO,sBAAyB,WAAW,MAAO,uBAAsB,OAAO,sBAAyB,OAAO,IAAO,sBAAyB,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,WAAc,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,WAAc,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,wBAA4B,OAAO,YAAe,WAAW,MAAO,aAAY,OAAO,YAAe,OAAO,IAAO,YAAe,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,qBAAwB,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,qBAAwB,MAAM,KAAK,iCAAqC,OAAO,qBAAwB,WAAW,MAAO,sBAAqB,OAAO,qBAAwB,OAAO,IAAO,qBAAwB,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,4BAAgC,OAAO,gBAAmB,WAAW,MAAO,iBAAgB,OAAO,gBAAmB,OAAO,IAAO,gBAAmB,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,8BAAkC,OAAO,kBAAqB,WAAW,MAAO,mBAAkB,OAAO,kBAAqB,OAAO,IAAO,kBAAqB,MAAM,KAAK,mBAAuB,OAAO,OAAU,WAAW,MAAO,QAAO,OAAO,OAAU,OAAO,IAAO,OAAU,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,WAAc,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,UAAa,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,qBAAyB,OAAO,SAAY,WAAW,MAAO,UAAS,OAAO,SAAY,OAAO,IAAO,SAAY,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,+BAAmC,OAAO,mBAAsB,WAAW,MAAO,oBAAmB,OAAO,mBAAsB,OAAO,IAAO,mBAAsB,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,iBAAqB,OAAO,KAAQ,WAAW,MAAO,MAAK,OAAO,KAAQ,OAAO,IAAO,KAAQ,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,WAAc,MAAM,KAAK,0BAA8B,OAAO,cAAiB,WAAW,MAAO,eAAc,OAAO,cAAiB,OAAO,IAAO,cAAiB,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,kBAAsB,OAAO,MAAS,WAAW,MAAO,OAAM,OAAO,MAAS,OAAO,IAAO,MAAS,MAAM,KAAK,oBAAwB,OAAO,QAAW,WAAW,MAAO,SAAQ,OAAO,QAAW,OAAO,IAAO,QAAW,MAAM,KAAK,sBAA0B,OAAO,UAAa,WAAW,MAAO,WAAU,OAAO,UAAa,OAAO,IAAO,WAAc,MAAM,KAAK,uBAA2B,OAAO,WAAc,WAAW,MAAO,YAAW,OAAO,WAAc,OAAO,IAAO,YAAe,MAAM,KAAK,yBAA6B,OAAO,aAAgB,WAAW,MAAO,cAAa,OAAO,aAAgB,OAAO,IAAO,cAAiB,MAAM,KAAK,YAAY,OAAO,IAAO,IAAI,OAAO,MAAS,MAAM,cAAc,OAAO,KAAQ,gBAAe,GAAG,UAAW,MAAK,aAAa,QAAQ,OAAO,qBAAwB,OAAO,qBAAwB,WAAW,AAAG,KAAI,MAAM,MAAK,SAAS,MAAO,SAAQ,4BAA4B,KAAK,KAAK,aAAa,KAAK,QAAQ,gCAAgC,OAAO,IAAI,KAAK,OAAO,OAAO,eAAe,GAAM,sBAAsB,qBAAqB,AAAI,WAAU,MAAM,AAAI,WAAU,uBAAsB,YAAW,wBAAwB,kBAAkB,OAAO,QAAW,IAAI,gBAAgB,QAAQ,EAAE,KAAK,IAAI,aAAe,GAAG,YAAa,YAAY,OAAY,GAAG,GAAG,UAAU,cAAc,GAAK,YAAY,UAAU,EAAE,AAAG,GAAG,MAAO,IAAI,UAAU,EAAE,OAAO,OAAM,CAAC,EAAE,EAAE,QAAO,IAAI,qBAAqB,OAAO,MAAM,EAAE,YAAY,WAAW,IAAM,mBAAyC,GAAtB,KAAK,MAAM,WAAc,gBAAgB,EAAG,OAAgB,GAAT,SAAY,gBAAgB,EAAE,OAAO,iBAAiB,GAAG,UAAU,OAA+C,GAAxC,UAAU,GAAK,OAAO,UAAa,GAAQ,MAAM,OAAO,cAAc,UAAU,AAAG,OAAO,sBAAwB,OAAO,uBAA0B,AAAG,cAAa,SAAS,MAAM,UAAU,AAAG,OAAO,UAAc,QAAO,UAAa,cAAc,WAAW,WAAW,WAAW,WAAW,OAAO,UAAa,KAAK,GAAG,SAAS,IAAQ,QAAS,OAAO,IAAO,IAAI,+BAA+B,GAAG,UAAU,eAAe,SAAS,EAAG,OAAO,AAAG,eAAqB,OAAM,GAAK,WAAW,OAAO,cAAc,AAAG,OAAO,QAAU,OAAO,OAAU,SAAQ,MAAM,OAAO,GAAI,YAAW,SAAS,GAAG,OAAO,QAA0F,IAA9E,AAAG,MAAO,QAAO,SAAY,YAAW,QAAO,QAAW,CAAC,OAAO,UAAkB,OAAO,QAAW,OAAO,GAAG,OAAO,QAAW,QAAS,iBAAiB,GAAK,MAAG,QAAO,cAAgB,cAAa,IAAM,cAAc,GAAK,MAGh81B,uBAIT,AAAI,MAAO,WAAY,UAAY,MAAO,SAAW,SAC/C,OAAO,QAAU,kBACd,AAAI,MAAO,SAAW,YAAc,OAAO,IAC9C,OAAO,GAAI,WAAa,MAAO,qBAC5B,AAAI,MAAO,WAAY,UAC1B,UAAQ,kBAAuB,qBCpBrC,AAsBO,IAAM,gBAAkB,qBACA,iBAvB/B,MAiDE,gCAAoB,KAAA,QAAA,SAAgC,KAAA,UAAA,UAH5C,KAAA,KAAO,GAAI,SACX,KAAA,aAAe,EAIvB,YACE,MAAK,MAAK,KAAK,IAAI,SACjB,KAAK,UAAU,SAAS,KAAK,QAAS,QAEjC,KAAK,KAAK,IAAI,QAGvB,kBACE,KAAK,eACL,KAAK,KAAK,IAAI,OAAQ,OAGxB,YACE,MAAO,MAAK,KAAK,IAAI,QAGvB,eACE,YAAK,eACE,KAAK,KAAK,OAAO,QAG1B,aACE,MAAO,MAAK,6BAzEhB,MAiGE,QACE,MAAO,mBAAkB,QAE3B,aACE,MAAO,mBAAkB,QAE3B,iBACE,MAAO,mBAAkB,YAE3B,aACE,MAAO,mBAAkB,cAE3B,oBACE,MAAO,mBAAkB,eAE3B,0BACE,MAAO,mBAAkB,SAE3B,gCAEE,MAAO,mBAAkB,QAE3B,SACE,MAAO,mBAAkB,UAG3B,iBACE,MAAO,mBAAkB,kBAG3B,UACE,MAAO,MAAK,mBAAqB,GAAK,gBAAkB,gBAG1D,uCAGE,MAAO,mBAAkB,eAG3B,kBACK,EAAG,EAAG,WAAY,WAAY,KAAM,uBAAY,yBAEnD,MAAO,mBAAkB,oBAG3B,oBACE,MAAO,mBAAkB,SAE3B,kCAEE,MAAO,mBAAkB,gBAE3B,gBACE,MAAO,mBAAkB,WAE3B,gBACE,MAAO,mBAAkB,WAG3B,qBACE,MAAO,mBAAkB,UAG3B,OACE,MAAO,mBAAkB,OAG3B,SACE,MAAO,mBAAkB,OAE3B,cACE,MAAO,mBAAkB,QAE3B,cACE,MAAO,mBAAkB,YAE3B,cACE,MAAO,mBAAkB,YAE3B,gBACE,MAAO,mBAAkB,cAE3B,cACE,MAAO,mBAAkB,YAG3B,YACE,MAAO,mBAAkB,OAE3B,aACE,MAAO,mBAAkB,QAG3B,6CAEE,MAAO,mBAAkB,sBAG3B,eACE,MAAO,mBAAkB,UAE3B,eACE,MAAO,mBAAkB,UAG3B,WACE,MAAO,mBAAkB,SAE3B,cACE,MAAO,mBAAkB,YAG3B,UACE,MAAO,mBAAkB,QAE3B,eACE,MAAO,mBAAkB,aAG3B,aACE,MAAO,mBAAkB,WAE3B,kBACE,MAAO,mBAAkB,gBAG3B,cACE,MAAO,mBAAkB,cAE3B,gBACE,MAAO,mBAAkB,cAE3B,eACE,MAAO,mBAAkB,aAG3B,iBACE,MAAO,mBAAkB,SAE3B,sBACE,MAAO,mBAAkB,UAG3B,iBACE,MAAO,mBAAkB,QAG3B,YACE,MAAO,mBAAkB,OAE3B,aACE,MAAO,mBAAkB,WAG3B,SACE,MAAO,mBAAkB,OAG3B,YACE,MAAO,mBAAkB,OAE3B,aACE,MAAO,mBAAkB,WAG3B,YACE,MAAO,mBAAkB,OAE3B,YACE,MAAO,mBAAkB,OAG3B,uBACE,MAAO,mBAAkB,qBAG3B,QACE,MAAO,mBAAkB,QAE3B,SACE,MAAO,mBAAkB,SAE3B,SACE,MAAO,mBAAkB,SAG3B,QACE,MAAO,mBAAkB,QAG3B,SACE,MAAO,mBAAkB,SAE3B,SACE,MAAO,mBAAkB,SAE3B,YACE,MAAO,mBAAkB,YAG3B,SACE,MAAO,mBAAkB,OAE3B,OACE,MAAO,mBAAkB,OAE3B,SACE,MAAO,mBAAkB,SAE3B,eACE,MAAO,mBAAkB,WAE3B,OACE,MAAO,mBAAkB,OAE3B,SACE,MAAO,mBAAkB,SAE3B,QACE,MAAO,mBAAkB,QAE3B,SACE,MAAO,mBAAkB,SAE3B,UACE,MAAO,mBAAkB,UAE3B,cACE,MAAO,mBAAkB,cAE3B,QACE,MAAO,mBAAkB,QAE3B,SACE,MAAO,mBAAkB,SAE3B,WACE,MAAO,mBAAkB,SAE3B,OACE,MAAO,mBAAkB,OAE3B,aACE,MAAO,mBAAkB,UAE3B,QACE,MAAO,mBAAkB,QAE3B,OACE,MAAO,mBAAkB,OAG3B,mBACE,MAAO,mBAAkB,QAG3B,OACE,MAAO,mBAAkB,OAE3B,cACE,MAAO,mBAAkB,cAG3B,WACE,MAAO,mBAAkB,WAG3B,YACE,MAAO,mBAAkB,YAG3B,OACE,MAAO,mBAAkB,OAE3B,OACE,MAAO,mBAAkB,OAE3B,OACE,MAAO,mBAAkB,OAG3B,QACE,MAAO,mBAAkB,QAE3B,QACE,MAAO,mBAAkB,QAE3B,QACE,MAAO,mBAAkB,QAE3B,WACE,MAAO,mBAAkB,SAG3B,QACE,MAAO,mBAAkB,QAE3B,QACE,MAAO,mBAAkB,QAE3B,QACE,MAAO,mBAAkB,QAG3B,SACE,MAAO,mBAAkB,SAE3B,SACE,MAAO,mBAAkB,SAE3B,SACE,MAAO,mBAAkB,SAG3B,OACE,MAAO,mBAAkB,OAG3B,cACE,MAAO,mBAAkB,QAG3B,aACK,aAAO,OAAQ,SAAU,KAAM,uBAAY,yBAE9C,MAAO,mBAAkB,eAG3B,0BACE,MAAO,mBAAkB,UAE3B,mCAEE,MAAO,mBAAkB,kBAE3B,+BACE,MAAO,mBAAkB,mBAG3B,sBACK,aAAO,OAAQ,SAAU,KAAM,uBAAY,yBAE9C,MAAO,mBAAkB,wBAG3B,wCAEE,MAAO,mBAAkB,mBAE3B,4CAEE,MAAO,mBAAkB,2BAE3B,wCAEE,MAAO,mBAAkB,4BAE3B,0BACE,MAAO,mBAAkB,UAE3B,mCAEE,MAAO,mBAAkB,kBAE3B,+BACE,MAAO,mBAAkB,mBAE3B,oBACE,MAAO,mBAAkB,WAE3B,iCAEE,MAAO,mBAAkB,mBAE3B,oBACE,MAAO,mBAAkB,WAE3B,+BACE,MAAO,mBAAkB,mBAE3B,sBACE,MAAO,mBAAkB,aAE3B,iCACE,MAAO,mBAAkB,qBAE3B,sBACE,MAAO,mBAAkB,aAE3B,mCAEE,MAAO,mBAAkB,qBAG3B,iBAEE,MAAO,mBAAkB,WAE3B,cACE,MAAO,mBAAkB,QAG3B,aACE,MAAO,mBAAkB,QAG3B,8BAEE,MAAO,mBAAkB,OAG3B,kBACE,MAAO,mBAAkB,aAG3B,gCAA0E,GAExE,MAAO,mBAAkB,UAG3B,oBACE,MAAO,mBAAkB,YAG3B,iCAEE,MAAO,mBAAkB,aAG3B,mCAEE,MAAO,mBAAkB,kBAG3B,sCAEE,MAAO,mBAAkB,kBAG3B,mEAGE,MAAO,mBAAkB,kBAG3B,0CAEE,MAAO,mBAAkB,0BAG3B,0EAGE,MAAO,mBAAkB,yBAG3B,iDAEE,MAAO,mBAAkB,iCAG3B,0DAIE,MAAO,mBAAkB,aAG3B,uDAGE,MAAO,mBAAkB,gCAG3B,0DAGE,MAAO,mBAAkB,WAG3B,+CAGE,MAAO,mBAAkB,eAG3B,uCAEE,MAAO,mBAAkB,UAG3B,mCAEE,MAAO,mBAAkB,UAG3B,0EAGE,MAAO,mBAAkB,qBAG3B,OACE,MAAO,mBAAkB,OAE3B,QACE,MAAO,mBAAkB,QAE3B,qBACE,MAAO,mBAAkB,WAE3B,aACE,MAAO,mBAAkB,QAE3B,aACE,MAAO,mBAAkB,QAG3B,wEAIE,MAAO,mBAAkB,iBAG3B,qCACE,MAAO,mBAAkB,gBAI3B,6BACE,MAAO,mBAAkB,SAG3B,mEAGE,MAAO,mBAAkB,iBAG3B,QACE,MAAO,mBAAkB,QAG3B,wBAEE,MAAO,mBAAkB,QAG3B,YACE,MAAO,mBAAkB,YAG3B,aACE,MAAO,mBAAkB,aAG3B,yBACE,MAAO,mBAAkB,YAG3B,UACE,MAAO,mBAAkB,aAI7B,uCACE,KAAM,IAAI,OACN,IAAI,sIC1pBV,AAiCM,iBAAkB,QAEtB,YAAc,OAAM,YACT,QACC,EAEZ,KAAO,QAAU,GAEf,MAAS,KAAK,SAAW,QAAW,EAEpC,UAEA,KAAO,OAAM,SACb,OAAM,SAAW,OAAM,OACvB,OAAM,OAAS,KAKb,6BACJ,MAAO,MAAK,IAAI,KAAK,KAAK,IAAI,EAAG,QAG7B,gCACJ,MAAO,KAAM,IAAM,EAAI,IAAM,IAAM,EAG/B,kBACJ,UAAU,EACV,UAAa,EAAG,EAAI,IAAI,OAAQ,IAC9B,OAAO,IAAI,GAEb,MAAO,OAUH,0BACJ,MAAU,KAAK,SACf,MAAQ,GAAI,EAAM,GAAI,GAAK,EAIvB,0BACJ,WAAa,EACb,UAAa,EAAG,EAAI,EAAE,OAAQ,KAC5B,SAAa,OAAO,EAAE,IAAM,OAAO,EAAE,IACrC,QAAU,KAAO,KAEnB,MAAO,QAkBH,0BACJ,GAAI,CAAC,KACH,KAAM,IAAI,OAAM,MAAO,MAAQ,SAAW,IAAM,OAI9C,4DACuD,IAC3D,OACI,YAAY,OAAQ,QACpB,IAAM,mBAAqB,WAAW,cAAc,qBAGpD,0BACJ,OACI,GAAK,KACL,IAAM,iEAsBN,4BAEsC,kBAAqB,IAI/D,GAHA,AAAI,QAAU,MACZ,QAAS,IAEP,MAAM,QAAQ,MAAQ,aAAa,MAAQ,CAAC,eAC9C,UAAa,EAAG,EAAI,IAAI,OAAQ,EAAE,EAChC,QAAQ,IAAI,GAAI,OAAQ,oBAG1B,QAAO,KAAK,KAEd,MAAO,QAcH,8BACJ,GAAI,MAAM,SAAW,EAEnB,MAAO,GAET,SAAW,MAAM,GACjB,UAAa,EAAG,EAAI,MAAM,OAAQ,IAChC,MAAQ,MAAM,GAEhB,MAAO,MAGH,8BACJ,MAAO,OAAM,SAAW,EAGpB,4BACJ,GAAI,KAAO,GACT,MAAO,GAET,GAAI,IAAM,MAAQ,IAAM,KACtB,MAAO,GAGT,GAAI,GAAG,SAAW,GAAG,OACnB,MAAO,GAET,UAAa,EAAG,EAAI,GAAG,OAAQ,IAC7B,GAAI,GAAG,KAAO,GAAG,GACf,MAAO,GAGX,MAAO,GAGH,kBACJ,MAAO,GAAI,IAAM,EAGb,iBAEJ,GAAK,KAAa,MAAQ,KAExB,MAAQ,MAAa,KAAK,GAE5B,GAAI,IAAM,SACR,MAAO,GACF,GAAI,IAAM,UACf,MAAO,GACF,CACL,QAAY,KAAK,IAAI,EAAI,GACzB,MAAQ,KAAM,GAAM,KAAM,IAIxB,mCACJ,UAAc,KAAK,KAAK,KAAK,KAAK,OAClC,MAAO,CAAC,MAAO,KAAK,KAAK,KAAO,QAe5B,kCACJ,oBAAwB,GAAI,aAAY,GACxC,UAAa,EAAG,EAAI,EAAG,EAAE,EACvB,gBAAgB,GAAK,EAEvB,eAAQ,iBACD,gBAGH,0BACJ,MAAI,OAAQ,EAAE,OACL,EAEF,EAAI,IAAI,OAAO,KAAO,EAAE,QAG3B,qCACgC,SAAqB,cAEzD,MAAO,IAAI,SAAc,mBACvB,aAAe,QAED,KACZ,GAAI,WACF,UACA,OAGF,WAEA,gBAAoB,QAAQ,UAE5B,GAAI,YAAc,MAAQ,UAAY,YACpC,SACA,OAEF,WAAW,MAAO,cAGpB,UAaE,4CAEJ,cAAgB,cACE,GAElB,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,EAClC,GAAI,MAAM,IAAM,EACd,WAAa,MAAM,WACV,MAAM,KAAO,IACtB,GAAI,cAAgB,GAClB,KAAM,OACF,yDACmB,uBAAuB,KAEhD,YAAc,UACL,MAAM,GAAK,EACpB,KAAM,OAAM,gCAAgC,MAAM,aAAa,KAInE,GAAI,cAAgB,IAClB,GAAI,KAAO,GAAK,OAAS,UACvB,KAAM,OAAM,QAAQ,yCAAyC,SAE/D,MAAO,OAGT,GAAI,YAAc,EAChB,KAAM,OACF,qCAAqC,oCAG3C,GAAI,KAAO,YAAc,EACvB,KAAM,OACF,wDACO,UAAU,aAGvB,aAAiB,MAAM,QACvB,gBAAS,aAAe,KAAO,UACxB,SAGH,oCAEJ,SAAa,MAAM,OAGnB,YAAO,MAAQ,KAAO,MAAM,IAAI,OAAU,GAAK,GAAG,OAAO,MAGzD,OACI,KAAK,MAAM,IAAM,IAAM,CAAC,MAAQ,GAAK,MACrC,IACI,+CAA+C,SAAS,sBAC5C,QAGpB,OACI,KAAK,MAAM,IAAM,MAAM,KACvB,IAAM,0DACU,QAGb,KAAK,IAAI,GAAK,EAAI,EAAI,KAAO,EAAI,GAIpC,kCAEJ,aAA2B,YACA,gBACN,MAAQ,MAAQ,MAAM,QAAQ,OAAS,KAAK,SAAW,OAC9D,MAAQ,MAAQ,aAC1B,KACA,eAAe,KAAM,OAAO,SACxB,EACR,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,GAClC,GAAI,MAAQ,MACV,GAAI,KAAK,KAAO,GAAK,MAAM,KAAO,EAChC,KAAM,IAAI,OACN,sBAAsB,oBAAoB,MAAM,gBAEtD,AAAK,MAAK,IAAM,MAAQ,KAAK,GAAK,IAAM,MAAM,KAAO,GACnD,UAAS,KAAK,MAAM,IACpB,SAAS,KAAK,IAEhB,AAAI,KAAK,IAAM,GACb,IAGJ,AAAI,MAAM,KAAO,GACf,UAAS,KAAK,MAAM,IACpB,SAAS,KAAK,IAGlB,MAAO,CAAC,SAAU,UAGd,4CAEJ,WAAa,KACb,GAAI,OAAS,MAAQ,QAAU,UAC7B,OAAS,GAAI,cAAa,cACjB,QAAU,QACnB,OAAS,GAAI,YAAW,cACf,QAAU,OACnB,OAAS,GAAI,YAAW,UAExB,MAAM,IAAI,OAAM,qBAAqB,SAEvC,MAAO,QAGH,uCAEJ,WAAa,KACb,GAAI,OAAS,MAAQ,QAAU,UAC7B,OAAS,GAAI,cAAa,cACjB,QAAU,QACnB,OAAS,GAAI,YAAW,cACf,QAAU,OACnB,OAAS,GAAI,YAAW,cACf,QAAU,SACnB,OAAS,GAAI,OAAgB,UAE7B,MAAM,IAAI,OAAM,qBAAqB,SAEvC,MAAO,QAGH,8CAEJ,UAAa,EAAG,EAAI,KAAK,OAAQ,KAC/B,QAAY,KAAK,GACjB,GAAI,MAAM,MAAQ,CAAC,SAAS,KAC1B,KAAM,OAAM,oBAAoB,iCAAiC,SAMjE,6BACJ,MAAO,SAAU,QAAU,QAAU,aAAe,QAAU,WAC1D,QAAU,SAAW,QAAU,SAO/B,0CACJ,MAAI,WAAY,aAGZ,WAAY,WAAa,UAAY,aAGrC,UAAY,SAAW,UAAY,WAAa,UAAY,aALvD,GAQL,YAAY,QAAU,UAAY,QAMlC,yBACJ,MAAO,aAAa,eAAgB,YAAa,aAC7C,YAAa,YAGb,gCACJ,GAAI,QAAU,WAAa,QAAU,QACnC,MAAO,GACF,GAAI,QAAU,YACnB,MAAO,GACF,GAAI,QAAU,OACnB,MAAO,GAEP,KAAM,IAAI,OAAM,iBAAiB,SAU/B,mCACJ,GAAI,KAAO,KACT,MAAO,GAET,UAAY,EACZ,WAAI,QAAQ,GAAK,OAAS,EAAE,QACrB,MAIH,yBACJ,MAAO,OAAO,QAAU,UAAY,gBAAiB,QAGjD,0BACJ,MAAO,OAAO,QAAU,UAGpB,yBACJ,MAAO,OAAO,QAAU,SAGpB,4BACJ,MAAI,OAAM,QAAQ,QACT,WAAW,OAAO,IAEvB,iBAAkB,cACb,UACE,iBAAkB,aAAc,iBAAkB,YACpD,QACE,SAAS,QACX,UACE,SAAS,QACX,SACE,UAAU,QACZ,OAEF,UAGH,uBACJ,MAAO,CAAC,CAAE,IAAK,EAAE,aAAe,EAAE,MAAQ,EAAE,OAGxC,oCACJ,UAAa,MAAO,EAAI,KAAM,EAAE,EAC9B,GAAI,KAAO,IAAM,EACf,MAAO,GAGX,MAAO,MAGH,+BACJ,SAAa,MAAM,OACnB,GAAI,KAAO,EACT,MAAO,GAKT,YAAgB,GAAI,OAAM,KAAO,GACjC,QAAQ,KAAO,GAAK,MAAM,KAAO,GACjC,UAAa,KAAO,EAAG,GAAK,EAAG,EAAE,EAC/B,QAAQ,GAAK,QAAQ,EAAI,GAAK,MAAM,EAAI,GAE1C,MAAO,SAGT,2CACE,QAAY,GAAI,OAChB,GAAI,MAAM,SAAW,GACnB,MAAU,MAAM,GAChB,UAAa,EAAG,EAAI,EAAG,IACrB,IAAI,GAAK,EAAE,OAAS,QAGtB,MAAU,MAAM,QACH,MAAM,MAAM,OACb,KAAK,OAAO,SAAY,IAAM,GAC1C,UAAa,EAAG,EAAI,EAAG,IACrB,IAAI,GAAK,kBAAkB,OAAS,EAAI,IAAK,KAAM,GAGvD,MAAO,KAIH,gCACJ,GAAI,MAAM,SAAW,EAEnB,MAAO,GAAE,GAEX,SAAa,MAAM,OAAO,SAAY,IAAM,GAC5C,GAAI,OAAS,EAEX,MAAO,GAET,GAAI,OAAS,EAAE,OACb,KAAM,IAAI,OAAM,IAAI,wCAAwC,EAAE,WAGhE,MAAO,mBAAkB,EAAG,MAAO,GAG/B,wCAEJ,WAAc,oBAAoB,KAAM,OACxC,UAAa,EAAG,EAAI,OAAM,OAAQ,IAChC,OAAM,GAAK,EAEb,MAAO,QAGH,yCAEJ,GAAI,OAAS,MAAQ,QAAU,WAAa,QAAU,YACpD,MAAO,IAAI,cAAa,MACnB,GAAI,QAAU,QACnB,MAAO,IAAI,YAAW,MACjB,GAAI,QAAU,OACnB,MAAO,IAAI,YAAW,MAEtB,KAAM,IAAI,OAAM,qBAAqB,SASnC,gDAEJ,SAAa,MAAM,OAAO,aAAgB,KAAO,KAAM,GACvD,GAAI,OAAS,MAAQ,QAAU,UAC7B,MAAO,eAAc,MAAO,GAAI,cAAa,OACxC,GAAI,QAAU,QACnB,MAAO,eAAc,MAAO,GAAI,YAAW,OACtC,GAAI,QAAU,OACnB,MAAO,eAAc,MAAO,GAAI,YAAW,OAE3C,KAAM,IAAI,OAAM,qBAAqB,SAInC,mDACJ,MAAM,QAAQ,UACZ,OACI,OAAO,UAAU,UAAY,SAAW,EACxC,IACI,0EACU,aAYhB,uCAEJ,GAAI,OAAS,EACX,MAAO,GACF,GAAI,OAAS,EAClB,MAAO,MAAK,GAEd,UAAY,KAAK,KAAK,OAAS,GAC/B,UAAa,EAAG,EAAI,KAAK,OAAS,EAAG,EAAE,EACrC,OAAS,QAAQ,GAAK,KAAK,GAE7B,MAAO,OAWH,wCAEJ,GAAI,OAAS,EACX,MAAO,GACF,GAAI,OAAS,EAClB,MAAO,CAAC,OAEV,SAAuB,GAAI,OAAM,MACjC,UAAa,EAAG,EAAI,KAAK,OAAS,EAAG,EAAE,EACrC,KAAK,GAAK,KAAK,MAAM,MAAQ,QAAQ,IACrC,OAAS,KAAK,GAAK,QAAQ,GAE7B,YAAK,KAAK,OAAS,GAAK,MACjB,KAQH,2BAOJ,MAAO,SAAU,OAAO,MAAQ,MAAO,QAAO,MAAS,WC1rBzD,AAqBA,IAAM,0BAA4B,wBArBlC,MAkDE,qBAAmB,KAAA,OAAA,QATX,KAAA,MAAe,GACf,KAAA,aAAwD,GAExD,KAAA,SAAkB,GAOxB,KAAK,mBAGP,mCACE,AAAI,KAAK,UAAY,MACnB,QAAQ,KACJ,YAAY,KAAK,oEACgB,aAEvC,KAAK,aAAe,aACpB,KAAK,SAAW,SAGlB,4CAOE,GAJA,KAAK,aAAa,UAAY,CAAC,aAAc,SAIzC,KAAK,SAAS,WAAa,MAC7B,cAAkB,KAAK,SAAS,UAChC,QAAQ,KACJ,qCAAqC,aAAa,cACtD,KAAK,IAAI,SAAU,iBAIjB,oBACJ,MAAI,YAAY,MAAK,MACZ,KAAK,MAAM,UAGpB,MAAK,MAAM,UAAY,KAAM,MAAK,aAAa,UACxC,KAAK,MAAM,WAGpB,cACE,GAAI,WAAY,MAAK,MACnB,MAAO,MAAK,MAAM,UAGpB,cAAkB,KAAK,aAAa,UACpC,GAAI,UAAU,WACZ,KAAM,IAAI,OACN,QAAQ,8EAId,YAAK,MAAM,UAAY,UAEhB,KAAK,MAAM,UAGpB,oBACE,MAAO,MAAK,IAAI,UAGlB,kBACE,MAAO,MAAK,IAAI,UAGlB,WACE,MAAO,MAAK,SAGV,YACF,MAAO,MAAK,MAGd,oBACE,GAAI,KAAK,aAAa,WAAa,KACjC,KAAM,IAAI,OACN,mBAAmB,2CAEzB,KAAK,MAAM,UAAY,MACvB,AAAI,KAAK,aAAa,UAAU,SAAW,MACzC,KAAK,aAAa,UAAU,QAAQ,OAIhC,uBACN,GAAI,KAAK,aAAa,WAAa,KACjC,KAAM,IAAI,OACN,yBAAyB,4CAE/B,MAAO,MAAK,aAAa,UAAU,eAGrC,iBACE,KAAK,MAAQ,OAAO,OAAO,GAAI,QAGjC,QACE,KAAK,MAAQ,GACb,KAAK,SAAW,GAChB,KAAK,mBAGC,mBACN,GAAI,MAAO,MAAK,QAAW,aACvB,MAAO,MAAK,OAAO,UAAa,aAChC,MAAO,MAAK,OAAO,SAAS,QAAW,YACzC,OAGF,cAAkB,eAAe,KAAK,OAAO,SAAS,QACtD,GAAI,4BAA6B,YAC/B,cAAkB,UAAU,2BAA2B,MAAM,KAC7D,UAAU,QAAQ,WAChB,eAAqB,SAAS,MAAM,KACpC,KAAK,SAAS,KAAO,WAAW,IAAK,YAMvC,qCACJ,WAAe,GACf,mBAAY,QAAQ,8BAA+B,UACjD,aAAY,OAAQ,EAAE,GAAI,EAAE,IACrB,EAAE,KAAK,OAET,OAGT,wCAEE,OAAO,mBAAmB,OAAS,mBAAmB,OAAS,IAGjE,oCAEE,GADA,MAAQ,MAAM,cACV,QAAU,QAAU,QAAU,QAChC,MAAO,SAAU,OACZ,GAAI,GAAG,CAAE,UAAY,MAC1B,MAAO,CAAC,MAEV,KAAM,IAAI,OACN,oCAAoC,kBAAkB,aAWtD,eACJ,MAAO,KAGF,QAAuB,KACxB,6CACJ,IAAM,cC/MR,AAqBA,IAAI,gBAEE,8BACJ,GAAI,iBAAmB,MAErB,OACA,GAAI,MAAQ,SAAY,YACtB,GAAK,eACI,MAAQ,SAAY,YAC7B,GAAK,eACI,MAAQ,UAAa,YAC9B,GAAK,gBACI,MAAQ,OAAU,YAC3B,GAAK,SAEL,MAAM,IAAI,OAAM,kCAElB,gBAAkB,GAEpB,MAAO,iBAIT,wBACE,OAAW,qBACX,MAAI,IAAG,YAAc,MACnB,IAAG,WAAa,GAAI,MAEf,GAAG,WAUN,8BACJ,cAAkB,eAClB,GAAI,UAAU,IAAI,KAChB,MAAO,WAAU,IAAI,KAChB,CACL,cAAkB,QAClB,iBAAU,IAAI,IAAK,WACZ,UAAU,IAAI,MCzClB,IAAM,IAAM,WAGC,aAGC,YAGF,WAGC,WAGD,UAOA,aAOG,gBAMA,cAMF,aAGC,aAGD,aAGC,cAGA,gBAGE,sBASI,wBAQF,0BAWI,4BAUF,6BAOG,0BASN,uBAMG,mBAOP,YAMA,mBAGO,sBAOJ,qBAGG,oBAGJ,gBAMA,8BAUc,2CAUD,6BAUb,gCASgB,+CASD,4BASlB,WAGC,cAGE,uBAQO,8BASA,6BAOD,qCAOS,4DAYjC,yEAYA,0CAWgB,kBAGM,qCAQa,mDAIC,mCAIjB,cAGJ,cAGI,cAGJ,YAGE,YAGF,iBAGO,mBAML,YAGF,WAGC,qBAOS,sBAGR,iBAGG,0BAGM,0BAON,oBAOA,mBAGD,uBAGK,wBAGJ,gBAGJ,YAGA,gBAGI,iBAGH,cAGA,kBAGI,iBAML,iBAGK,qBAGD,eAML,YAGE,mBAGK,wBAGA,uBAGD,uBAGC,iBAMP,cASI,cASJ,cAOI,kBAGA,sBASI,wBASF,0BAWI,kCAWI,yBASb,WAOD,cAOI,oBAGE,gBAON,kBAGQ,uBAQH,eAGL,eAGK,+BAGW,0CASA,0CAUA,+BAUX,kBAGF,cAQF,aAMC,aAOD,WAGD,YAGE,aAGD,aAOC,aAQD,kBAGM,kBAGN,eAGG,gCAMc,kDAQI,2CAKX,oCAQI,2BAIb,gBAGE,gBAMF,cAGA,kBAGI,mBAMH,cAGF,aAGC,YAMF,WAGC,YAGA,eAGG,mBAGC,gBAGJ,WAGD,qBAOW,wBAOR,iBAOC,4BAMU,2BAGX,aAGH,oBAGU,6BAOD,mBAaT,WAGC,YAGA,YAMA,iBAOK,mBAMH,gBAQA,4BAMY,+BAOT,iBAML,kBAMM,8BASM,gCAQJ,2BAgBD,mCAiBS,uBCv4BpC,AAuBA,IAAM,eACF,UAAU,iBAAkB,IAAM,GAAI,mBAEtC,UAAU,eAAgB,IAAM,GAAI,MAoElC,2CAEJ,QAAY,QAAQ,WAAY,aAChC,MAAO,gBAAe,IAAI,KAOtB,iCACJ,MAAO,cAAa,IAAI,YAGpB,2CACJ,OAAW,eAAe,iBACK,GAE/B,QACE,IAAO,KAAM,OAAS,GAAG,OACzB,GAAI,KACF,MAEF,gBAAsB,iBACF,IAAI,MAAM,KAC9B,AAAI,WAAY,aACd,OAAO,KAAK,QAGhB,MAAO,QAcH,gCACJ,IAAO,WAAY,aAAe,WACtB,QAAQ,WAAY,aAChC,AAAI,eAAe,IAAI,MACrB,QAAQ,KACJ,eAAe,4BACX,sCAEV,eAAe,IAAI,IAAK,QAWpB,kCACJ,IAAO,YAAc,OAErB,AAAI,aAAa,IAAI,aAGnB,CAAI,MAAM,QAAQ,UAChB,QAAQ,KAAK,gCAAgC,gBAGjD,aAAa,IAAI,WAAY,QAUzB,kDAEJ,QAAY,QAAQ,WAAY,aAChC,GAAI,CAAC,eAAe,IAAI,KACtB,KAAM,IAAI,OACN,eAAe,4BACX,kCAEV,eAAe,OAAO,KAIlB,wCACJ,GAAI,CAAC,aAAa,IAAI,YACpB,KAAM,IAAI,OACN,iBAAiB,6CAEvB,aAAa,OAAO,YAShB,qEAEJ,YAAgB,qBAAqB,uBACrC,QAAQ,QAAQ,eACd,oBACI,OAAO,OAAO,GAAI,aAAc,CAAC,YAAa,iBAClD,eAAe,mBAInB,yCACE,MAAO,GAAG,eAAe,aCrN3B,IAAA,koDCAA,AAyBM,2BACF,aACF,MAAI,SAAU,SACL,aAAa,OAGf,aAAa,CAAC,OAAQ,OAG/B,qCACE,MAAQ,aAAa,eAAgB,QAAU,WAC1C,YAAa,aAAc,QAAU,SACrC,YAAa,aAAc,QAAU,OAGtC,+BACJ,GAAI,QAAU,SACZ,KAAM,IAAI,OAAM,6CASlB,GAPA,AAAI,MAAM,QAAQ,IAChB,GAAI,AAAK,QAAQ,IAGnB,AAAI,MAAM,QAAQ,UAChB,AAAK,yBAAyB,EAAe,OAE3C,mBAAmB,EAAG,OACxB,MAAO,GAET,GAAI,OAAS,MAAQ,QAAU,WAAa,QAAU,YACpD,MAAO,IAAI,cAAa,GACnB,GAAI,QAAU,QACnB,MAAO,IAAI,YAAW,GACjB,GAAI,QAAU,QACnB,SAAa,GAAI,YAAY,EAAe,QAC5C,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,EACjC,AAAI,KAAK,MAAO,EAAe,MAAQ,GACrC,MAAK,GAAK,GAGd,MAAO,UAEP,MAAM,IAAI,OAAM,qBAAqB,SAenC,eACJ,MAAO,OAAM,SAAS,MAmBlB,mCAEJ,MAAO,OAAM,SAAS,MAAM,KAAM,cAW9B,iCAA6C,SACjD,gBAAW,UAAY,QAChB,MAAM,SAAS,OAAO,EAAG,UAW5B,qCAAqD,SACzD,gBAAW,UAAY,QAChB,MAAM,SAAS,OAAO,MAAO,UClItC,IAAA,eAiCE,iCAAoB,KAAA,aAAA,aAAoC,KAAA,OAAA,OACtD,AAAI,QAAU,MACZ,MAAK,OAAS,GAAI,SAItB,mCAEE,gCAC4B,KAC1B,QAAU,WAEE,KAAK,aAAa,KAAK,qBAErC,GAAI,MAAM,QAAQ,gCAChB,UAAa,EAAG,EAAI,QAAQ,OAAQ,KAClC,WAAe,QAAQ,GAGvB,OAAO,OAAO,KAAK,aACjB,0BAA0B,WAAY,OAAO,MAAO,cAK1D,kBAAsB,CACpB,WACA,QACA,OACA,OAAQ,MAAM,KAAK,QAAU,OAAO,UACpC,UAAW,MAAM,KACb,QAAU,OAAO,qBAAuB,KACpC,OAAO,sBACP,KAEV,MAAO,eAGT,gCACE,IAAO,WAAY,QAAS,OAAQ,OAAQ,WAAa,cAEzD,QAAQ,QAAQ,SACd,QAAQ,IAAI,CAAC,OAAO,OAAQ,OAAQ,YAAY,KAAK,iBACnD,KAAK,OAAO,iBACR,WAAY,OAAQ,eAAe,GAAI,eAAe,GAAI,OAC1D,eAAe,UAMrB,0DAEJ,GAAI,QAAU,UAEZ,MAAO,GAET,UAAa,EAAG,EAAI,KAAK,OAAQ,KAC/B,QAAY,KAAK,GACjB,GAAI,MAAM,MAAQ,CAAC,SAAS,KAE1B,eAAQ,KAAK,SAAS,yBAAyB,eACxC,GAGX,MAAO,GAlGT,iBAsGE,2DAIE,UAAa,MAAO,SAAW,SAAW,AAAK,SAAS,GAAG,WAAY,GAC7B,OAAO,iBAC9B,AAAK,SAAS,KAAM,SAC1B,OAAO,UACP,OAAO,WACN,AAAK,SAAS,OAAO,MAAM,WAAY,2BACxB,GAE7B,gBAAmB,SACjB,WAAc,OAAO,OACrB,GAAI,QAAS,MAGX,eAAmB,OAAM,OAAS,OAAO,gBACvB,WAAW,OAC7B,wBACI,GAAG,UAAS,cAAc,UAAY,EAAI,WAAa,OAI/D,QAAQ,IACJ,KAAK,gBAAiB,WAAW,SAAS,WAAY,UAClD,4BAA6B,YACjC,mBAAoB,YAAa,aAAc,gBAC/C,eAAgB,sBClIxB,AA2CM,8BACF,YAGF,iBAAoD,cACJ,GAChD,UAAa,EAAG,EAAI,GAAG,OAAQ,IAC7B,aAAa,GAAG,GAAG,IAAM,GAG3B,UAAa,EAAG,EAAI,MAAK,OAAQ,KAC/B,SAAa,MAAK,cACC,KAAK,OACxB,oBAAwB,aACtB,WAAc,WAAW,yBAEL,GACpB,UAAa,EAAG,EAAI,GAAG,OAAQ,IAC7B,GAAI,aAAa,OAAM,KACrB,KAAK,QAAQ,QAAQ,QAAU,aAAa,OAAO,IAAM,IACzD,cAAgB,GAChB,WAAW,KAAK,IAAM,GACtB,MAIJ,GAAI,cACF,OAMN,mBAAsD,GACtD,eAAe,EAAE,IAAM,GACvB,aAA8C,GAE9C,UAAa,MAAK,OAAS,EAAG,GAAK,EAAG,KACpC,SAAa,MAAK,cACC,KAAK,OAGxB,UAAa,EAAG,EAAI,KAAK,QAAQ,OAAQ,IACvC,GAAI,eAAe,KAAK,QAAQ,GAAG,KACjC,oBAAwB,YACtB,eAAe,WAAW,WAAW,IAAM,GAC3C,SAAS,KAAK,IAAM,GAEtB,OAMN,iBAAiC,GACjC,UAAa,EAAG,EAAI,MAAK,OAAQ,KAC/B,SAAa,MAAK,GAElB,GAAI,WAAW,KAAK,KAAO,SAAS,KAAK,KAEvC,iBAAoD,GACpD,oBAAwB,MAAK,QAC3B,cAAkB,KAAK,OAAO,WAC9B,AAAI,aAAa,UAAU,KACzB,cAAa,WAAa,WAK9B,eAAmB,OAAO,OAAO,GAAI,MACrC,WAAW,OAAS,aACpB,WAAW,QAAU,KAAK,QAE1B,aAAa,KAAK,aAItB,MAAO,cAUH,uFAKJ,UAAa,aAAa,OAAS,EAAG,GAAK,EAAG,KAC5C,SAAa,aAAa,OAEJ,GAYtB,GAXA,KAAK,QAAQ,QAAQ,IACnB,eAAmB,6BAA6B,EAAE,IAClD,AAAI,YAAc,KAChB,IAAI,KAAK,YAIT,IAAI,KAAK,QAIT,KAAK,UAAY,KACnB,KAAM,IAAI,OACN,4DACO,KAAK,eAIlB,mBAAuB,KAAK,SAAS,KAErC,oBAAwB,MAAK,QAC3B,GAAI,CAAE,aAAa,iBACjB,KAAM,IAAI,OACN,iCAAiC,yCACH,OAAO,KAAK,oBAIhD,OAAW,MAAK,IAAM,eAAe,cACrC,GAAI,GAAG,QAAU,UACf,KAAM,IAAI,OACN,4BACI,KAAK,qCACN,iDAAiD,GAAG,UAE7D,MAAU,KAAK,OAAO,WACtB,GAAI,CAAC,AAAK,YAAY,GAAG,MAAO,EAAE,OAChC,KAAM,IAAI,OACN,4BACI,KAAK,sCACL,yBAAyB,GAAG,wDACL,EAAE,UAGnC,GAAI,6BAA6B,EAAE,KAAO,KACxC,6BAA6B,EAAE,IAAM,QAErC,gBAAoB,6BAA6B,EAAE,IACnD,6BAA6B,EAAE,IAAM,MAAI,YAAa,IACtD,YAAY,aC5LpB,AAqBA,IAAM,sBAAwB,8BAEK,wBAEL,EAExB,kDAGJ,YAAgB,eAAe,iBACb,wBAAwB,KAAM,MAAO,MAAO,cACjD,MAAM,iBACD,kBAAkB,KAAM,MAAO,MAAO,QAAS,iBACnD,CAAC,UACf,MAAI,UACF,OAAM,KAAK,YAAY,SACvB,MAAM,KAAK,WAAW,QACtB,MAAM,KAAK,aAAa,UACxB,MAAM,KAAK,cAEb,MAAM,KAAK,UAAU,IAAI,GAAK,OAAS,GAAG,KAAK;IACxC,MAAM,KAAK;GAGpB,2DAGE,MAAU,cAAc,eACR,QAAQ,QAAQ,OAAS,aACvB,GAAI,OAAM,SAAS,KAAK,QAC7B,MAAM,sBAEf,QAAU,YAAc,oBAAoB,MAAQ,KAExD,GAAI,KAAO,EACT,YAAe,EAAG,IAAM,EAAI,QAAS,OACnC,WAAe,IAAM,QACrB,UAAa,EAAG,EAAI,QAAS,IAC3B,UAAU,GAAK,KAAK,IAChB,UAAU,GACV,YAAY,eAAe,OAAS,GAAI,EAAG,OAAO,QAI5D,MAAO,WAGT,sCAEE,WACA,MAAI,OAAM,QAAQ,KAChB,OAAS,GAAG,WAAW,IAAI,GAAG,QAAQ,6BAC/B,WAAW,IAAI,GAAG,QAAQ,2BAC5B,AAAI,SAAS,KAClB,OAAS,IAAI,OACR,AAAI,QAAU,OACnB,OAAS,gBAAgB,KAEzB,OAAS,WAAW,IAAI,QAAQ,wBAAwB,WAGnD,SAAS,OAAQ,OAG1B,4BACE,MAAO,KAAM,EAAI,QAAU,OAG7B,qEAEqD,IACnD,sBAA0B,QAAU,YAAc,EAAI,OAEzC,MAAM,QACN,MAAM,OACnB,GAAI,OAAS,GACX,GAAI,QAAU,aACZ,iBAAqB,oBAAoB,MACzC,MAAO,CAAC,YAAY,aAAa,GAAI,EAAG,QAE1C,MAAI,SAAU,OACL,CAAC,gBAAgB,KAAK,KAExB,CAAC,KAAK,GAAG,YAGlB,GAAI,OAAS,GACX,GAAI,KAAO,uBACT,kBAAsB,2BAA6B,4BAEnC,MAAM,KAClB,KAAK,MAAM,EAAG,yBACH,MAAM,KAAqC,KAAK,MAC1D,MAAO,4BAA8B,kBACtC,KAAO,oBACX,MAAI,SAAU,aACZ,WAAY,oBAAoB,WAChC,SAAW,oBAAoB,WAE1B,CACL,IACA,UAAU,IAAI,OAAU,YAAY,EAAG,UAAU,GAAI,QAChD,KAAK,MACV,UACA,SACK,IACG,OAAU,YACN,EAAG,UAAU,KAAO,2BAA6B,GAAI,QAC5D,KAAK,MACV,KAGJ,gBACI,QAAU,YAAc,oBAAoB,MACpB,MAAM,KAAoB,MAEtD,MAAO,CACL,IACA,YAAY,IAAI,OAAU,YAAY,EAAG,UAAU,GAAI,QAClD,KAAK,MACV,KAKJ,aAAiB,MAAM,MAAM,cACV,QAAQ,MAAM,UAClB,QAAQ,GAAK,wBACJ,GACxB,GAAI,KAAO,uBACT,UAAa,EAAG,EAAI,2BAA4B,KAC9C,UAAc,EAAI,WACN,MAAQ,OACpB,MAAM,KAAK,GAAG,kBACV,KAAK,MAAM,MAAO,KAAM,SAAU,MAAO,WAAY,UACrD,KAEN,MAAM,KAAK,OACX,UAAa,KAAO,2BAA4B,EAAI,KAAM,KACxD,UAAc,EAAI,WACN,MAAQ,OACpB,MAAM,KAAK,GAAG,kBACV,KAAK,MAAM,MAAO,KAAM,SAAU,MAAO,WAAY,UACrD,IAAM,KAAO,SAGnB,WAAa,EAAG,EAAI,KAAM,KACxB,UAAc,EAAI,WACN,MAAQ,OACpB,MAAM,KAAK,GAAG,kBACV,KAAK,MAAM,MAAO,KAAM,SAAU,MAAO,WAAY,UACrD,IAAM,KAAO,IAGrB,QAAY,OAAS,EAAI,IAAM,GAC/B,MAAM,GAAK,IAAM,MAAM,GAAK,IAC5B,UAAa,EAAG,EAAI,MAAM,OAAS,EAAG,IACpC,MAAM,GAAK,IAAM,MAAM,GAAK,IAE9B,eAAiB;EACjB,UAAa,EAAG,EAAI,KAAM,IACxB,YAAc;EAEhB,aAAM,MAAM,OAAS,GACjB,IAAM,MAAM,MAAM,OAAS,GAAK,IAAO,QAAS,GAAK,YAClD,MAGT,mCAEE,kBAA+C,GAC/C,UAAa,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,cAAc,KAAK,CAAC,KAAK,GAAI,KAAK,EAAI,KAExC,MAAO,eCnMT,IAAA,mBA6CE,gCAIE,GAJqC,KAAA,MAAA,MACrC,KAAK,MAAQ,MAAM,QACnB,KAAK,KAAO,AAAK,cAAc,OAE3B,QAAU,MACZ,MAAU,OAAO,OACjB,AAAK,OACD,IAAM,KAAK,KACX,IAAM,qBAAqB,qDACG,KAAK,UAEzC,GAAI,QAAU,YACZ,KAAM,IAAI,OACN,8JAIN,KAAK,OAAS,QAAU,AAAK,kBAAkB,MAAO,KAAK,MAC3D,KAAK,QAAU,eAAe,OAWhC,mBACE,AAAI,KAAK,SAAW,GAClB,MAAO,CAAC,IAEV,AAAK,OACD,KAAK,SAAW,KAAK,KACrB,IAAM,uCAAuC,KAAK,gCAC3B,KAAK,SAEhC,UAAc,KAAK,WAAW,MAC9B,KAAK,OAAO,OAAS,MAUvB,aACE,AAAI,KAAK,SAAW,GAClB,MAAO,CAAC,IAEV,MAAQ,EACR,cAAkB,OAChB,GAAI,IAAM,GAAK,KAAO,KAAK,MAAM,IAC/B,QAAY,qCAAqC,wBAC3B,KAAK,QAC3B,KAAM,IAAI,OAAM,KAElB,IAEF,UAAY,KAAK,KAAK,OAAS,GAC/B,WAAa,EAAG,GAAI,KAAK,OAAS,EAAG,EAAE,GACrC,OAAS,KAAK,QAAQ,IAAK,KAAK,IAElC,MAAO,MAAK,OAAO,OAGrB,iBACE,GAAI,KAAK,OAAS,EAChB,MAAO,GACF,GAAI,KAAK,OAAS,EACvB,MAAO,MAAK,GAEd,UAAY,KAAK,KAAK,OAAS,GAC/B,UAAa,EAAG,EAAI,KAAK,OAAS,EAAG,EAAE,EACrC,OAAS,KAAK,QAAQ,GAAK,KAAK,GAElC,MAAO,OAGT,kBACE,GAAI,KAAK,OAAS,EAChB,MAAO,GACF,GAAI,KAAK,OAAS,EACvB,MAAO,CAAC,OAEV,SAAuB,GAAI,OAAM,KAAK,MAAM,QAC5C,UAAa,EAAG,EAAI,KAAK,OAAS,EAAG,EAAE,EACrC,KAAK,GAAK,KAAK,MAAM,MAAQ,KAAK,QAAQ,IAC1C,OAAS,KAAK,GAAK,KAAK,QAAQ,GAElC,YAAK,KAAK,OAAS,GAAK,MACjB,QAGL,QACF,MAAO,MAAK,MAAM,OAQpB,WACE,MAAO,aAAY,WAAW,KAAK,OAAQ,KAAK,MAAO,KAAK,mBAiC3B,eAEV,0BAEuB,KAW5C,8BACJ,UAAY,GAQR,+BACJ,UAAY,QAOR,qCACJ,qBAAuB,GA1NzB,iBA8QE,mCAXA,KAAA,KAAO,GAoIG,KAAA,mBAAqB,GAxH7B,KAAK,MAAQ,MAAM,QACnB,KAAK,MAAQ,OAAS,UACtB,KAAK,KAAO,AAAK,cAAc,OAC/B,KAAK,QAAU,eAAe,OAC9B,KAAK,OAAS,OACd,KAAK,GAAK,GACV,KAAK,SAAY,KAAK,KAAO,EAAI,KAAK,KAAK,WAAa,YAGtD,QACF,MAAO,MAAK,MAAM,YAQd,UACJ,SAAa,KAAM,MAAK,OACxB,MAAO,WAAU,OAAO,KAAK,MAAO,KAAK,MAAY,MAOvD,aACE,MAAO,WAAU,OAAO,KAAK,MAAO,KAAK,MAAY,KAAK,iBAStD,SACJ,SAAa,KAAM,MAAK,OACxB,MAAO,eAAc,KAAK,MAAO,MASnC,YACE,MAAO,eAAc,KAAK,MAAO,KAAK,iBASlC,QACJ,KAAK,kBACL,SAAa,YAAY,KAAK,KAAK,QACnC,GAAI,KAAK,QAAU,UACjB,UAAc,KAAM,MACpB,IACE,MAAO,OAAM,IAAI,GAAK,AAAK,aAAa,cAExC,KAAM,IAAI,OACN,kGAIR,MAAO,MAST,WACE,KAAK,kBACL,SAAa,YAAY,SAAS,KAAK,QACvC,GAAI,KAAK,QAAU,SACjB,IACE,MAAQ,MAAsB,IAAI,GAAK,AAAK,aAAa,cAGzD,KAAM,IAAI,OACN,iGAIR,MAAO,WAIH,SACJ,KAAK,kBACL,SAAa,KAAM,aAAY,KAAK,KAAK,QACzC,MAAI,MAAK,QAAU,SACV,KAEA,GAAI,YAAY,KAAoB,QAS/C,UACE,GAAI,KAAK,WACP,OAEF,YAAY,cAAc,MAC1B,KAAK,mBAAqB,MAIxB,cACF,MAAO,MAAK,mBAGd,kBACE,GAAI,KAAK,WACP,KAAM,IAAI,OAAM,uBAYpB,cAAgB,IACd,MAAO,WAAU,MAAM,KAAM,SAO/B,QACE,YAAK,kBACE,UAAU,MAAM,MAQzB,iBAAmB,IACjB,SAAa,KAAK,WAClB,MAAO,gBAAe,KAAM,KAAK,MAAO,KAAK,MAAO,SAGtD,YACE,YAAK,kBACE,UAAU,KAAK,KAAW,OAEnC,mBAAqB,eACnB,YAAK,kBACE,YAAY,aAAa,KAAM,UAAW,KAAM,SAI3D,OAAO,eAAe,OAAQ,OAAO,YAAa,CAChD,MAAO,UAME,CAAC,CAAC,UAAY,SAAS,MAAQ,MAAQ,SAAS,UAAY,MAC/D,SAAS,iBAAmB,OAncpC,0BAueqD,QAGnD,kDAGE,MACI,aAAa,MAAO,aAAa,MAAO,aAAa,OAAQ,UAH/B,KAAA,UAAA,UAIlC,KAAK,KAAO,KAWd,iBACE,GAAI,SAAS,QAAU,KAAK,MAC1B,KAAM,IAAI,OACN,2BAA2B,SAAS,8BACjB,KAAK,qBAE9B,GAAI,CAAC,AAAK,YAAY,SAAS,MAAO,KAAK,OACzC,KAAM,IAAI,OACN,2BAA2B,SAAS,8BACjB,KAAK,qBAE9B,YAAY,cAAc,MAC1B,KAAK,OAAS,SAAS,OACvB,YAAY,OAAO,KAAM,MAG3B,UACE,YAAY,gBAAgB,MAC5B,KAAK,mBAAqB,KAI9B,OAAO,eAAe,SAAU,OAAO,YAAa,CAClD,MAAO,UACE,mBAAoB,SAAU,SAAS,QAAU,MACpD,SAAS,iBAAkB,YCnhBnC,IAAA,iNCAA,AAgEA,IAAY,KAAZ,AAAA,iBACE,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,KACA,MAAA,GAAA,OAPU,MAAA,MAAI,KAqBhB,sBAAA,AAAA,8BACE,mBAAA,QAAA,UACA,mBAAA,MAAA,QACA,mBAAA,KAAA,QACA,mBAAA,UAAA,cAJG,mBAAA,mBAAiB,KAOtB,qBAAA,AAAA,6BACE,kBAAA,QAAA,UACA,kBAAA,MAAA,QACA,kBAAA,KAAA,OACA,kBAAA,UAAA,cAJG,kBAAA,kBAAgB,KAOrB,wBAAA,AAAA,gCACE,qBAAA,QAAA,UACA,qBAAA,MAAA,UACA,qBAAA,KAAA,UACA,qBAAA,UAAA,cAJG,qBAAA,qBAAmB,KAOxB,0BAAA,AAAA,kCACE,uBAAA,QAAA,YACA,uBAAA,MAAA,YACA,uBAAA,KAAA,YACA,uBAAA,UAAA,cAJG,uBAAA,uBAAqB,KAO1B,kBAAsB,CACpB,QAAW,oBACX,MAAS,kBACT,KAAQ,iBACR,UAAa,uBAGT,iCACJ,GAAI,QAAU,UAAY,QAAU,UAClC,GAAI,QAAU,UAAY,QAAU,SAClC,MAAO,SAET,KAAM,IAAI,OAAM,kBAAkB,cAAc,SAElD,MAAO,eAAc,OAAO,OAIxB,0BACJ,MAAO,YAAW,KAAM,SCpI1B,AAsBM,wBAA2C,KAC/C,GAAI,EAAE,QAAU,EAAE,MAChB,MAAO,CAAC,EAAG,GAEb,UAAc,WAAW,EAAE,MAAO,EAAE,OACpC,MAAO,CAAC,EAAE,KAAK,OAAQ,EAAE,KAAK,QAG1B,+BACJ,OACI,EAAE,QAAU,EAAE,MACd,IAAM,2BAA2B,EAAE,qBACpB,EAAE,2BAGjB,8CACJ,MAAO,YAAW,KAAK,GAAK,EAAE,KAAO,UAAO,IAexC,uCACJ,SAAuB,QACV,GAAI,KACjB,2BAAoB,OAAQ,KAAM,MAC3B,KAGT,mDAEE,GAAI,YAAa,KACf,OAEF,GAAI,qBAAqB,SACvB,KAAK,KAAK,YACV,OAEF,GAAI,CAAC,WAAW,YACd,OAGF,aAAiB,WACjB,YAAgB,WACd,QAAY,SAAS,GACrB,AAAK,KAAK,IAAI,MACZ,MAAK,IAAI,KACT,oBAAoB,IAAK,KAAM,QAMrC,yBACE,MAAO,OAAM,QAAQ,MAAQ,MAAO,MAAQ,SCrF9C,IAAA,kBAoFA,cAEE,KAAA,oBAAwC,GAExC,KAAA,eAAiB,EACjB,KAAA,SAAW,EACX,KAAA,WAAa,EACb,KAAA,iBAAmB,EACnB,KAAA,eAAiB,EAMjB,KAAA,cAAgB,EAGhB,KAAA,YAAc,EAId,KAAA,WAA2B,GAK3B,KAAA,kBAA8B,GAC9B,KAAA,YAAc,EAEd,KAAA,WAAa,GAAI,SAQjB,KAAA,UAAY,GACZ,KAAA,cAA6B,CAC3B,SAAU,EACV,WAAY,EACZ,UAAW,EACX,QAAS,GACT,OAAQ,QACJ,eACF,MAAO,OAAM,KAAK,GAAI,KAAI,KAAK,QAAQ,IAAI,GAAK,EAAE,UAItD,UACE,uBAA2B,MAAK,oBAC9B,KAAK,oBAAoB,cAAc,mBAvI7C,MA4JE,kBAAmB,KAAA,IAAA,KAbnB,KAAA,SAA0C,GAC1C,KAAA,gBAKI,GAKI,KAAA,qBAAuB,EAG7B,KAAK,MAAQ,GAAI,kBAGb,SACJ,GAAI,KAAK,oBAAsB,KAC7B,MAAO,MAAK,mBAAmB,KAAK,QAEtC,GAAI,KAAK,iBAAmB,KAC1B,OAEF,mBAAuB,KAAK,oBAE5B,UAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,gBAAoB,eAAe,WACnB,KAAM,MAAK,kBAAkB,aAAa,QAC1D,GAAI,SACF,KAAM,MAAK,WAAW,aACtB,QAIJ,KAAM,IAAI,OACN,6EAIF,WACF,GAAI,KAAK,oBAAsB,KAC7B,KAAM,IAAI,OACN,YAAY,KAAK,kIAIvB,GAAI,KAAK,iBAAmB,MAC1B,IAAO,KAAM,WAAa,KAAK,kCAC/B,GAAI,UACF,KAAM,IAAI,OACN,iCAAiC,2HAIvC,KAAK,WAAW,MAElB,MAAO,MAAK,gBAGd,eACE,MAAO,QAAO,KAAK,KAAK,iBAG1B,yBACE,GAAI,CAAE,eAAe,MAAK,UAGxB,GAAI,cAAe,MAAK,iBACtB,IAAO,WAAa,KAAK,kBAAkB,aAC3C,GAAI,UAEF,MAAO,UAGT,OAAO,MAGX,MAAO,MAAK,SAAS,aAGvB,gCAEE,MAAM,eAAe,MAAK,gBAGnB,KAAK,gBAAgB,aAAa,QAFhC,KAKX,6CAGe,GACb,MAAI,eAAe,MAAK,gBACtB,SAAQ,KACJ,GAAG,iFAEA,IAET,MAAK,gBAAgB,aAAe,CAAC,QAAS,UACvC,SAGH,yBACJ,GAAI,KAAK,gBAAgB,cAAgB,KACvC,KAAM,IAAI,OAAM,iBAAiB,sCAGnC,GADA,KAAK,YAAc,YACf,KAAK,SAAS,cAAgB,MAChC,KAAK,gBAAkB,KACvB,IAAO,QAAS,WAAa,KAAK,kBAAkB,oBACrC,UAAY,KAAM,SAAU,QAC3C,GAAI,CAAC,OACH,MAAO,GAGX,YAAK,gBAAkB,KAAK,SAAS,aACrC,KAAK,yBAEL,KAAK,SAAW,GAAI,UAAS,KAAK,iBAE3B,GAGD,yBACN,YAAgB,qBAAqB,KAAK,aAC1C,QAAQ,QAAQ,SACd,AAAI,OAAO,WAAa,MACtB,OAAO,UAAU,KAAK,mBAKpB,sCACN,YAAgB,qBAAqB,aACrC,QAAQ,QAAQ,SACd,AAAI,OAAO,aAAe,MACxB,OAAO,YAAY,KAAK,SAAS,gBAW/B,+BAEN,yBAA6B,KAAK,gBAAgB,aAClD,GAAI,sBAAwB,KAC1B,KAAM,IAAI,OACN,6BAA6B,uCAGnC,IACE,aAAgB,qBAAqB,UAMrC,GAAI,UAAW,CAAE,oBAAmB,iBAChC,MAAO,UAAQ,MAAS,YAC1B,cAAkB,EAAE,KAAK,6BAErB,SACK,KAAK,iBAEA,UAAY,KAAK,qBACZ,GAET,MAAK,SAAS,aAAe,gBAC7B,KAAK,mBAAqB,KACnB,KAER,MAAM,KAED,WAAY,KAAK,sBAGrB,MAAK,mBAAqB,KAC1B,QAAQ,KACJ,6BAA6B,sBACjC,QAAQ,KAAK,IAAI,OAAS,IAAI,UACvB,KAEjB,YAAK,mBAAqB,QACnB,CAAC,QAAS,UAAW,QAE5B,aAAK,SAAS,aAAe,SACtB,CAAC,QAAS,GAAM,UAAW,eAGpC,eAAQ,KAAK,6BAA6B,sBAC1C,QAAQ,KAAK,IAAI,OAAS,IAAI,SACvB,CAAC,QAAS,GAAO,UAAW,KAIvC,2BACE,GAAI,CAAE,eAAe,MAAK,iBACxB,KAAM,IAAI,OAAM,GAAG,6CAErB,AAAI,KAAK,cAAgB,aAAe,KAAK,oBAAsB,MAGjE,KAAK,uBAGP,AAAI,cAAe,MAAK,UACtB,MAAK,yBAAyB,aAC9B,KAAK,SAAS,aAAa,UAC3B,MAAO,MAAK,SAAS,cAGvB,MAAO,MAAK,gBAAgB,aAG5B,AAAI,KAAK,cAAgB,aACvB,MAAK,mBAAqB,KAC1B,KAAK,YAAc,KACnB,KAAK,gBAAkB,MAInB,oBACN,GAAI,OAAO,KAAK,KAAK,iBAAiB,SAAW,EAC/C,KAAM,IAAI,OAAM,iCAElB,MAAO,QAAO,KAAK,KAAK,iBAAiB,KAAK,OAErC,KAAK,gBAAgB,GAAG,SAC3B,KAAK,gBAAgB,GAAG,UAIxB,kCAEN,mBAAuB,KAAK,oBAE5B,UAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,gBAAoB,eAAe,IAC5B,QAAS,WAAa,KAAK,kBAAkB,aACpD,GAAI,WAAa,QACf,MAAO,CAAC,KAAM,YAAa,WAG/B,KAAM,IAAI,OACN,0EAIN,0BACE,SAAa,KAAK,MAAM,WAAW,IAAI,mBACpB,KAAK,eACT,KAAK,SAAS,QAG7B,WAAW,YAAY,QACvB,KAAK,QAAU,SACf,SAAQ,KAAK,OAAQ,OAAQ,KAAK,MAAO,KAAK,OAC9C,AAAI,KAAK,0BAGP,KAAK,MAAM,kBAAkB,KAAK,MAAM,kBAAkB,OAAS,KAIvE,kBAEE,SAAmB,KACnB,GAAI,IAAM,MAER,GAAI,MAAO,WAAa,WACtB,KAAM,IAAI,OAAM,uCAElB,GAAK,cAGL,GAAI,MAAO,WAAa,UAAY,CAAE,oBAAoB,SACxD,KAAM,IAAI,OACN,kFAGN,GAAI,MAAO,KAAO,WAChB,KAAM,IAAI,OACN,kFAGN,KAAO,SAIT,WACA,MAAO,MAAK,UACR,IAAM,KAAK,WAAW,MAAO,IAAM,KAAK,SAAS,QAAS,IACxD,QAAS,KACT,AAAI,iBAAkB,UACpB,QAAQ,MAAM,2CAET,SAIP,uBACN,QACA,IACE,QAAY,IACZ,aACO,cAEP,YACM,IAKF,eACN,MAAO,QAAO,eAIR,iBACN,MAAO,QAAO,iBAYR,SACN,MAAU,KAAK,qBAAqB,EAAE,OAAQ,EAAE,MAAO,EAAE,cAC1C,CAAC,SACH,IAAiB,EAC5B,EAAG,KACD,UAAc,qBACK,CAAC,EAAG,UACT,CAAC,OAEf,MAAO,QAAO,cACV,UAAW,SAAQ,KAAK,GAAI,OAC5B,WAAoC,KAAiB,KACrD,gBAGgB,GACxB,YAAK,YAAY,KAAK,MAAM,YAAY,KAAM,OAAQ,CAAC,GAAI,MAAM,MAAO,IACjE,EAgBT,8DAGE,gBAA0B,mBACE,KAI5B,MAAO,MAAK,cACR,YAAa,OAAQ,cAAe,WAAY,MAAO,aACvD,eAGE,yBACN,MAAO,MAAK,IAAI,QAAQ,WAGlB,4DAGN,oBAAwB,KAAK,QAAQ,8BAGd,EACvB,SAAS,QAAQ,OAGf,kBAAqB,KAAK,QAAU,YAAc,EAAI,IAQxD,aACI,KAAK,MAAM,kBAAkB,KAAK,MAAM,kBAAkB,OAAS,iBAEnE,gBAAkB,iBAAmB,iBAAmB,SAC5D,GAAI,cAAgB,EAClB,KAAM,IAAI,OACN,YAAY,KAAK,6CACb,0CAA0C,eAQtD,4FAKE,kBACsB,YACL,KAAK,WACtB,AAAI,YAAc,MAChB,YACI,KAAK,MAAM,aAAe,KAAO,KAAK,MAAM,YAAY,KAAO,IAGrE,sBAA0B,KAAK,MAAM,4BACV,KAAK,MAAM,WAEtC,AAAI,KAAK,0BACP,KAAK,MAAM,kBAAkB,KAAK,GAGpC,uBACe,UAAU,WAAY,KAAK,iBAE1C,GAAI,QAAU,KACZ,YAAa,KACX,qBAAyB,KAAK,QAAQ,aACtC,IAAM,OAAO,WAAW,CAAC,OAAQ,MAAO,QAAS,KAAK,UACtD,aAAiB,MAAM,QAAQ,KAAO,IAAM,CAAC,KAC7C,AAAI,KAAK,0BACP,KAAK,sBAAsB,WAAY,iBAAkB,UAG3D,eAAmB,SAAS,IAAI,UAI9B,GAAK,QAAmB,MAAQ,KAC9B,MAAO,SAET,IAAO,OAAQ,MAAO,OAAS,QAC/B,MAAO,MAAK,qBAAqB,OAAQ,MAAO,SAOlD,GAAI,UACF,kBACI,KAAK,sBAAsB,WAAY,OAAQ,YACnD,GAAI,eAAiB,MAKnB,AAAI,eAAiB,MACnB,eAAgB,IAElB,eAAmB,WAAW,OAAO,OAAU,cAAc,IAC7D,cAAiB,eAAgB,IAAI,QAAQ,OAAO,YAEtD,MAAQ,KAAK,2BAA2B,eAE1C,MAAO,kBAGT,GAAI,aAAe,KACjB,KAAM,IAAI,OAAM,iBACZ,8DAEN,aAA+B,UAI7B,GAAI,CAAC,SACH,OAEF,MAAQ,QAAQ,IAAI,WAAU,KAAK,KAAK,KAAK,MAAM,cAGrD,YAAa,KACX,qBAAyB,KAAK,QAAQ,aACtC,IAAM,KAAK,KAAK,IAAM,YAAY,KAAK,QAAS,WAChD,SAAc,MAAM,QAAQ,KAAO,IAAM,CAAC,KAC1C,MAAI,MAAK,0BACP,KAAK,sBAAsB,WAAY,iBAAkB,MAEpD,MAKX,kBACA,YAAK,UACD,IAAM,KAAK,MAAM,cAAe,IAAM,KAAK,MAAM,cAAe,KAC9D,AAAI,CAAC,KAAK,IAAI,QAAQ,UAAY,CAAC,KAAK,MAAM,UAC5C,QAAU,cAEV,eAAgB,KAAK,SAAS,cAC1B,WAAY,OAAQ,IAAM,eAC9B,AAAI,KAAK,IAAI,QAAQ,UACnB,KAAK,SAAS,iBAAiB,eAEjC,QAAU,cAAc,WAIhC,AAAI,UACF,KAAK,YACD,WAAY,OAAQ,QAAS,cAAe,MAAO,OAGzD,AAAI,KAAK,MAAM,WACb,KAAK,MAAM,cAAc,QAAQ,KAAK,CACpC,KAAM,WACN,WAAY,KAAK,MAAM,SAAW,kBAClC,mBAAoB,KAAK,MAAM,SAC/B,aAAc,KAAK,MAAM,WAAa,mBACtC,qBAAsB,KAAK,MAAM,WACjC,YAAa,OAAO,KAAK,QAAQ,IAC7B,KAAO,OAAO,MAAQ,KAAO,OAAO,KAAK,MAAQ,MACrD,aAAc,QAAQ,IAAI,MAAQ,KAAK,OACvC,aAAc,cAAc,OAC5B,UAAW,cAAc,YAGrB,MAAM,QAAQ,KAAO,QAAU,QAAQ,GAQzC,oCACN,UAAc,QAAQ,IAAI,WAAU,KAAK,KAAK,KAAK,MAAM,aACzD,MAAO,OAaD,iDAGN,eAAmB,YAAY,YAC/B,GAAI,YAAc,MAChB,iBAA+B,WAAW,cAAgB,iBACzB,WAAW,eAAiB,sBAK7D,AAAI,WAAW,cACb,CAAK,OACD,MAAM,QAAQ,QACd,IAAM,0DAEV,mBAAqB,OAAO,KAAK,QAAQ,IAAI,KAAS,OAAO,OAE7D,mBAAqB,aAAa,IAAI,WAAe,OAAO,YAG9D,wBACI,QAAQ,OAAO,OAAU,cAAc,IAE3C,MAAO,oBAAmB,OAAO,qBAInC,MAAO,MAQT,wCAGE,GAAI,QAAU,KACZ,KAAM,IAAI,OAAM,iDAElB,MAAQ,OAAS,UACjB,SAAU,UAAW,KAAK,QAC1B,gBAAkB,OAClB,AAAI,QAAU,UAAY,AAAK,SAAS,OAAO,KAC7C,aAAe,OAAoB,IAAI,GAAK,AAAK,aAAa,KAEhE,WAAe,SAAQ,MAAM,YAAa,MAAO,SACvC,GAAI,QAAO,MAAO,MAAO,OAAQ,KAAK,gBAIhD,GAHA,KAAK,OAAO,EAAG,UAGX,QAAU,UACZ,SAAa,KAAK,MAAM,WAAW,IAAI,iBACtB,qBAAqB,aACtC,KAAK,MAAM,UAAY,SAAW,KAAK,MACvC,KAAK,MAAQ,SAEf,MAAO,GAQT,kDAGE,MAAQ,OAAS,UACjB,MAAU,GAAI,QAAO,MAAO,MAAO,OAAQ,KAAK,gBAChD,YAAK,OAAO,EAAG,UACR,EAGT,oCACsC,eAEpC,KAAO,MAAQ,KAAK,iBAAiB,WACrC,AAAI,OAAS,MAAQ,QAAU,aAAa,OAC1C,cAAe,aAAa,KAAK,QAEnC,MAAU,GAAI,UAAS,aAAc,UAAW,KAAM,KAAK,gBAC3D,GAAI,KAAK,MAAM,oBAAoB,EAAE,OAAS,KAC5C,KAAM,IAAI,OAAM,sBAAsB,EAAE,+BAE1C,YAAK,MAAM,oBAAoB,EAAE,MAAQ,EACzC,KAAK,OAAO,EAAG,KAAK,SACb,EAGT,mBACE,aAAiB,KAAK,MAAM,WAAW,IAAI,EAAE,QACzC,KAAK,MAAM,WAAW,IAAI,EAAE,QAAQ,SACpC,EAKJ,GAJA,KAAK,MAAM,aACX,AAAI,EAAE,QAAU,UACd,KAAK,MAAM,mBAET,WAAa,GACf,KAAK,MAAM,iBAIX,UAAY,EACZ,AAAI,EAAE,QAAU,aAAe,EAAE,QAAU,UACzC,OAAQ,EAAE,KAAO,AAAK,gBAAgB,EAAE,QAE1C,KAAK,MAAM,WAAW,IAAI,EAAE,OAAQ,CAClC,QAAS,UAAW,KAAK,QACzB,MAAO,EAAE,MACT,MAAO,EAAE,MACT,MACA,SAAU,IAEZ,KAAK,MAAM,UAAY,MAGzB,KAAK,MAAM,WAAW,IAAI,EAAE,QAAQ,WAEpC,AAAM,YAAa,WACjB,KAAK,MAAM,GAIf,iBACE,GAAI,CAAC,KAAK,MAAM,WAAW,IAAI,EAAE,QAC/B,OAGF,KAAK,MAAM,aACX,AAAI,EAAE,QAAU,UACd,KAAK,MAAM,mBAEb,SAAa,KAAK,MAAM,WAAW,IAAI,EAAE,iBACxB,KAAK,SAEtB,AAAI,UAAY,EAGd,CAAI,EAAE,QAAU,aACd,MAAK,MAAM,UAAY,KAAK,OAE9B,KAAK,MAAM,iBAEX,KAAK,QAAQ,YAAY,EAAE,QAC3B,KAAK,MAAM,WAAW,OAAO,EAAE,SAE/B,KAAK,MAAM,WAAW,IAAI,EAAE,QAAQ,WAOxC,mBACE,kBAAsB,MAAK,MAAM,qBAC/B,MAAU,KAAK,MAAM,oBAAoB,SACzC,KAAK,gBAAgB,IAIzB,mBACE,KAAK,cAAc,GACnB,AAAI,KAAK,MAAM,oBAAoB,EAAE,OAAS,MAC5C,MAAO,MAAK,MAAM,oBAAoB,EAAE,MAI5C,SACE,SAAa,KAAK,QAAQ,SAC1B,YAAK,WAAa,KAAK,MAAM,WAC7B,KAAK,eAAiB,KAAK,MAAM,eACjC,KAAK,SAAW,KAAK,MAAM,SAC3B,AAAI,KAAK,MAAM,iBAAmB,GAChC,MAAK,WAAa,GAClB,AAAI,KAAK,SAAW,MAClB,MAAK,QAAU,IAEjB,KAAK,QAAQ,KACT,0EAGC,UAGH,gBAEJ,KAAK,MAAM,UAAY,GAEvB,eAAmB,KAAK,MAAM,yBACN,KAAK,MAAM,WAEnC,KAAK,MAAM,cAAc,QAAU,GACnC,KAAK,MAAM,cAAc,OAAS,KAAM,SAExC,KAAK,MAAM,UAAY,GAEvB,KAAK,MAAM,cAAc,UAAY,KAAK,IACtC,GAAG,KAAK,MAAM,cAAc,QAAQ,IAAI,GAAK,EAAE,qBACnD,KAAK,MAAM,cAAc,SAAW,KAAK,MAAM,SAAW,WAC1D,KAAK,MAAM,cAAc,WACrB,KAAK,MAAM,WAAa,gBAC5B,iBAAqB,MAAK,MAAM,cAAc,QAC5C,OAAO,aAAe,KAAM,QAAO,aACnC,OAAO,UAAY,KAAM,QAAO,UAElC,MAAO,MAAK,MAAM,cAGpB,WACE,MAAO,MAAK,MAAM,cAAgB,GAAK,KAAK,MAAM,cAAgB,EAG5D,iEAGN,aACI,CAAC,GAAI,KAAK,MAAM,iBAAkB,WAAY,OAAQ,QAAS,kBAEhD,YAAY,YAC/B,AAAI,YAAc,MAChB,eAAgB,WAAW,UAE7B,AAAI,eAAiB,MACnB,UAAS,SAAW,KAGlB,KAAM,IAAI,IAAI,SACZ,GAAI,IAAM,MACR,WAAe,QAAQ,QACV,AAAK,oBAAoB,OAAO,KAAM,OAAO,OAC1D,MAAO,MAAK,WAAW,KAAM,OAAO,MAAO,OAAO,OAEpD,MAAO,MAIF,cAAc,IAAI,OAAS,EAAI,IAAM,IAAI,GAAI,MAAO,SAG/D,KAAK,MAAM,WAAW,KAAK,UAG7B,aACE,cAAO,KAAO,GACP,OAGD,YACN,AAAI,KAAK,MAAM,gBAAkB,GAC/B,MAAK,MAAM,WAAa,IAE1B,KAAK,MAAM,gBAGL,UACN,KAAK,MAAM,gBAOb,iBACE,cAA8B,CAC5B,MAAO,GACP,KAAM,gBACN,GAAI,KAAK,MAAM,eAEjB,AAAI,MACF,WAAU,KAAO,MAEnB,KAAK,MAAM,WAAW,KAAK,WAC3B,KAAK,MAAM,YAAc,UAO3B,iBACE,2BAA+B,sBAAsB,kCAEjD,GAAI,KAAI,uBAAuB,IAAI,GAAK,EAAE,KAG9C,UAAa,EAAG,EAAI,KAAK,MAAM,YAAY,MAAM,OAAQ,KACvD,cAAe,KAAK,MAAM,YAAY,MAAM,GAC5C,AAAI,CAAC,UAAO,MAAQ,CAAC,0BAA0B,IAAI,UAAO,KACxD,UAAO,UAIX,aAAiB,KAAK,MAAM,WAAW,MACvC,KAAK,MAAM,YAAc,KAAK,MAAM,WAAW,SAAW,EACtD,KACA,KAAK,MAAM,WAAW,KAAK,MAAM,WAAW,OAAS,GAGzD,uBAAuB,QAAQ,YAG7B,AAAI,CAAC,UAAO,MAAQ,UAAO,UAAY,SAAS,IAC9C,KAAK,MAAM,aAWjB,mCAEuB,IAGrB,GAFA,AAAK,OACD,GAAG,OAAS,EAAG,IAAM,6CACrB,IAAM,MAAQ,GAAG,QAAU,UAC7B,KAAM,IAAI,OAAM,0CAA0C,GAAG,UAG/D,MAAU,KAAK,UACX,IAAM,KAAK,YAAa,IAAM,KAAK,UACnC,IAAM,KAAK,KAAK,UAAW,IAE/B,AAAK,OACD,YAAa,QACb,IAAM,kDAEV,iBAAqB,qBAAqB,KAAK,MAAM,WAAY,GAAI,GACrE,GAAI,CAAC,kBAAoB,aAAa,SAAW,GAAK,GAAG,OAAS,EAChE,KAAM,IAAI,OACN,uIAKN,MAAO,MAAK,KAAK,WAAY,KAC3B,2BAA6D,GAC7D,uBAAuB,EAAE,IAAO,IAAM,KAAQ,KAAK,EAAE,OAAS,GAG9D,uBACI,uBAAwB,aAExB,IAAK,KAAK,KAAK,IAEf,KACJ,WAAc,GAAG,IAAI,GAAK,uBAAuB,EAAE,KAEnD,MAAI,MAAK,MAAM,gBAAkB,GAG/B,MAAK,MAAM,WAAW,QAAQ,OAC5B,oBAAqB,MAAK,MACxB,UAAO,YAGX,KAAK,MAAM,WAAa,MAEnB,CAAC,MAAO,EAAG,gBAItB,cAEE,MAAK,QACD,AAAK,WAAW,GAChB,IAAM,qDACH,cACL,AAAK,OACD,OAAO,MAAM,GAAK,YAAa,SAC/B,IAAM,oEAGV,iBAIiC,GACjC,cAAO,QAAQ,aACb,SAAS,GAAK,SAET,KAAK,cACR,UACE,KAAM,EAAM,GAAG,OAAQ,MACvB,AAAK,OACD,IAAI,gBAAiB,QACrB,IAAM,8FAEV,AAAK,OACD,AAAK,WAAW,IAAI,UACpB,IAAM,oGAEH,IAAI,OAEb,SACA,aACE,YAAgB,IAAI,SAAS,GAAI,cAE7B,MAAM,QAAQ,SAAW,QAAU,CAAC,SACxC,AAAK,OACD,OAAM,SAAW,OAAO,OACxB,IAAM,uKAGV,AAAK,OACD,OAAM,MAAM,GAAK,YAAa,SAC9B,IAAM,wIAGV,YAA+C,GAC/C,cAAM,QAAQ,YACZ,QAAQ,GAAK,IAAM,QAEd,WAKjB,iBAEE,SAAa,KAAK,MAAM,WAAW,IAAI,QACvC,MAAO,MAAK,QAAQ,SAAS,QAE/B,aAEE,SAAa,KAAK,MAAM,WAAW,IAAI,QACvC,MAAO,MAAK,QAAQ,KAAK,aAGrB,aACJ,UAAc,iBACK,KAAM,MAAK,QAAQ,KAAK,OAC3C,kBAAW,OAAS,MAAQ,MACrB,WASD,cACN,MAAI,MAAK,MAAM,aAAe,MAC5B,QAAO,QAAU,KAAK,MAAM,YAAY,GACxC,KAAK,MAAM,YAAY,MAAM,KAAK,SAG7B,UAGL,uBACF,MAAO,MAAK,MAAM,oBAOpB,QAEE,KAAK,uBAEL,KAAK,MAAM,UACX,KAAK,IAAI,QACT,KAAK,MAAQ,GAAI,aAEjB,sBAA0B,MAAK,SAC7B,KAAK,yBAAyB,aAC9B,KAAK,SAAS,aAAa,UAC3B,MAAO,MAAK,SAAS,aAEvB,KAAK,YAAc,KACnB,KAAK,gBAAkB,KACvB,KAAK,mBAAqB,OA3tBb,OAAA,aAAe,EAKf,OAAA,eAAiB,EA0tBlC,qBACE,WAAe,mBAAmB,cAAc,OAAQ,WACxD,MAAO,QAAO,WAAW,OAAQ,MAAO,WAGpC,2BACJ,OAAW,qBACX,GAAI,GAAG,WAAa,MAClB,kBAAoB,GAAI,aAAY,IACpC,GAAG,UAAY,GAAI,QAAO,eAE5B,4BAAqB,GAAG,UAAU,KAIlC,iBAAiB,IAAM,GAAG,WACnB,GAAG,UAGL,WAAe,kBAQhB,kBAEJ,WAAe,CAAC,EAAG,GACnB,MAAO,QAAO,UAAU,IAAK,QC1sC/B,IAAA,qGCAA,AAkBA,+BACE,MAAO,OAAO,YAAc,aAAe,WAAa,KAGpD,oBACJ,GAAI,uBAEF,IAAM,EAAI,UAAU,WAAa,UAAU,QAAW,OAAe,MAErE,MAAO,2TACK,KAAK,IAEb,0kDACK,KAAK,EAAE,OAAO,EAAG,IAE5B,MAAO,GAGH,qBACJ,MAAQ,OAAO,SAAW,aAAe,OAAO,UAAY,MAEvD,MAAO,oBAAsB,YCvCpC,AAqBA,IAAM,KAAM,MAOZ,KAAI,aAAa,QAAS,IAAM,GAAO,aACrC,AAAI,YACF,QAAQ,KACJ,iJAOR,KAAI,aAAa,aAAc,IAAM,AAAY,aAGjD,KAAI,aACA,UACA,IAAO,MAAO,UAAY,aACrB,MAAO,SAAQ,UAAa,aAC5B,MAAO,SAAQ,SAAS,MAAS,aAG1C,KAAI,aACA,YACA,IAAM,MAAO,YAAc,aAAe,WAAa,MACnD,UAAU,WAAa,MAAQ,SAAS,KAAK,UAAU,YACvD,aAAa,KAAK,UAAU,SAMpC,KAAI,aAAa,OAAQ,IAAM,IAM/B,KAAI,aACA,qCAAsC,IAAM,KAAI,QAAQ,UAG5D,KAAI,aAAa,+BAAgC,IAAM,IAGvD,KAAI,aAAa,UAAW,IAAM,IAGlC,KAAI,aAAa,+BAAgC,IAAM,IC1EvD,AAuBM,oBAAqB,WACzB,cAA4B,IAE5B,GAAI,aAAa,KACf,MAAO,SAAU,SAAW,GAAK,CAAC,IAAI,QAExC,GAAI,CAAC,MAAM,QAAQ,KACjB,MAAO,GAET,UAAwB,GAExB,KAAO,MAAM,QAAQ,YACd,aAAa,YAAc,QAAU,UAC1C,MAAM,KAAK,UAAU,QACrB,UAAY,UAAU,GAExB,MAAI,OAAM,QAAQ,MACd,MAAM,QAAQ,uCAChB,2BAA2B,IAAK,MAAO,IAGlC,MAGT,uDAGE,GADA,QAAU,SAAW,GACjB,CAAE,MAAM,QAAQ,MAAS,CAAC,aAAa,MACzC,OACI,MAAM,SAAW,EACjB,IAAM,eAAe,QAAQ,KAAK,+DACU,MAAM,eACtD,OAEF,OACI,MAAM,OAAS,EACf,IAAM,eAAe,QAAQ,KAAK,oDACR,IAAI,mBAClC,OACI,IAAI,SAAW,MAAM,GACrB,IAAM,eAAe,QAAQ,KAAK,sBAAsB,MAAM,wBACrC,IAAI,mBACjC,aAAiB,MAAM,MAAM,GAC7B,UAAa,EAAG,EAAI,IAAI,OAAQ,EAAE,EAChC,2BAA2B,IAAI,GAAI,SAAU,QAAQ,OAAO,IAIhE,qEAGE,GAAI,eAAiB,KACnB,OAEF,GAAI,gBAAkB,WAAa,gBAAkB,aACjD,gBAAkB,WAAa,cAAgB,SACjD,KAAM,IAAI,OACN,aAAa,uBAAuB,yBAC9B,iCAAiC,sBAIzC,6DAEiC,WACrC,GAAI,YAAa,QACf,mBAAY,aAAc,EAAE,MAAO,QAAS,cACrC,EAET,kBAAoB,WAAW,GAS/B,GANA,AAAI,gBAAkB,UAClB,CAAC,OAAQ,QAAS,WAAW,QAAQ,eAAiB,GACxD,eAAgB,cAElB,YAAY,aAAc,cAAe,QAAS,cAE7C,GAAK,MACL,CAAC,aAAa,IAAM,CAAC,MAAM,QAAQ,IAAM,MAAO,IAAM,UACtD,MAAO,IAAM,WAAa,MAAO,IAAM,UAC1C,SAAa,GAAK,KAAO,OAAU,EAAS,YAAY,KACxD,KAAM,IAAI,OACN,aAAa,uBAAuB,0DACF,SAExC,kBAAsB,WAAW,EAAG,eACpC,AAAI,CAAC,aAAa,IAAM,CAAC,MAAM,QAAQ,IACrC,GAAI,CAAC,IAEP,mBAAuB,UACR,gBAAkB,SAC7B,aAAa,EAAG,eAChB,QAAQ,EAAe,GAAI,gBAC/B,MAAO,QAAO,WAAW,OAAQ,cAAe,eAG5C,oEAEiC,WACrC,GAAI,CAAC,MAAM,QAAQ,KACjB,KAAM,IAAI,OACN,YAAY,qBAAqB,2DAGvC,YAAgB,IAChB,MAAO,SAAQ,IACX,OAAU,gBAAgB,EAAG,GAAG,WAAW,KAAM,cACjD,cCnIN,AAmBO,IAAM,gBAAkB,OAOzB,eACJ,SAAa,OAAO,KAAK,GACzB,GAAI,KAAK,SAAW,EAClB,KAAM,IAAI,OACN,yGAEG,KAAK,gBAGd,WAAa,KAAK,MACP,EAAE,QAGb,AAAI,OAAO,SAAS,MAClB,QAAS,OAAO,UAAU,EAAG,OAAO,OAAS,IAI/C,OAAS,OAAS,gBAGlB,OAAW,YACT,OAAO,WAAW,QAClB,IACE,WAAe,GAAG,GAAG,MACrB,MAAI,WAAU,SACZ,QAAQ,MAAM,2CAEhB,OAAO,SAAS,QACT,iBAEP,aAAO,SAAS,MACV,KAGV,cAAO,eAAe,GAAI,OAAQ,CAAC,MAAO,OAAQ,aAAc,KAGzD,GChET,AA8CA,kBAAoC,aAClC,UAAc,gBAAgB,MAAM,OAAQ,iBAC9B,gBAAgB,MAAM,OAAQ,WAC5C,AAAK,kBACD,MAAM,MAAO,MAAM,MACnB,yBAAyB,MAAM,aAAa,MAAM,8CAGtD,WAA8B,CAAC,KAAM,MAAO,KAAM,OAClD,MAAO,QAAO,UAAU,QAAS,QAG5B,YAAgB,GAAG,CAAC,WC1D3B,AAwBM,oBACF,kCAKF,GAHA,AAAI,OAAS,MACX,OAAQ,WAAW,SAEjB,QAAU,YACZ,KAAM,IAAI,OACN,oFAGN,GAAI,CAAC,aAAa,SAAW,CAAC,MAAM,QAAQ,SACxC,MAAO,SAAW,UAAY,MAAO,SAAW,WAChD,MAAO,SAAW,SACpB,KAAM,IAAI,OACN,4HAGN,GAAI,OAAS,MACX,mCAAmC,OAEnC,iBAAqB,cAAc,oBACd,cAAc,eACnC,OACI,eAAiB,aACjB,IACI,iCAAiC,kCAC9B,+BAA+B,gBAE1C,UAAa,EAAG,EAAI,cAAc,OAAQ,EAAE,GAC1C,aAAiB,cAAc,qBACL,IAAM,cAAc,OAAS,EACnD,WAAa,cAAc,MAAM,MAAM,IACvC,GACJ,OACI,cAAc,KAAO,MAAM,IAAM,CAAC,kBAClC,IAAM,gDACE,qDACM,aAItB,MAAI,CAAC,aAAa,SAAW,CAAC,MAAM,QAAQ,SAC1C,QAAS,CAAC,SAGZ,MAAQ,OAAS,cACjB,OAAS,QAAU,SACf,aAAa,OAAQ,OACrB,QAAQ,OAAoB,GAAI,IAC7B,OAAO,WAAW,OAAsB,MAAO,OC1ExD,AAoDM,iBACF,oBACF,kBAAsB,WAAW,OAAQ,OACzC,MAAO,YAAW,OAAQ,MAAO,cAAe,OCvDlD,AAsBO,IAAM,qBAAkD,CAC7D,QAAW,EACX,QAAW,EACX,MAAS,EACT,OAAU,EACV,MAAS,EACT,KAAQ,EACR,UAAa,GC7Bf,AA2BA,IAAM,wBAA0B,EAmBhC,4CAIE,UAAsC,gBACW,SAEzB,MAAM,QAAQ,SAClC,QAAQ,IAAI,WAAU,UAAO,MAC7B,OAAO,KAAK,SAEhB,UAAa,EAAG,EAAI,MAAM,OAAQ,EAAE,GAClC,SAAa,MAAM,KACT,MAAM,QAAQ,SAAW,QAAQ,GAAG,OAAS,QAAQ,MAC/D,GAAI,EAAE,QAAU,WAAa,EAAE,QAAU,SAAW,EAAE,QAAU,QAC5D,EAAE,QAAU,UAAY,EAAE,QAAU,YACtC,KAAM,IAAI,OAAM,gCAAgC,UAAU,EAAE,SAE9D,SAAmC,CAAC,KAAM,MAAO,EAAE,MAAO,MAAO,EAAE,OACnE,GAAI,EAAE,QAAU,UACd,cAAkB,GAAI,SAAoB,gBACxC,SAAa,KAAM,GAAE,sBACC,KAAK,OAAO,QAAU,GAAI,EAAE,OAAQ,GACtD,wBAA0B,KAAK,aACrB,GAAI,YAAW,sBAChB,EACb,WAAa,EAAG,GAAI,KAAK,OAAQ,MAC/B,QAAY,KAAK,kBAEb,GAAI,YAAW,GAAI,aAAY,CAAC,IAAI,SAAS,QACjD,MAAM,IAAI,cAAe,QACzB,QAAU,wBACV,MAAM,IAAI,IAAK,QACf,QAAU,IAAI,OAEhB,QAAQ,SAEV,aAAa,KAAK,eAElB,cAAa,KAAK,EAAE,QAEtB,AAAI,OAAS,MACX,MAAK,MAAQ,OAEf,MAAM,KAAK,MAGb,iBAAqB,KAAM,SAAQ,IAAI,cACvC,MAAO,CAAC,KAAM,uBAAuB,cAAe,OAkBhD,sCAGJ,QAA4B,wBAEf,EACb,eAAmB,QACjB,SAAa,KAAK,WACJ,KAAK,YACL,KAAK,WACN,cAAc,cAG3B,GAAI,gBAAkB,OACpB,iBAAqB,KAAK,aAC1B,GAAI,aAAa,QAAU,SAAW,aAAa,QAAU,UAC3D,GAAI,CAAE,QAAS,eAAgB,SAAW,eACxC,KAAM,IAAI,OACN,UAAU,KAAK,0BAA0B,aAAa,oEAGnD,aAAa,QAAU,WAChC,GAAI,QAAU,UACZ,KAAM,IAAI,OACN,UAAU,KAAK,0BAA0B,aAAa,yDACH,cAGzD,MAAM,IAAI,OACN,UAAU,KAAK,uCACO,aAAa,+EAIzC,2BAA+B,qBAAqB,aAAa,kBAE7D,QAAO,MAAM,OAAQ,OAAS,KAAO,uCACjB,aAAa,QAAU,QAC3C,GAAI,YAAW,YACf,GAAI,aAAY,YACpB,GAAI,QAAU,UACZ,GAAI,aAAa,QAAU,SAAW,aAAa,QAAU,UAC3D,OAAS,GAAI,cAAa,eAAe,QACzC,UAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,MAAU,eAAe,GACzB,OAAO,GAAK,EAAI,aAAa,MAAQ,aAAa,aAE3C,aAAa,QAAU,UAChC,AAAI,gBAAkB,QACpB,eAAgB,qBAElB,OAAS,cAAc,oBAEvB,MAAM,IAAI,OACN,iCAAiC,aAAa,0CAG3C,QAAU,SACnB,GAAI,aAAa,QAAU,SAAW,aAAa,QAAU,SAC3D,KAAM,IAAI,OACN,iCAAiC,aAAa,gCAGpD,OAAS,GAAI,YAAW,eAAe,QACvC,UAAa,EAAG,EAAI,eAAe,OAAQ,KACzC,MAAU,eAAe,GACzB,OAAO,GAAK,KAAK,MAAM,EAAI,aAAa,MAAQ,aAAa,UAG/D,MAAM,IAAI,OAAM,gCAAgC,UAAU,SAE5D,QAAU,KAAO,+BACR,QAAU,UACnB,UAAa,cAAc,KAAK,OAChC,OAAS,GACT,UAAa,EAAG,EAAI,MAAM,KACxB,eAAmB,GAAI,aACnB,QAAO,MAAM,OAAQ,OAAS,0BAA0B,GAC5D,QAAU,wBACV,UAAc,GAAI,YAAW,QAAO,MAAM,OAAQ,OAAS,aAC1D,OAAwB,KAAK,OAC9B,QAAU,iBAGZ,gBAAoB,qBAAqB,kBACtB,QAAO,MAAM,OAAQ,OAAS,KAAO,aAExD,GAAI,QAAU,UACZ,OAAS,GAAI,cAAa,oBACjB,QAAU,QACnB,OAAS,GAAI,YAAW,oBACf,QAAU,OACnB,OAAS,GAAI,YAAW,oBACf,QAAU,aACnB,OAAS,GAAI,cAAa,YAC1B,UAAa,GAAI,cAAa,OAAO,OAAS,UAChC,GAAI,cAAa,OAAO,OAAS,GAC/C,UAAa,EAAG,EAAI,MAAK,OAAQ,IAC/B,MAAK,GAAK,OAAO,EAAI,GACrB,OAAM,GAAK,OAAO,EAAI,EAAI,GAE5B,eAAmB,QAAO,MAAM,MAAO,uBACnB,QAAO,OAAO,MAAO,WACzC,IAAI,MAAQ,QAAQ,WAAY,aAChC,WAAW,UACX,YAAY,cAEZ,MAAM,IAAI,OAAM,gCAAgC,UAAU,SAE5D,QAAU,KAAO,YAEnB,AAAI,QAAU,aACZ,KAAI,MAAQ,QAAO,OAAQ,MAAO,QAGtC,MAAO,KAMH,oCAEJ,GAAI,KAAO,KACT,KAAM,IAAI,OAAM,wBAAwB,KAAK,UAAU,OAGzD,oBAAsB,eASa,GACnC,GAAG,QAAQ,IAMT,GALA,iBAAmB,EAAE,WAErB,aAAa,KACT,EAAE,aAAe,EAAE,OAAO,WAAa,EACA,GAAK,GAAE,YAAoB,IAClE,CAAE,aAAoB,eAAgB,YAAoB,aACxD,YAAoB,aACxB,KAAM,IAAI,OAAM,mCAAmC,EAAE,YAAY,UAKrE,MAAU,GAAI,YAAW,wBACZ,EACb,oBAAa,QAAQ,IACnB,EAAE,IAAI,GAAI,YAAW,EAAE,QAAS,QAChC,QAAU,EAAE,aAGP,EAAE,OAIX,kBAAsB,MAAO,SAAW,aACnC,OAAO,OAAS,aAAe,MAAO,OAAS,aAC/C,MAAO,OAAS,aAWf,+BACJ,MAAI,eACK,OAAO,WAAW,KAEpB,GAAI,MAAK,CAAC,MAAM,KASnB,4CACJ,GAAI,cACF,MAAO,QAAO,KAAK,SAAQ,SAAS,UAEtC,QAAY,GAAI,YAAW,WACnB,GACR,UAAa,IAAO,IAAI,OAAQ,EAAI,EAAG,IACrC,GAAK,OAAO,aAAa,IAAI,IAE/B,MAAO,MAAK,GASR,wCACJ,GAAI,eACF,QAAY,OAAO,KAAK,IAAK,UAC7B,MAAO,KAAI,OAAO,MAAM,IAAI,WAAY,IAAI,WAAa,IAAI,YAE/D,MAAU,KAAK,aACA,GAAI,YAAW,EAAE,QAChC,UAAa,EAAG,EAAI,EAAE,OAAQ,EAAE,EAC9B,QAAO,IAAI,CAAC,EAAE,WAAW,IAAK,GAEhC,MAAO,SAAO,OASV,0CACJ,GAAI,QAAQ,SAAW,EACrB,MAAO,SAAQ,GAGjB,oBAAsB,EACtB,QAAQ,QAAQ,UACd,iBAAmB,QAAO,aAG5B,SAAa,GAAI,YAAW,wBACf,EACb,eAAQ,QAAQ,UACd,KAAK,IAAI,GAAI,YAAW,SAAS,QACjC,QAAU,QAAO,aAEZ,KAAK,OAUR,wBACJ,cAAkB,IAElB,IADA,KAAO,KAAK,OACL,KAAK,SAAS,YACnB,KAAO,KAAK,MAAM,EAAG,KAAK,OAAS,GAErC,UAAc,KAAK,MAAM,WACzB,MAAO,OAAM,MAAM,OAAS,GAQxB,sDAEJ,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OAAM,uDAGlB,MAAO,CACL,UAAW,GAAI,MACf,kBAAmB,OACnB,mBAAoB,eAAe,eAAiB,KAChD,EACA,iBAAiB,KAAK,UAAU,eAAe,gBACnD,iBAAkB,eAAe,aAAe,KAC5C,EACA,iBAAiB,KAAK,UAAU,eAAe,cACnD,gBAAiB,eAAe,YAAc,KAC1C,EACA,eAAe,WAAW,YAUlC,sCACE,oBAAwB,IACtB,MAAQ,GAAK,KACL,EAER,KAAQ,GAAI,WAAgB,GAC1B,GAAK,QACL,IAAM,EAER,UAAK,CAAC,QACN,GAAK,UAEE,EAAI,gBAGQ,GAAI,aAAY,MAErC,aAAa,GAAK,EAClB,UAAa,EAAG,EAAI,KAAM,IACxB,aAAa,GAAK,gBAAgB,GAEpC,UAAa,KAAM,EAAI,KAAM,IAC3B,aAAa,GAAK,UAAe,GAAI,MAAS,IAGhD,MAAO,cAST,uCACE,kBAAsB,GAAI,aAAY,IAEtC,cAAc,GAAK,EACnB,cAAc,IAAM,WACpB,cAAc,IAAM,WACpB,cAAc,IAAM,WACpB,UAAa,EAAG,EAAI,GAAI,IACtB,cAAc,GAAK,GAAK,GAE1B,UAAa,GAAI,EAAI,GAAI,IACvB,cAAc,GAAK,WAAe,GAAI,IAAO,IAG/C,MAAO,eAST,qCACE,gBAAoB,GAAI,aAAY,IAEpC,UAAa,EAAG,EAAI,GAAI,IACtB,YAAY,GAAK,KAEnB,mBAAY,GAAK,YAAY,IAAM,EAE5B,YAUH,6BAKJ,iBAAqB,2CACC,0CACF,4BAEpB,MAAO,kBACL,YAAe,GAAI,aAAY,EAAI,eAAe,yBACzB,GAAI,aAAY,SACzC,cAAiB,EAAG,MAAQ,eAAe,OAAQ,SACjD,gBAAoB,eAAe,mBAE/B,aAAa,YAAY,aAAe,IAAO,aAAc,OAC7D,cAAc,aAAe,IACjC,iBAAiB,OAAS,YAE5B,MAAO,IAAI,cAAa,UClf5B,IAAA,uBA6BE,cACE,KAAK,YAAc,GACnB,KAAK,YAAc,SAGN,eACb,MAAI,kBAAiB,UAAY,MAC/B,kBAAiB,SAAW,GAAI,mBAE3B,iBAAiB,eASnB,gCACL,iBAAiB,cAAc,YAAY,KAAK,kBAS3C,gCACL,iBAAiB,cAAc,YAAY,KAAK,kBAW3C,sBACL,MAAO,kBAAiB,YAAY,IAAK,cAWpC,kCAEL,MAAO,kBAAiB,YAAY,IAAK,OAAQ,mBAGpC,0CAGb,kBAAmC,WACnB,cAAgB,OAC5B,iBAAiB,cAAc,YAC/B,iBAAiB,cAAc,YACnC,eAAQ,QAAQ,SACd,YAAgB,OAAO,IAAK,aAC5B,AAAI,UAAY,MACd,cAAc,KAAK,WAGhB,mCAIuB,YAC9B,iBAAiB,mBAAmB,+BACN,YAC9B,iBAAiB,mBAAmB,4BACT,KAC3B,iBAAiB,gBAAgB,qBAEjC,mBACI,iBAAiB,gBAAgB,IAAK,aC/G9C,AAyBA,IAAM,cAAgB,gCACG,mBAKA,+BAID,mBCexB,+BACE,GAAI,CAAC,MAAM,QAAQ,cAIjB,KAAM,IAAI,OACN,2FAIN,IAAM,UAAiB,MAAO,SAAW,YAAc,KAAO,eAC9C,UAAU,WAAa,UAAU,cAC7C,UAAU,iBAAmB,UAAU,aACvC,UAAU,cACd,GAAI,SAAW,KACb,KAAM,IAAI,OACN,6DAEN,MAAO,SAGT,oCACE,OAAW,YAAY,OACvB,GAAG,kBAAkB,iBAAkB,CAAC,QAAS,cACjD,GAAG,kBAAkB,gBAAiB,CAAC,QAAS,cA1ElD,2BAwFE,uBAGE,GAFA,KAAK,UAAY,sBAEb,WAAa,MAAQ,CAAC,UACxB,KAAM,IAAI,OACN,kEAEN,KAAK,UAAY,eAGb,sBAEJ,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,4FAIN,MAAO,MAAK,eAAe,KAAK,UAAW,qBAIvC,QACJ,MAAO,MAAK,eAAe,KAAK,WAiB1B,yCAEN,MAAO,IAAI,SAAmC,mBAC5C,gBAAoB,KAAK,UAAU,KAAK,cAAe,kBACvD,YAAY,gBAAkB,IAAM,cAAc,aAElD,YAAY,UAAY,KACtB,OAAW,YAAY,OAEvB,GAAI,gBAAkB,MAEpB,YAAgB,GAAG,YAAY,iBAAkB,uBAC9B,QAAQ,YAAY,6BACpB,WAAW,IAAI,KAAK,WACvC,WAAW,UAAY,KACrB,GAAI,WAAW,QAAU,KACvB,UAAG,QACI,OAAO,GAAI,OACd,gCAAgC,KAAK,6BAGzC,QAAQ,WAAW,OAAO,iBAG9B,WAAW,QAAU,OACnB,IAAG,QACI,OAAO,WAAW,QAE3B,QAAQ,WAAa,IAAM,GAAG,aAG9B,uBACI,6BAA6B,uBAElB,GAAG,YAAY,gBAAiB,uBAC/B,OAAO,YAAY,gCAE/B,UAAU,IAAI,CAAC,UAAW,KAAK,UAAW,6BAE9C,eAAe,UAAY,KAEzB,QAAU,GAAG,YAAY,iBAAkB,aAC3C,eAAmB,QAAQ,YAAY,kCACf,WAAW,IAAI,CACrC,UAAW,KAAK,UAChB,eACA,qBAEF,gBAAgB,UAAY,IAAM,QAAQ,CAAC,qBAC3C,gBAAgB,QAAU,QAGxB,UAAY,OAAO,YAAY,iBAC/B,sBAA0B,UAAU,OAAO,KAAK,WAChD,kBAAkB,UAAY,IAC5B,IAAG,QACI,OAAO,gBAAgB,QAEhC,kBAAkB,QAAU,QAC1B,IAAG,QACI,OAAO,gBAAgB,UAIpC,eAAe,QAAU,OACvB,IAAG,QACI,OAAO,eAAe,QAE/B,OAAO,WAAa,KAClB,AAAI,SAAW,KACb,GAAG,QAEH,QAAQ,WAAa,IAAM,GAAG,WAKtC,YAAY,QAAU,OAAS,OAAO,YAAY,WAvHtC,iBAAA,WAAa,eA4HxB,oBAAkC,KAClC,MAAM,QAAQ,eAGb,EAAC,MAAM,QAAQ,MAAQ,IAAI,WAAW,iBAAiB,aAClD,iBAAiB,IAAI,MAAM,iBAAiB,WAAW,SAHzD,KASX,iBAAiB,mBAAmB,iBACpC,iBAAiB,mBAAmB,iBAmB9B,qCACJ,MAAO,IAAI,kBAAiB,WAG9B,+BACE,MAAO,KAAI,WAAW,iBAAiB,YACnC,IAAI,MAAM,iBAAiB,WAAW,QACtC,IAxPN,kCA8PE,cACE,KAAK,UAAY,2BAGb,cACJ,MAAO,IAAI,SACP,mBACE,gBACI,KAAK,UAAU,KAAK,cAAe,kBACvC,YAAY,gBAAkB,IAAM,cAAc,aAElD,YAAY,UAAY,KACtB,OAAW,YAAY,UACZ,GAAG,YAAY,gBAAiB,kBAC7B,GAAG,YAAY,mCASF,MAAc,SACzC,kBAAkB,UAAY,KAC5B,QAAkD,GAClD,eAAmB,mBAAkB,OACnC,IAAI,KAAK,WAAa,KAAK,mBAE7B,QAAQ,MAEV,kBAAkB,QAAU,OAC1B,IAAG,QACI,OAAO,kBAAkB,QAElC,GAAG,WAAa,IAAM,GAAG,SAE3B,YAAY,QAAU,OAAS,OAAO,YAAY,cAIpD,mBACJ,YAAO,iBAAiB,MACjB,GAAI,SAA4B,mBACrC,gBAAoB,KAAK,UAAU,KAAK,cAAe,kBACvD,YAAY,gBAAkB,IAAM,cAAc,aAElD,YAAY,UAAY,KACtB,OAAW,YAAY,cACR,GAAG,YAAY,gBAAiB,uBAC7B,OAAO,YAAY,gCAEd,UAAU,IAAI,cAErC,eAAe,UAAY,KACzB,GAAI,eAAe,QAAU,KAC3B,UAAG,QACI,OAAO,GAAI,OACd,gCAAgC,wBAE/B,CAEL,sBAA0B,UAAU,OAAO,sBACnB,KAEtB,QAAU,GAAG,YAAY,iBAAkB,aAC3C,eAAmB,QAAQ,YAAY,qCACZ,WAAW,OAAO,MAC7C,mBAAmB,UAAY,IAC3B,QAAQ,eAAe,OAAO,oBAClC,mBAAmB,QAAU,OACzB,OAAO,eAAe,QAI5B,kBAAkB,UAAY,gBAC9B,kBAAkB,QAAU,OAC1B,mBACA,GAAG,QACI,OAAO,eAAe,UAInC,eAAe,QAAU,OACvB,IAAG,QACI,OAAO,eAAe,QAG/B,OAAO,WAAa,KAClB,AAAI,SAAW,KACb,GAAG,QAEH,QAAQ,WAAa,IAAM,GAAG,UAIpC,YAAY,QAAU,OAAS,OAAO,YAAY,WC9VxD,AAyBA,IAAM,eAAiB,gBACH,kCACA,6BACU,qCACF,kCACD,oCACG,iBC8B9B,sBAAsB,MAOpB,MAAO,CACL,KAAM,CAAC,YAAa,KAAM,aAAa,KAAK,gBAC5C,SAAU,CAAC,YAAa,KAAM,uBAAuB,KAAK,gBAC1D,YAAa,CAAC,YAAa,KAAM,qBAAqB,KAAK,gBAC3D,WAAY,CAAC,YAAa,KAAM,oBAAoB,KAAK,gBACzD,cACI,CAAC,YAAa,KAAM,uBAAuB,KAAK,iBAWxD,kCACE,UAAc,IAAI,MAAM,gBACxB,GAAI,MAAM,OAAS,EACjB,KAAM,IAAI,OAAM,uBAAuB,OAEzC,MAAO,OAAM,MAAM,EAAG,MAAM,OAAS,GAAG,KAAK,gBAG/C,gCACE,MAAO,KAAI,WAAW,oBAAoB,YACtC,IAAI,MAAM,oBAAoB,WAAW,QACzC,IAhGN,8BAuHE,uBACE,GAAI,CAAC,MAAM,QAAQ,eAAiB,MAAO,SAAW,aAClD,MAAO,QAAO,cAAiB,YAKjC,KAAM,IAAI,OACN,2DAIN,GAFA,KAAK,GAAK,OAAO,aAEb,WAAa,MAAQ,CAAC,UACxB,KAAM,IAAI,OACN,sEAEN,KAAK,UAAY,UACjB,KAAK,KAAO,aAAa,KAAK,gBAY1B,sBACJ,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,4FAEC,CACL,eAAiB,KAAK,UAAU,eAAe,2BAC3B,KAAK,UAAU,eAAe,gCAG9C,6BAA6B,gBAEjC,IACE,KAAK,GAAG,QAAQ,KAAK,KAAK,KAAM,KAAK,UAAU,qBAC/C,KAAK,GAAG,QAAQ,KAAK,KAAK,SAAU,YACpC,KAAK,GAAG,QAAQ,KAAK,KAAK,YAAa,aACvC,KAAK,GAAG,QACJ,KAAK,KAAK,WACV,0BAA0B,eAAe,aAC7C,WAA+B,CAC7B,OAAQ,eAAe,OACvB,YAAa,eAAe,YAC5B,YAAa,eAAe,aAE9B,MAAI,gBAAe,WAAa,MAC9B,QAAO,UAAY,eAAe,WAEpC,AAAI,eAAe,qBAAuB,MACxC,QAAO,oBAAsB,eAAe,qBAE9C,AAAI,eAAe,kBAAoB,MACrC,QAAO,iBAAmB,eAAe,kBAE3C,KAAK,GAAG,QAAQ,KAAK,KAAK,cAAe,KAAK,UAAU,SAEjD,CAAC,+BAGR,WAAK,GAAG,WAAW,KAAK,KAAK,MAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,UAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,aAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,YAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,eAEvB,GAAI,OACN,yBAAyB,KAAK,kHAER,mBAAmB,wCACrB,mBAAmB,qCACpB,mBAAmB,2BAa1C,QACJ,SACI,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,OACzC,GAAI,MAAQ,KACV,KAAM,IAAI,OACN,kDAAkD,KAAK,cAG7D,GAAI,KAAK,oBAAsB,OAC7B,KAAM,IAAI,OACN,6EAIN,QAA4B,cAGX,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,WACtD,GAAI,YAAY,KACd,KAAM,IAAI,OACN,4CAA4C,KAAK,0BAGvD,IAAI,cAAgB,WAGpB,gBAAoB,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,cACzD,GAAI,aAAe,KACjB,KAAM,IAAI,OACN,gDAAgD,KAAK,2BAG3D,IAAI,YAAc,YAGlB,mBAAuB,KAAK,GAAG,QAAQ,KAAK,KAAK,eACjD,GAAI,gBAAkB,MACpB,aAAiB,KAAK,MAAM,gBAC5B,IAAI,OAAS,SAAS,OACtB,IAAI,YAAc,SAAS,YAC3B,IAAI,YAAc,SAAS,YAC3B,AAAI,SAAS,WAAgB,MAC3B,KAAI,UAAY,SAAS,WAE3B,AAAI,SAAS,qBAA0B,MACrC,KAAI,oBAAsB,SAAS,qBAErC,AAAI,SAAS,kBAAuB,MAClC,KAAI,iBAAmB,SAAS,kBAKpC,qBAAyB,KAAK,GAAG,QAAQ,KAAK,KAAK,YACnD,GAAI,kBAAoB,KACtB,KAAM,IAAI,OACN,wDACI,KAAK,2BAEf,WAAI,WAAa,0BAA0B,kBAEpC,MA1JO,oBAAA,WAAa,kBA8JxB,uBAAqC,KACrC,MAAM,QAAQ,eAGb,EAAC,MAAM,QAAQ,MAAQ,IAAI,WAAW,oBAAoB,aACrD,oBACH,IAAI,MAAM,oBAAoB,WAAW,SAJxC,KAUX,iBAAiB,mBAAmB,oBACpC,iBAAiB,mBAAmB,oBA0B9B,wCACJ,MAAO,IAAI,qBAAoB,WA3TjC,qCAiUE,cACE,OACI,MAAM,QAAQ,cACd,IAAM,4CACV,OACI,MAAO,SAAW,aACd,MAAO,QAAO,cAAiB,YACnC,IAAM,2DACV,KAAK,GAAK,OAAO,kBAGb,cACJ,QAAkD,UACnC,YAAc,sBACd,eAAiB,YAChC,UAAa,EAAG,EAAI,KAAK,GAAG,OAAQ,EAAE,GACpC,QAAY,KAAK,GAAG,IAAI,GACxB,GAAI,IAAI,WAAW,SAAW,IAAI,SAAS,SACzC,cAAkB,oBAAoB,KACtC,IAAI,WAAa,KAAK,MAAM,KAAK,GAAG,QAAQ,OAGhD,MAAO,UAGH,mBACJ,KAAO,kBAAiB,MACxB,SAAa,aAAa,MAC1B,GAAI,KAAK,GAAG,QAAQ,KAAK,OAAS,KAChC,KAAM,IAAI,OAAM,8BAA8B,SAEhD,SAAa,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,OAE7C,YAAK,GAAG,WAAW,KAAK,MACxB,KAAK,GAAG,WAAW,KAAK,UACxB,KAAK,GAAG,WAAW,KAAK,aACxB,KAAK,GAAG,WAAW,KAAK,YACjB,OCtWX,AAiCA,IAAM,kBAAoB,gCAjC1B,MAyCE,cACE,KAAK,SAAW,SAGH,eACb,MAAI,2BAA0B,UAAY,MACxC,2BAA0B,SAAW,GAAI,4BAEpC,0BAA0B,eAS5B,iCACL,OAAO,QAAU,KAAM,IAAM,yCAC7B,AAAI,OAAO,SAAS,oBAClB,QAAS,OAAO,MAAM,EAAG,OAAO,QAAQ,qBAE1C,OAAO,OAAO,OAAS,EAAG,IAAM,uCAChC,aAAiB,0BAA0B,cAC3C,OACI,SAAS,SAAS,SAAW,KAC7B,IAAM,2DACF,YACR,SAAS,SAAS,QAAU,cAGvB,oBACL,YAAgB,KAAK,cAAc,SAAS,QAC5C,GAAI,SAAW,KACb,KAAM,IAAI,OAAM,yCAAyC,WAE3D,MAAO,eAGF,cACL,MAAO,QAAO,KAAK,KAAK,cAAc,YAY1C,uBACE,GAAI,IAAI,QAAQ,qBAAuB,GACrC,KAAM,IAAI,OACN,6EAEG,0BAA0B,aAAa,KAAK,QAErD,MAAO,CACL,OAAQ,IAAI,MAAM,mBAAmB,GACrC,KAAM,IAAI,MAAM,mBAAmB,IAIvC,iEAEmB,IACjB,OACI,YAAc,QACd,IAAM,wCAAwC,cAElD,iBAAqB,iBAAiB,gBAAgB,WACtD,OACI,aAAa,OAAS,EACtB,IAAM,kEACF,cACR,OACI,aAAa,OAAS,EACtB,IAAM,yCAAyC,aAAa,wCACxB,cACxC,gBAAoB,aAAa,gBAEZ,iBAAiB,gBAAgB,SACtD,OACI,aAAa,OAAS,EACtB,IAAM,uEACK,YACf,OACI,aAAa,OAAS,EACtB,IAAM,yCAAyC,aAAa,6CACnB,YAC7C,gBAAoB,aAAa,gBAEZ,SAAS,WAAW,kBACtB,SAAS,WAAW,gBACpB,eAAiB,SAAS,WAAW,sBAEjC,KAAM,aAAY,OAKzC,AAAI,cAAgB,YAClB,KAAM,2BAA0B,WAAW,cACtC,YAAY,YAGnB,eAAmB,KAAM,aAAY,KAAK,gBAK1C,MAAI,eAAgB,CAAC,YACnB,KAAM,2BAA0B,WAAW,cACtC,YAAY,YAGZ,WAAW,mBAsCpB,4BACE,YAAgB,0BAA0B,iBACO,GACjD,iBAAqB,UACnB,cACI,KAAM,2BAA0B,WAAW,QAAQ,aACvD,eAAmB,YACjB,QAAY,OAAS,kBAAoB,KACzC,IAAI,KAAO,UAAU,OAGzB,MAAO,KAoCT,gCACE,kBAAsB,SAAS,aACf,0BAA0B,WAAW,cAAc,QACnE,MAAO,SAAQ,YAAY,cAAc,MAkD3C,4CAEE,iBAAqB,GACrB,MAAO,oBAAmB,UAAW,QAAS,cAiDhD,4CAEE,iBAAqB,GACrB,MAAO,oBAAmB,UAAW,QAAS,cChWhD,IAAA,sBA+BE,kBACE,MAAO,OAAM,KAAM,OAGrB,MACE,MAAO,aAAY,MAGrB,sBACE,GAAI,WAAa,SAAW,WAAa,OACvC,KAAM,IAAI,OACN,kDAAkD,YAExD,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAAI,cAElB,KAAK,YAAY,OAAO,MAEjC,uBACE,MAAO,IAAI,aAAY,UAAU,OAAO,SAI5C,GAAI,MAAM,IAAI,eACZ,MAAM,YAAY,UAAW,GAAI,kBAGjC,IACE,0BAA0B,gBACtB,oBAAoB,WAAY,GAAI,yCAK1C,IACE,0BAA0B,gBACtB,iBAAiB,WAAY,GAAI,uCCnEzC,AAqBO,IAAM,aAAe,CAE1B,YAAa,IAAc,+BCvB7B,mBA6CE,cAEE,KAAK,KAAe,gBAGpB,KAAK,YAAc,GAAI,MAAK,KAAK,YAGnC,yBACE,MAAI,OAAM,OAAO,OAAS,KACjB,MAAM,OAAO,MAAM,KAAM,cAGlC,CAAI,aAAe,MACjB,aAAc,aAAa,eAEtB,YAAY,KAAM,eAG3B,MACE,UAAa,QAAQ,SACrB,MAAO,OAAK,GAAK,IAAO,MAAK,GAAK,IAGpC,sBACE,GAAI,WAAa,SAAW,WAAa,OACvC,KAAM,IAAI,OACN,sDAAsD,YAE5D,MAAO,MAAK,YAAY,OAAO,MAEjC,uBACE,MAAI,OAAM,SAAW,EACZ,GAEF,GAAI,MAAK,KAAK,YAAY,UAAU,OAAO,SAItD,AAAI,MAAM,IAAI,YACZ,MAAM,YAAY,OAAQ,GAAI,eCrFhC,AA+CM,gBACF,YAA+B,kBAEjC,aAAQ,OAAS,UACjB,AAAK,mCAAmC,OACjC,GAAI,cAAmB,MAAO,MAAO,QCpD9C,AAuCA,eAAiC,SAC/B,OAAW,gBAAgB,EAAG,IAAK,QAGnC,GAAI,CAAC,AAAK,aAAa,OACrB,KAAM,IAAI,OAAM,mCAAmC,SAErD,GAAI,QAAU,UAAY,GAAG,QAAU,UACnC,QAAU,UAAY,GAAG,QAAU,SACrC,KAAM,IAAI,OAAM,yCAGlB,WAA2B,CAAC,EAAG,UACN,CAAC,OAE1B,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,SAAa,GAAG,CAAC,QC1DxB,AAwCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,QAAS,aACb,CAAC,EAAG,IAInC,MAAO,QAAO,UAAU,SAAU,QAG7B,UAAc,GAAG,CAAC,SCjDzB,AAgCM,gBAAkC,UAAgB,IACtD,QAAQ,IAAI,EAAE,SAAS,UCjCzB,AAqBA,kBAcA,IAAM,WAAuB,CAC3B,OACA,KACA,MACA,cAEF,aAAa,YCzCb,IAAA,qtBCAA,AA6BA,IAAM,yBAA2B,oCACG,2CACO,eAE3C,kBACE,MAAO,IAAI,SAAQ,SAAW,WAAW,UAAU,KAAK,GAlC1D,2BA6CE,4BACE,GAAI,CAAC,MAAM,QAAQ,cAGjB,KAAM,IAAI,OACN,uFAIN,AAAI,eAAe,WAAW,iBAAiB,aAC7C,gBAAiB,eAAe,MAAM,iBAAiB,WAAW,SAEpE,AAAI,iBAAkB,MAAQ,eAAe,SAAW,IACtD,gBAAiB,0BAGnB,KAAK,sBAAwB,eAAiB,4BAC9C,KAAK,mBACD,eAAiB,wCAGjB,sBACJ,GAAI,MAAQ,WAAc,YACxB,KAAM,IAAI,OACN,2FAGN,eAAmB,OAAO,IAAI,gBAAgB,GAAI,MAC9C,CAAC,eAAe,YAAa,CAAC,KAAM,8BAExC,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,yFAEC,CACL,oBAA+C,CAAC,CAC9C,MAAO,CAAC,KAAO,KAAK,oBACpB,QAAS,eAAe,6CAEwB,CAChD,cAAe,eAAe,cAC9B,OAAQ,eAAe,OACvB,YAAa,eAAe,YAC5B,YAAa,eAAe,YAC5B,iBAEF,AAAI,eAAe,WAAa,MAC9B,gCAA+B,UAAY,eAAe,WAE5D,AAAI,eAAe,qBAAuB,MACxC,gCAA+B,oBAC3B,eAAe,qBAErB,AAAI,eAAe,kBAAoB,MACrC,gCAA+B,iBAC3B,eAAe,kBAErB,sCACI,OAAO,IAAI,gBAAgB,GAAI,MAC3B,CAAC,KAAK,UAAU,iCAChB,CAAC,KAAM,iCAII,KAAK,YAAc,KAAO,SAAS,cAAc,KACvB,KAAK,WAQlD,GAPA,WAAW,SAAW,KAAK,sBAC3B,WAAW,KAAO,kCAIlB,KAAM,OAAM,IAAM,WAAW,cAAc,GAAI,YAAW,WAEtD,eAAe,YAAc,MAC/B,qBAAyB,KAAK,kBAAoB,KAC9C,SAAS,cAAc,KACvB,KAAK,iBACT,iBAAiB,SAAW,KAAK,mBACjC,iBAAiB,KAAO,WACxB,KAAM,OACF,IAAM,iBAAiB,cAAc,GAAI,YAAW,WAG1D,MAAO,CAAC,mBAAoB,6BAA6B,oBArF7C,iBAAA,WAAa,eA3C/B,uBAwIE,mBACE,GAAI,OAAS,MAAQ,MAAM,OAAS,EAClC,KAAM,IAAI,OACN,wEACgB,SAEtB,KAAK,MAAQ,WAGT,QACJ,aAAiB,KAAK,MAAM,eACR,KAAK,MAAM,MAAM,GAErC,MAAO,IAAI,SAAwB,mBACjC,eAAmB,GAAI,YACvB,WAAW,OAAS,QAElB,cAAkB,KAAK,MAAO,MAAM,OAAe,sBAC7B,UAAU,cAChC,GAAI,eAAiB,MACnB,OAAO,GAAI,OACP,4CAA4C,SAAS,SACzD,OAGF,AAAI,YAAY,SAAW,GACzB,QAAQ,CAAC,gBAGX,oBAAwB,UAAU,gBAClC,GAAI,iBAAmB,MACrB,OAAO,GAAI,OACP,6CAA6C,SAAS,SAC1D,OAGF,eACA,IACE,WACI,KAAK,4BAA4B,gBAAiB,wBAEtD,OAAO,KACP,OAGF,gBAA4C,SACpB,kBACc,GACtC,gBAAgB,QAAQ,eACtB,aAAa,MAAM,QAAQ,OACzB,MAAM,KAAK,MACX,eAAe,KAAK,QAEtB,YAAY,KAAK,GAAG,aAAa,WAGnC,gBAAgB,QAAQ,eACtB,aAAa,MAAM,QAAQ,OACzB,qBAAyB,GAAI,YAC7B,iBAAiB,OAAS,SAExB,eAAoB,OAAM,OAAe,aAC3B,MAAM,QAAQ,MAE5B,GADA,eAAe,OAAS,WACpB,eAAe,QAAQ,QAAU,IACnC,WAA+B,CAC7B,cACA,YACA,WAAY,wBAAwB,gBACpC,OAAQ,UAAU,OAClB,YAAa,UAAU,YACvB,YAAa,UAAU,aAEzB,AAAI,UAAU,WAAa,MACzB,QAAO,UAAY,UAAU,WAE/B,AAAI,UAAU,qBAAuB,MACnC,QAAO,oBAAsB,UAAU,qBAEzC,AAAI,UAAU,kBAAoB,MAChC,QAAO,iBAAmB,UAAU,kBAEtC,QAAQ,UAGZ,iBAAiB,QAAU,OACvB,OAAO,6CAA6C,UACxD,iBAAiB,kBAAkB,WAAW,YAIpD,WAAW,QAAU,OAAS,OAC1B,sEACc,SAAS,6EAE3B,WAAW,WAAW,YAOlB,4CAEN,cAA4B,aACV,MAAM,IAAI,MAAQ,SAAS,KAAK,kBACP,GAC3C,gBAAoB,UAClB,MAAM,MAAM,QAAQ,OAClB,iBAAqB,SAAS,MAC9B,GAAI,UAAU,QAAQ,gBAAkB,GACtC,KAAM,IAAI,OACN,uDACI,iBAGV,GADA,UAAU,KAAK,cACX,UAAU,QAAQ,gBAAkB,GACtC,KAAM,IAAI,OACN,8BAA8B,kCAElC,WAAW,MAAQ,MAAM,UAAU,QAAQ,iBAKjD,GAAI,UAAU,SAAW,MAAM,OAC7B,KAAM,IAAI,OACN,wDACI,UAAU,oDACV,MAAM,YAEhB,MAAO,qCAIqC,KACzC,MAAM,QAAQ,eAGb,EAAC,MAAM,QAAQ,MAAQ,IAAI,WAAW,iBAAiB,aAClD,iBAAiB,IAAI,MAAM,iBAAiB,WAAW,SAHzD,KASX,iBAAiB,mBAAmB,wBAyC9B,yCAA4C,SAChD,MAAO,IAAI,kBAAiB,gBA2CxB,6BACJ,MAAO,IAAI,cAAa,OChX1B,AA6BM,iCACF,+CAEF,cAAc,UACd,cAAgB,eAAiB,KAAO,EAAI,cAC5C,YAAc,aAAe,KAAO,EAAI,YACxC,cAAc,cAAe,aAC7B,oBAAsB,kBAEE,SACtB,SAAQ,KAAK,QACX,aAAiB,cACb,GAAE,gBAAkB,SAAS,OAAU,aAAc,eAEzD,kBAAW,UACJ,QAEF,SAGT,kCACE,OACI,WAAY,MAAQ,MAAM,QAAQ,YAAa,UAAS,OAAS,EACjE,IAAM,uCAGZ,oDACE,OACI,gBAAiB,GAAK,gBAAiB,EACvC,IAAM,oEACmB,kBAC7B,OACI,cAAe,GAAK,cAAe,EACnC,IAAM,kEACiB,gBAC3B,OACI,cAAe,eACf,IAAM,yEACmB,kCAClB,gBAGb,MAAO,SAAQ,IAAI,SAAS,IAAI,kBCvElC,AAoCA,wCACI,uBACF,AAAI,aAAe,MACjB,aAAc,IAGhB,cAAkB,YAAY,WAAa,KAAO,MAAM,SAAS,MACf,YAAY,mBAG7C,UAAU,IACvB,UACI,UAAU,SAAU,YAAY,YAAa,CAAC,SAAU,yBAErC,mBACF,aAEP,YAAY,YAAc,KACxC,KAAM,SAAQ,IAAI,UAClB,KAAM,yBACF,SAAU,YAAY,WAAY,mBAClC,iCAEe,UAAU,IAAI,UAAY,SAAS,mCAE9B,qBACF,UAEV,YAAY,YAAc,KACtC,KAAM,SAAQ,IAAI,gBAClB,KAAM,yBACF,eAAgB,YAAY,WAAY,oBACxC,mBACR,MAAO,SAYT,mDACsD,4BASpD,iBAAqB,WACjB,yBAAyB,UAAW,CAAC,2BACrB,qBAAqB,cAEzC,MAAO,cAAY,SAAU,eAAgB,aA2BzC,oDAIJ,MAAO,+BACsD,kBAI3D,2BAA+B,SAAS,IAAI,IAAM,wBAM9C,gBAEA,aAAe,KAAO,YAAY,IAAI,IAAM,IAAS,0BAChB,GAwCzC,GAvCA,SAAS,QAAQ,mCACf,gBAAkB,EAClB,oBAAoB,QAAQ,QAAQ,eAClC,aAAkB,gBAAkB,cAChC,aAAa,aAAa,MAC1B,aAAa,mBAEI,qBAAqB,UACtC,AAAK,cAAc,aAAa,mCAEA,KAClC,uBAAuB,YAAc,GACrC,AAAI,oBAAoB,aAAe,MACrC,qBAAoB,YAAc,IAGpC,oBAAoB,YAAY,KAAK,CACnC,cAAe,aACf,YACA,UAAW,gBAIf,AAAI,aAAe,KACjB,YAAY,QAAQ,2BAClB,AAAI,aAAe,aAAa,MAC9B,+BACA,aAAa,aAAe,MAIhC,8BAGF,uBAAuB,KAAK,aAAa,MACzC,aAAe,iBAIf,CAAC,aAAa,MAAM,OAAS,QAC/B,oBAAwB,YAAY,OAAO,OAAU,CAAC,aAAa,IACnE,KAAM,IAAI,OACN,kDACG,gBAAgB,KAAK;wCAErB,uBAAuB,KAAK,UAKrC,wBACI,uBAAuB,OAAO,6BAC5B,CAAI,aACF,YAAY,KAAK,GAEZ,aACN,cAEqB,GAC5B,oBAAoB,QAAQ,IAC1B,SAAS,GAAG,MAAM,QAAQ,WACxB,aAAiB,eACZ,CAAC,eAAe,SAAS,KAAa,GAAN,KAAY,SACjD,UAAU,KAAK,cAGnB,YAAgB,KAAM,sBAAqB,4BAEF,qBACjB,EACxB,2BAAoB,QAAQ,IAC1B,eAAmB,SAAS,GAAG,MAAM,kBAEpB,EACjB,WAAa,EAAG,GAAI,WAAY,KAC9B,YAAc,QAAQ,kBAAoB,IAAG,WAI/C,gBAAoB,GAAI,aAAY,4BACZ,GAAI,YAAW,+BACf,EACxB,WAAa,EAAG,GAAI,WAAY,MAC9B,YAAe,GAAI,YAAW,QAAQ,kBAAoB,KAC1D,gBAAgB,IAAI,QAAQ,mBAC5B,mBAAqB,QAAO,WAG9B,mBAAuB,oBAAoB,GAC3C,eAAe,QAAQ,eACrB,eAAmB,YAAY,MAC3B,aAAa,YACb,aAAa,YAAc,aAAa,2BAExC,cAAc,WAAY,CAAC,aAAa,gBAC5C,eAAmB,iBACjB,iBAAiB,MAAQ,gBAAgB,QAI7C,mBAAqB,aAGhB,kBCpPX,AA+BA,IAAM,uBAAyB,qCACb,+BAhClB,MA+CE,8BAgCE,GAvCO,KAAA,eAAiB,OAQxB,AAAI,aAAe,MACjB,aAAc,IAEhB,KAAK,iBAAmB,YAAY,iBACpC,KAAK,WAAa,YAAY,WAC9B,KAAK,mBAAqB,YAAY,mBAEtC,AAAI,YAAY,WAAa,KAC3B,QACI,MAAO,aAAY,WAAc,WACjC,IAAM,+HAGV,KAAK,MAAQ,YAAY,WAEzB,KAAK,MAAQ,MAAM,SAAS,MAG9B,OACI,MAAQ,MAAQ,KAAK,OAAS,EAC9B,IAAM,2DAGV,AAAI,MAAM,QAAQ,OAChB,OACI,KAAK,SAAW,EAChB,IAAM,iEACmB,KAAK,YAEpC,KAAK,KAAO,KAER,YAAY,aAAe,MAC3B,YAAY,YAAY,MAAQ,KAClC,KAAM,IAAI,OACN,sEAEN,KAAK,YAAc,YAAY,aAAe,QAG1C,sBACJ,GAAI,eAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,2FAIN,UAAa,OAAO,OAAO,CAAC,OAAQ,KAAK,gBAAiB,KAAK,aAC/D,MAAK,KAAO,GAAI,UAEhB,oBAA+C,CAAC,CAC9C,MAAO,CAAC,uBACR,QAAS,eAAe,6CAEwB,CAChD,cAAe,eAAe,cAC9B,OAAQ,eAAe,OACvB,YAAa,eAAe,YAC5B,YAAa,eAAe,YAC5B,iBAEF,AAAI,eAAe,WAAa,MAC9B,gCAA+B,UAAY,eAAe,WAE5D,AAAI,eAAe,qBAAuB,MACxC,gCAA+B,oBAC3B,eAAe,qBAErB,AAAI,eAAe,kBAAoB,MACrC,gCAA+B,iBAC3B,eAAe,kBAGrB,MAAK,KAAK,OACN,aACA,GAAI,MACA,CAAC,KAAK,UAAU,iCAChB,CAAC,KAAM,YACX,cAEJ,AAAI,eAAe,YAAc,MAC/B,MAAK,KAAK,OACN,oBACA,GAAI,MAAK,CAAC,eAAe,YAAa,CAAC,KAAM,yBAC7C,qBAGN,aAAiB,KAAM,MAAK,MAAM,KAAK,KAAM,OAE7C,GAAI,SAAS,GACX,MAAO,CACL,mBAAoB,6BAA6B,gBACjD,UAAW,CAAC,WAGd,KAAM,IAAI,OACN,gEACG,SAAS,gBAYd,QACJ,uBAA2B,KAAM,MAAK,MAAM,KAAK,KAAM,KAAK,aAE5D,GAAI,CAAC,mBAAmB,GACtB,KAAM,IAAI,OACN,cAAc,KAAK,gCAChB,mBAAmB,iFAG5B,gBACA,IACE,YAAc,KAAM,oBAAmB,gBAEvC,YAAc,+CAA+C,KAAK,QAGlE,KAAI,MAAK,KAAK,SAAS,OACrB,SAAW,+UAOX,SAAW,uEAGP,GAAI,OAAM,SAElB,kBAAsB,YAAY,8BACV,YAAY,4BAChB,YAAY,wBACZ,YAAY,mBACjB,YAAY,iBACT,YAAY,8BACF,YAAY,oBAGxC,GAAI,eAAiB,MAAQ,iBAAmB,KAC9C,KAAM,IAAI,OACN,2BAA2B,KAAK,iEAItC,2BAEA,GAAI,iBAAmB,MACrB,YAAgB,KAAM,MAAK,YAAY,iBACvC,CAAC,YAAa,YAAc,QAG9B,cAAkC,CAChC,cACA,YACA,WACA,YACA,YACA,QAGF,AAAI,WAAa,MACf,WAAU,UAAY,WAExB,AAAI,qBAAuB,MACzB,WAAU,oBAAsB,qBAGlC,gBAAoB,YAAY,iBAChC,MAAI,cACF,WAAU,iBAAmB,aAGxB,eAGK,8BAEZ,eAAmB,MAAM,QAAQ,KAAK,MAAQ,KAAK,KAAK,GAAK,KAAK,qBACzC,SAAS,uBACf,KAAK,kBAAoB,mBAExB,GACpB,gBAAoB,iBAClB,YAAY,KAAK,GAAG,MAAM,SAG5B,cAA4B,eACgB,GAC5C,uBAA2B,iBACzB,eAAmB,cAAa,MAC9B,AAAI,KAAK,oBAAsB,KAC7B,YAAY,KAAK,KAAK,mBAAmB,OAEzC,UAAU,KAAK,WAAa,KAAO,QAKzC,AAAI,KAAK,oBACP,UAAU,KAAK,GAAG,KAAM,SAAQ,IAAI,cAGtC,YAAgB,KAAM,0BAAyB,UAAW,CACxD,YAAa,KAAK,YAClB,UAAW,KAAK,MAChB,WAAY,KAAK,aAEnB,MAAO,CAAC,YAAa,wBAAwB,YA7N/B,YAAA,iBAAmB,eA4O/B,uBACJ,cAAkB,IAAI,YAAY,qBACV,IAAI,YAAY,YACzB,IAAI,UAAU,EAAG,kBAE5B,gBAAkB,UAAY,IAAI,UAAU,iBAAmB,GACnE,MAAO,CAAC,OAAS,IAAK,QAGlB,2BACJ,MAAO,KAAI,MAAM,YAAY,mBAAqB,KAG7C,eACH,oBACE,GAAI,MAAO,QAAU,aAChB,cAAe,MAAQ,YAAY,WAAa,MAInD,MAAO,MACF,CACL,WAAa,GAMb,GALA,AAAI,MAAM,QAAQ,KAChB,OAAS,IAAI,MAAM,SAAW,aAAa,UAE3C,OAAS,aAAa,KAEpB,OACF,MAAO,MAAK,IAAK,aAGrB,MAAO,OAEb,iBAAiB,mBAAmB,YACpC,iBAAiB,mBAAmB,YAwE9B,gCACJ,MAAO,IAAI,aAAY,KAAM,aAQzB,8CAEJ,MAAO,MAAK,KAAM,aC5YpB,IAAA,wBAwBE,4BAA6B,KAAA,eAAA,oBAEvB,QACJ,MAAO,MAAK,kCA3BhB,MAgCE,yBACqB,KAAA,YAAA,iBAGf,sBACJ,MAAO,MAAK,YAAY,kBAyBtB,0EAGJ,GAAI,UAAU,SAAW,GACvB,qBACK,eAAkC,eAAiB,MACnD,eAAkC,aAAe,KACtD,MAAI,kBACK,GAAI,mBAAkB,gBAI7B,SAAQ,KACJ,yNAIG,GAAI,mBAAkB,CAAC,cAAe,sBAK/C,gBAAQ,KACJ,yNAIG,GAAI,mBAAkB,CAC3B,cAAe,eACf,YACA,WACA,iBAoBA,sCAGJ,MAAO,IAAI,kBAAiB,aCpH9B,ACAA,IAAA,6ECAA,AA2CA,iBACI,eAAyD,cAC5C,IACf,OAAS,gBAAgB,EAAG,IAAK,aACxB,gBAAgB,EAAG,IAAK,UACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAAkC,CAAC,EAAG,GAAI,EAAG,UACb,CAAC,WAAY,YAE7C,MAAO,QAAO,UACV,YAAa,OAAgC,OAG5C,WAAe,GAAG,CAAC,UCzD1B,AA8CA,iBACI,sBAAqD,WAC1C,GACb,GAAI,MAAQ,EACV,KAAM,IAAI,OAAM,iDAAiD,SAEnE,aAAiB,gBAAgB,QAAS,UAAW,SAAU,gBAElC,CAAC,QAAS,gBACZ,CAAC,MAAO,QAAS,UAE5C,MAAO,QAAO,UACV,OAAQ,OACR,OAGC,WAAe,GAAG,CAAC,UC9D1B,AA+CA,oBAAsC,QACpC,OAAW,gBAAgB,EAAG,IAAK,aAgBnC,GAdA,AAAI,MAAQ,MACV,MAAO,GAAG,MAAM,IAAI,OAAU,GAAG,WAEnC,AAAK,OACD,GAAG,OAAS,KAAK,OACjB,IAAM,qCAAqC,GAAG,kCACb,SACrC,KAAK,QAAQ,OACX,AAAK,OACD,MAAQ,GAAK,KAAO,GAAG,KACvB,IAAM,+CAA+C,GAAG,KAAO,aAC/C,UAGlB,GAAG,MAAQ,EACb,MAAO,IAAG,QAGZ,WAAgC,CAAC,EAAG,UACN,CAAC,MAE/B,MAAO,QAAO,UACV,UAAW,OAAgC,OAG1C,cAAkB,GAAG,CAAC,aC3E7B,AAyDM,0BACF,+BAEF,YAAgB,gBAAgB,OAAQ,SAAU,gCAE9C,gBAAgB,YAAa,cAAe,mBAEhD,AAAK,OACD,YAAc,MAAQ,WAAa,GAAK,OAAO,UAAU,YACzD,IAAM,+DACS,cACnB,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,gDAAgD,QAAQ,QAClE,AAAK,OACD,aAAa,OAAS,EACtB,IAAM,qDACS,aAAa,QAChC,AAAK,OACD,QAAQ,MAAM,KAAO,aAAa,MAAM,GACxC,IAAM,uCACC,QAAQ,MAAM,UAAU,aAAa,MAAM,uEAEtD,AAAK,OACD,WAAa,GAAK,OAAO,UAAU,YACnC,IAAM,4DACC,cAIX,iBAAqB,OAAO,KAAK,QAAS,SAAU,8BAEhD,OAAO,KAAK,aAAc,SAAU,0BACR,UAAU,sBAChB,OAAO,cAAe,mBAChD,MAAO,MAAK,QAAS,SAGhB,oBAAwB,GAAG,CAAC,mBC/FnC,ACAA,IAAA,+FCAA,AA+CM,kBACF,oBAGF,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,mDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,oEAEN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,YAAW,OAAQ,MAAO,cAAe,OChElD,AA6BA,IAAI,oBAyBJ,wCAGkB,GAEhB,GAAI,YAAc,EAChB,KAAM,IAAI,OACN,kEAEN,GAAI,QAAU,KACZ,KAAM,IAAI,OAAM,4DAElB,gBAAkB,eACA,WACJ,WACA,gBACK,GACnB,GAAK,OAAqB,eAAgB,YACxC,YAAc,WAEZ,MAAQ,YAAe,aAAe,iBAAkB,WAC1D,YAAc,WAEZ,MAAQ,mBAAsB,aAC9B,iBAAkB,kBACpB,QAAU,WAER,MAAQ,mBAAsB,aAC9B,iBAAkB,kBACpB,QAAU,WAEA,OAAe,YAAc,KACvC,aAAe,OAEf,MAAM,IAAI,OACN,qPAIY,OAAc,YAAY,QAE5C,GAAI,SACF,kCAAsC,EACtC,GAAI,SACC,OAA4B,WACzB,8BACN,KAAM,IAAI,OACN,yGAMR,WAAe,UAAU,WAAY,OAAO,aAC5C,GAAI,QAAU,MACZ,WAAiC,CAAC,cACH,CAAC,aAChC,MAAO,QAAO,UACV,WAAY,OACZ,OAGN,kBAAwB,QACpB,CACG,OAA4B,WAC5B,OAA4B,aAE/B,CAAC,OAAO,MAAO,OAAO,aAG1B,AAAI,aACF,KAEK,OAAe,WAAW,MAAM,aAAa,EAAG,EAAG,MAAO,QAAQ,KAClE,AAAI,aAAe,YACxB,KAAQ,OAAiC,KACpC,AAAI,UAAW,UACpB,CAAI,qBAAuB,MACzB,qBAAsB,SAAS,cAAc,UAAU,WAAW,OAEpE,oBAAoB,OAAO,MAAQ,MACnC,oBAAoB,OAAO,OAAS,OACpC,oBAAoB,UAChB,OAA4B,EAAG,EAAG,MAAO,QAC7C,KAAO,oBAAoB,aAAa,EAAG,EAAG,MAAO,QAAQ,MAE/D,WACA,GAAI,cAAgB,EAClB,OAAS,GAAI,YAAW,WAExB,cAAkB,MAAQ,OAC1B,OAAS,GAAI,YAAW,UAAY,aACpC,UAAa,EAAG,EAAI,UAAW,IAC7B,gBAAmB,EAAG,QAAU,YAAa,EAAE,QAC7C,OAAO,EAAI,YAAc,SAAW,KAAK,EAAI,EAAI,SAIvD,aAA2C,CAAC,OAAQ,MAAO,aAC3D,MAAO,UAAS,OAAQ,SAAU,SAsBpC,oCAGE,SAAW,gBAAgB,IAAK,MAAO,YACvC,GAAI,CAAE,eAAe,UAEnB,sBAA0B,KAC1B,KAAO,KAAK,kBAAmB,SAC/B,kBAAkB,UAEpB,GAAI,KAAK,OAAS,GAAK,KAAK,OAAS,EACnC,KAAM,IAAI,OACN,wDAAwD,KAAK,SAEnE,kBAAwB,KAAK,MAAM,MAAM,EAAG,SAC9B,KAAK,OAAS,EAAI,EAAI,KAAK,MAAM,GAE/C,GAAI,MAAQ,GAAK,QAAU,EACzB,KAAM,IAAI,OACN,0DACqB,SAG3B,GAAI,KAAK,QAAU,WAAa,KAAK,QAAU,QAC7C,KAAM,IAAI,OACN,kCAAkC,KAAK,+CAI7C,SAAa,KAAM,MAAK,kBACL,KAAK,QAAU,UAAY,IAAM,QACtC,GAAI,mBAAkB,MAAQ,OAAS,GAErD,UAAa,EAAG,EAAI,OAAS,MAAO,EAAE,GACpC,SAAa,CAAC,EAAG,EAAG,EAAG,KAEvB,UAAa,EAAG,EAAI,MAAO,KACzB,UAAc,KAAK,EAAI,MAAQ,GAE/B,GAAI,KAAK,QAAU,WACjB,GAAI,MAAQ,GAAK,MAAQ,EACvB,KAAM,IAAI,OACN,mFACiC,kBAE9B,KAAK,QAAU,SACpB,OAAQ,GAAK,MAAQ,KACvB,KAAM,IAAI,OACN,mFACmC,UAI3C,AAAI,QAAU,EACZ,MAAK,GAAK,MAAQ,WAClB,KAAK,GAAK,MAAQ,WAClB,KAAK,GAAK,MAAQ,YAElB,KAAK,GAAK,MAAQ,WAItB,MAAU,EAAI,EACd,MAAM,EAAI,GAAK,KAAK,MAAM,KAAK,IAC/B,MAAM,EAAI,GAAK,KAAK,MAAM,KAAK,IAC/B,MAAM,EAAI,GAAK,KAAK,MAAM,KAAK,IAC/B,MAAM,EAAI,GAAK,KAAK,MAAM,KAAK,IAGjC,GAAI,QAAU,MACZ,OAAO,MAAQ,MACf,OAAO,OAAS,OAChB,QAAY,OAAO,WAAW,gBACZ,GAAI,WAAU,MAAO,MAAO,QAC9C,IAAI,aAAa,UAAW,EAAG,GAEjC,MAAI,QAAS,KACX,KAAK,UAEA,MAGF,eAAmB,GAAG,CAAC,cChP9B,uGCUM,4BAA6B,mBAEjC,eAAmB,UAAO,MAAM,mBACZ,QAAQ,MAAM,OAClC,GAAI,WAAa,EACf,KAAM,IAAI,OACN,4EACqB,eAE3B,GAAI,YAAc,EAChB,KAAM,IAAI,OACN,8EACqB,gBAE3B,GAAI,QAAQ,QAAU,QACpB,KAAM,IAAI,OACN,yEACsB,QAAQ,UAEpC,GAAI,QAAQ,MAAM,YAAc,GAAK,WACnC,KAAM,IAAI,OACN,iEACG,QAAQ,MAAM,YAAc,UAAU,cAG/C,GAAI,cAAc,UAAO,SAAW,EAClC,KAAM,IAAI,OACN,mEACiB,UAAO,UAG9B,iBAAqB,QAAQ,gBACX,aAAa,aAAa,OAAS,WAIvC,EACd,UAAa,EAAG,EAAI,aAAa,OAAS,EAAG,EAAE,EAC7C,SAAW,aAAa,GAG1B,eAAmB,UAAO,kBAEN,aAAa,QACjC,YAAY,MAEZ,cAAgB,EAChB,UAAa,UAAW,EAAI,WAAY,EAAE,EACxC,WAAa,WAAW,GACxB,YAAY,KAAK,WAAW,IAG9B,YACI,CAAC,GAAG,eAAe,UAAO,OAAO,IAAI,QAAU,OAAS,WACvD,GAAG,MAAM,EAAG,WAEjB,MAAO,CAAC,YAAa,QAAS,UAAW,SCjE3C,IAAA,+KCQM,6BACF,uBACF,aAAkB,QAAQ,KAAO,EAAK,QAAQ,MAAM,QAAQ,KAAO,GAAK,WACtD,QAAQ,KAAO,EAAK,QAAQ,KAAO,EAAI,aAEtC,6FACyB,QAAQ,yBAC5B,QAAQ,iBAAiB,oBAC9B,2BAA2B,YAE9C,GAAI,QAAQ,KAAO,SACjB,KAAM,IAAI,OAAM,WAAa,kBAAkB,cAEjD,GAAI,MAAM,OAAS,SAAY,SAAQ,KAAO,UAC5C,KAAM,IAAI,OACN,WACA,0BAA0B,SAAY,SAAQ,KAAO,aAE3D,GAAI,QAAQ,OAAS,SAAW,MAAM,OAAS,SAC7C,KAAM,IAAI,OACN,WAAa,mBAAmB,SAAW,MAAM,OAAS,YAEhE,UAAa,EAAG,EAAI,SAAU,EAAE,EAC9B,GAAI,QAAQ,MAAM,KAAO,QAAQ,MAAM,GACrC,KAAM,IAAI,OACN,WACA,kBAAkB,OAAO,QAAQ,MAAM,wBAAwB,OAC3D,QAAQ,MAAM,QAG1B,UAAa,EAAG,EAAI,QAAQ,KAAO,SAAU,EAAE,EAC7C,GAAI,QAAQ,MAAM,EAAI,YAAc,MAAM,EAAI,UAC5C,KAAM,IAAI,OACN,WACA,kBAAkB,EAAI,cAClB,QAAQ,MAAM,EAAI,uBAAuB,EAAI,cAC7C,MAAM,EAAI,cAmBlB,8CAEJ,GAAI,QAAQ,KAAO,EACjB,KAAM,IAAI,OACN,+EACqB,QAAQ,SAEnC,GAAI,QAAQ,KAAO,EACjB,KAAM,IAAI,OACN,+EACqB,QAAQ,SAEnC,GAAI,QAAQ,QAAU,QACpB,KAAM,IAAI,OAAM,0DACZ,QAAQ,SAEd,GAAI,MAAM,OAAS,EACjB,KAAM,IAAI,OACN,6DAA6D,SAGnE,GAAI,MAAM,SAAW,GACnB,GAAI,QAAQ,OAAS,EACnB,KAAM,IAAI,OAAM,sDACZ,QAAQ,SAEd,GAAI,QAAQ,OAAS,EACnB,KAAM,IAAI,OAAM,sDACZ,QAAQ,SAIhB,oBAAoB,MAAO,QAAS,SAYhC,gDAIJ,gBAAoB,QAAQ,MAAM,iBACf,YAAc,EAAK,QAAQ,MAAM,YAAc,GAAK,UAKvD,MAAM,iBAEN,EAChB,UAAa,UAAW,EAAI,QAAS,EAAE,EACrC,WAAa,MAAM,GAGrB,iBAAsB,UAAY,EAAK,EAAI,qBACxB,cAAc,QAAQ,OAAS,qBAElC,CAAC,GAAG,eAAe,MAAM,MAAM,EAAG,YAAa,cAC5C,cAAc,OACjC,MAAO,CAAC,UAAW,WAAY,UAAW,QAAS,YCnJrD,IAAA,6kBCAA,AA8BM,2BACF,mBACF,cAAkB,OAAM,MAAM,OAC9B,AAAK,OACD,YAAc,MAAM,OACpB,IAAM,iBAAiB,+BAA+B,2CAClB,eACxC,AAAK,OACD,YAAc,KAAK,OACnB,IAAM,iBAAiB,8BAA8B,0CACjB,eAExC,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,AAAK,OACD,MAAM,GAAK,KAAK,IAAM,OAAM,MAAM,GAClC,IAAM,iBAAiB,qBAAqB,aAAa,OACjD,MAAM,GAAK,KAAK,kCAAkC,OAChD,OAAM,MAAM,OAKxB,0BACJ,SAAa,QACF,EACX,KAAO,KAAO,GACZ,AAAI,KAAO,GACT,KAAK,KAAK,MAEZ,MAAQ,EACR,OAEF,MAAO,MAIH,4CAEJ,SAAa,GACb,aAAgB,EAAG,KAAO,MAAM,OAAQ,OACtC,KAAK,MAAQ,KAAK,KAAM,KAAI,MAAQ,MAAM,OAAS,QAAQ,OAE7D,MAAO,MAKH,wFAGJ,eAAmB,CAAC,GAAG,SACvB,UAAa,WAAW,OAAQ,EAAI,WAAW,OAAQ,IACrD,WAAW,KAAK,GAElB,UAAa,EAAG,EAAI,cAAe,IACjC,AAAI,IAAM,EACR,WAAW,wBAA0B,EAErC,YAAW,OACP,uBAAwB,EACxB,GACJ,WAAW,OAGf,MAAO,YAGT,8EAGE,MAAI,iBAAkB,uBACb,eAGF,eAAkB,eAAgB,GAG3C,6DACE,eAAmB,GACnB,UAAa,EAAG,EAAI,cAAe,IACjC,WAAW,KAAK,uBAAyB,GAE3C,MAAO,YAIH,yHAKJ,cAAkB,WAAW,uBACP,GAAI,OAAM,yBACZ,GAAI,OAAM,6BACN,GAAI,OAAM,WAClC,GAAI,aAAa,QAAU,oBAAsB,GAC/C,cAAkB,aAAa,iBAIT,oBAAsB,EAC5C,gBAAkB,2BACd,UAAW,UAAW,cAAe,MAAO,YAChD,cAAgB,0BACZ,QAAS,UAAW,cAAe,IAAK,YAC5C,kBACI,sBAAsB,QAAS,UAAW,cAAe,gBAE7D,cAAgB,EAAG,KAAO,UAAW,OACnC,gBAAgB,MAAQ,aACpB,UAAW,MAAO,QAAS,WAAY,KAAM,cACjD,cAAc,MACV,YAAY,QAAS,IAAK,QAAS,WAAY,KAAM,cACzD,kBAAkB,MAAQ,eAAe,QAAS,KAAM,cAI5D,MAAO,CACL,MAAO,gBACP,IAAK,cACL,QAAS,mBAMP,6GAGJ,eAAmB,CAAC,GAAG,uBACJ,cAAc,cAAe,wBAEhD,aAAgB,EAAG,KAAO,WAAW,OAAQ,OAC3C,GAAI,WAAW,QAAQ,MAAQ,GAC7B,WAAW,MAAQ,OAEnB,iBACI,gBAAgB,uBAAwB,cAAe,oBACvC,cAAc,cAClC,AAAI,UAAY,GAAK,cACnB,eAAgB,GAGlB,WAAW,MAAQ,cAGvB,MAAO,YAKH,wGAGJ,eAAmB,CAAC,GAAG,uBACJ,cAAc,cAAe,wBAEhD,aAAgB,EAAG,KAAO,WAAW,OAAQ,OAC3C,GAAI,WAAW,QAAQ,MAAQ,GAC7B,WAAW,MAAQ,OAAO,sBAE1B,iBACI,gBAAgB,uBAAwB,cAAe,oBACvC,YAAY,cAChC,AAAI,QAAU,GAAK,cACjB,eAAgB,OAAO,kBAEzB,WAAW,MAAQ,cAIvB,UAAa,EAAG,EAAI,WAAW,OAAQ,KAErC,aAAiB,WAAW,GAC5B,AAAI,WAAW,GAAK,GAClB,YAAW,IAAM,UAEnB,WAAW,GAAK,AAAK,MAAM,EAAG,WAAW,GAAI,WAAW,IAE1D,MAAO,YAGH,mDAEJ,WAAa,QAAQ,MACrB,MAAI,cAAgB,GAAK,MAAS,QAAU,OAC1C,QAAS,GAGJ,OAGH,mFAIJ,UAAY,aAAa,aACV,QAAQ,OAAS,EAIhC,AAAI,WAAY,GAAK,MAAQ,aAAe,GAAK,MAAQ,OAAS,OAChE,CAAI,OAAS,EAIX,MAAQ,OAAO,iBAGf,MAAQ,OAAO,kBAKnB,aAAiB,WAAW,MAC5B,MAAI,OAAQ,GACV,QAAS,UAIX,MAAQ,AAAK,MAAM,EAAG,MAAO,SAAW,GAEjC,MAGH,+EAIJ,SAAW,YAAY,aACR,QAAQ,OAAS,EAIhC,AAAI,SAAW,GAAK,MAAS,aAAgB,GAAK,MAAS,MAAQ,OACjE,CAAI,OAAS,EAGX,KAAO,OAAO,iBAGd,KAAO,OAAO,kBAKlB,aAAiB,WAAW,MAC5B,MAAI,MAAO,GACT,OAAQ,UAMV,AAAI,OAAS,EAEX,KAAO,AAAK,MAAM,EAAG,KAAM,UAG3B,KAAO,AAAK,MAAM,GAAI,KAAM,SAAW,GAGlC,KAOH,4CAGJ,oBAAsB,KAAK,OAC3B,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,GAAI,KAAK,GAAK,GACZ,gBAAkB,EAClB,MAIJ,UAAa,gBAAkB,EAAG,EAAI,KAAK,OAAQ,IACjD,GAAI,MAAM,GAAK,GAAK,KAAK,KAAO,MAAM,GACpC,MAAO,GAGX,MAAO,GAGH,0CACJ,eAAiB,MAAM,OAAS,EAAI,MAAM,MAAM,OAAS,GAAK,EAC9D,UAAa,EAAG,EAAI,MAAM,OAAS,EAAG,IACpC,YAAc,MAAM,GAAK,QAAQ,GAEnC,MAAO,YAGH,wCAGJ,iBACc,EAAE,MAAM,OACtB,AAAI,MAAO,QAAU,SACnB,OAAS,CAAC,MAAO,GAAG,GAAI,OAAM,MAAQ,GAAG,KAAK,IACzC,AAAI,MAAM,OAAS,MACxB,OAAS,MAAM,OAAO,GAAI,OAAM,MAAQ,MAAM,QAAQ,KAAK,IAE3D,OAAS,MAAM,QAEjB,OAAO,QAAQ,IACb,AAAK,OACD,IAAM,GAAI,IAAM,uDAEtB,UACA,MAAI,OAAQ,KACV,MAAQ,GAAI,OAAM,OAAO,KAAK,IACzB,AAAI,MAAO,OAAS,SACzB,MAAQ,CAAC,KAAM,GAAG,GAAI,OAAM,MAAQ,GAAG,KAAK,KACvC,AAAI,KAAK,OAAS,MACvB,MAAQ,KAAK,OAAO,GAAI,OAAM,MAAQ,KAAK,QAAQ,KAAK,KAExD,MAAQ,KAEV,MAAQ,MAAM,IAAI,OACZ,GAAK,EACA,EAEP,CAAK,OACD,IAAM,GACN,IAAM,qDACC,mCAAmC,MACvC,EAAE,MAAM,GAAK,OAAO,KAGxB,CAAC,OAAQ,OAGZ,uGAKJ,WAAa,MAAM,aACR,IAAI,iBACA,QAEf,AAAI,SAAW,MACb,UAAW,GAAI,OAAM,OAAO,SAG9B,iBAAqB,WAAW,cAChC,GAAI,aAAa,OAAS,EACxB,KAAM,IAAI,OAAM,8CAGlB,GAAI,eAAiB,GAAK,cAAgB,EACxC,KAAM,IAAI,OACN,iEAGN,GAAI,eAAiB,GAAK,iBAAmB,EAC3C,KAAM,IAAI,OACN,oEAGN,wBAA4B,OAAO,OAAS,OAAO,kBAGhC,WAAW,sBACb,OAAO,QACxB,WAAW,QAAQ,OACjB,OAAO,MAAQ,EACf,KAAK,MAAQ,EACb,SAAS,OAAO,KAAM,EAAG,KAG3B,IACE,sBACA,kBACA,2BAEE,kBACI,SAAU,aAAc,oBAAqB,OAAQ,KAAM,SAC3D,UAAW,QAAS,cAC5B,OAAS,gBACT,KAAO,cACP,SAAW,kBAEX,eAAmB,WAAW,gBAE9B,WAAW,QAAQ,OACjB,KAAK,MAAQ,OAAO,MAAQ,EAC5B,SAAS,MAAQ,IAInB,SAAa,gBAAgB,OAAQ,KAAM,mBAE1B,KAAK,OAAO,UAAa,WAAW,QAAQ,QAAU,eAEpD,SAAS,MAAM,GAAK,IAAM,GAE7C,MAAO,CAAC,WAAY,OAAQ,KAAM,SAAU,KAAM,SAAU,UC/a9D,IAAA,+JCAA,IAAA,mBA0EE,eACE,MAAQ,MAAK,YACR,gBAiBA,wBAEL,MAAO,IAAI,KAAI,2BA/FnB,MAiHE,cACE,KAAK,aAAe,SAMf,UACL,MAAI,kBAAiB,UAAY,MAC/B,kBAAiB,SAAW,GAAI,mBAE3B,iBAAiB,eAMnB,eACL,iBAAiB,SAAS,aAAa,IAAI,WACvC,CAAC,IAAK,IAAI,cA4BZ,4BAEJ,OACI,IAAI,WAAa,KACjB,IAAM,+EAEV,OACI,MAAO,KAAI,WAAc,SACzB,IAAM,sDACF,MAAO,KAAI,WACnB,OACI,IAAI,UAAU,OAAS,EACvB,IAAM,qFAGV,iBAAiB,SAAS,KC/K5B,IAAA,maCAA,AAsBA,IAAM,qBAAuB,0BACO,GAE9B,qDAGJ,MAAI,WAAW,MACb,UAAU,eAEL,sBACH,OAAQ,SAAU,OAAU,SAAS,EAAa,EAAa,WAG/D,uBACJ,MAAO,QAAO,QAAQ,mBAAqB,GAAK,qBACA,qBAGlD,0DAGE,mBAAqB,GAOrB,GANA,AAAI,cAAa,SAAW,aAAa,YACvC,gBAAiB,IAEnB,AAAI,aAAa,SAAW,aAAa,WACvC,gBAAiB,IAEf,gBACF,UAAc,OAAO,YAAY,WACnB,SAAS,YAAY,KAEnC,GAAI,QAAU,MACZ,KAAM,IAAI,OACN,yCAAyC,oBAC5B,SAIrB,GAAI,MAAM,QAAQ,SAAW,MAAM,QAAQ,WACzC,gBAAoB,WAAW,sBACT,WAAW,UACjC,GAAI,CAAC,YAAY,YAAa,eAC5B,KAAM,IAAI,OACN,0CACY,4BAA4B,kBAIhD,eACI,aAAa,QAAU,OAAS,QAAQ,qBACvB,aAAa,UAC9B,SACA,QAAQ,UAEZ,GAAI,WAAW,SAAW,aAAa,OACrC,KAAM,IAAI,OACN,yCAAyC,WAAW,uBACvC,aAAa;YACb;YACA,iBAEnB,UAAa,EAAG,EAAI,aAAa,OAAQ,EAAE,GACzC,MAAU,WAAW,KACX,aAAa,GAEvB,GAAI,CAAC,UAAU,EAAG,GAChB,KAAM,IAAI,OACN,yBAAyB,QAAQ,eAAe,QAAQ;YAC3C;YACA,kBAUjB,sCACJ,KAAK,KAAK,IAAM,KAAK,OAAQ,IAAM,QAG/B,4CACJ,UAAY,MAAO,WAAa,UAAY,MAAO,WAAa,UACxD,MAAO,WAAa,UACxB,CAAC,UACD,SACJ,MAAI,UAAS,SAAW,SAAU,OAAoB,KAClD,SAAS,WAAa,SAAU,SAAsB,IAEjD,sBAAsB,OAAQ,MAAK,OAAU,GAAK,GAEpD,sBACH,OAAQ,SAAU,OAAU,SAAS,EAAa,EAAa,IAG/D,0CAIJ,GAHA,AAAI,UAAW,MACb,UAAU,eAER,CAAC,SAAS,EAAG,EAAG,UAClB,KAAM,IAAI,OAAM,8BAA8B,mBAAmB,KAIrE,gCACE,MAAI,CAAC,SAAS,IAAM,CAAC,SAAS,GACrB,GAEL,QAAM,IAAM,MAAM,IAAM,KAAK,IAAI,EAAI,GAAK,UAM1C,8CAEJ,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,GAAI,OAAO,GAAK,KAAO,OAAO,GAAK,KACjC,KAAM,IAAI,OACN,sBAAsB,OAAO,WAAW,cAAc,QAK1D,kDAIJ,OAAO,GAAI,cAAa,SAAS,QAAQ,GAAI,cAAa,WAItD,0BAEJ,UAAa,EAAG,EAAK,EAAgB,OAAQ,KAC3C,QAAY,EAAE,GACd,AAAI,MAAM,QAAQ,KAChB,cAAc,KAEd,EAAE,GAAK,aAAa,KAGxB,MAAO,GCvKT,AAGA,IAAM,QAAU,QCHhB,AAgCM,0BACJ,MAAM,IAAI,OAAQ,IAiBd,2BACJ,MAAM,IAAI,QAAS,IAIf,sCACJ,MAAM,IAAI,+BAAgC,IAC1C,QAAQ,KAAK,0DAIT,yBAA0B,KAC9B,AAAI,MAAM,QAAQ,iCAChB,QAAQ,KACJ,IAAM,+EAId,wBAAwB,iBAOlB,4BACJ,OAAO,mBAQH,oBACJ,MAAO,QAwBH,kBACJ,MAAO,QAAO,SAkCV,oBAEJ,MAAO,QAAO,QAAQ,GA2ClB,2BAEJ,MAAO,QAAO,KAAK,SAAU,IAczB,6BACJ,YAAgB,sBAAsB,YACtC,QAAQ,QAAQ,WAAU,UAAO,WAmC7B,sBACJ,MAAO,QAAO,KAAK,QA4Bf,iBACJ,MAAO,QAAO,KAAK,GAkBf,iCACJ,MAAO,QAAO,WAAW,aAUrB,iBACJ,MAAO,QAAO,QASV,sBACJ,MAAO,QAAO,YAQV,6BACJ,OAAO,cAAc,MAOjB,2BACJ,MAAO,QAAO,YAAY,MAQtB,kCAEJ,MAAO,QAAO,mBAAmB,MAkB7B,+CAES,GACb,MAAO,QAAO,gBAAgB,KAAM,QAAS,UAWzC,oBACJ,MAAO,QAAO,QASV,4CACJ,MAAM,YAAY,aAAc,UC9XlC,AAiDA,cAAgC,KAC9B,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA0B,CAAC,EAAG,GAAI,EAAG,IAErC,MAAO,QAAO,UAAU,IAAK,QAGxB,SAAY,GAAG,CAAC,OC3DvB,AAqDA,mBACI,KACF,OAAS,gBAAgB,EAAG,IAAK,eACxB,gBAAgB,EAAG,IAAK,YACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA+B,CAAC,EAAG,GAAI,EAAG,IAE1C,MAAO,QAAO,UAAU,SAAU,QAG7B,aAAiB,GAAG,CAAC,YChE5B,AAoDA,cAAgC,KAC9B,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OAGjC,GAFA,CAAC,GAAI,IAAM,eAAe,GAAI,IAE1B,GAAG,QAAU,SAAW,GAAG,QAAU,QACvC,MAAO,UAAS,GAAI,IAGtB,WAA8B,CAAC,EAAG,GAAI,EAAG,UAC3B,GAGd,MAAO,QAAO,UAAU,QAAS,OAAgC,OAG5D,QAAY,GAAG,CAAC,OCpEvB,AAoDA,cAAgC,KAC9B,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA+B,CAAC,EAAG,GAAI,EAAG,IAE1C,MAAO,QAAO,UAAU,SAAU,QAE7B,QAAY,GAAG,CAAC,OC7DvB,AAsCA,cAAgC,GAC9B,OAAW,gBAAgB,EAAG,IAAK,OAEnC,GAAI,GAAG,QAAU,aACf,WAAiC,CAAC,EAAG,IACrC,MAAO,QAAO,UAAU,WAAY,aAEpC,WAA0B,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,SAI1B,QAAY,GAAG,CAAC,OClDvB,AAoCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QC1CxB,AAuCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBACP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SC7CzB,AAuCA,eAAiC,SAC/B,AAAK,OACD,MAAM,QAAQ,SACd,IAAM,8DACV,AAAK,OACD,QAAQ,QAAU,EAClB,IAAM,uDACC,QAAQ,UAEnB,aACI,QAAQ,IAAI,OAAU,gBAAgB,EAAG,UAAU,IAAK,qBAExC,SAAS,GAC7B,SAAS,QAAQ,IACf,GAAI,EAAE,QAAU,YAAY,MAC1B,KAAM,IAAI,OACN,8DAIR,SAAS,QAAQ,IACf,GAAI,CAAC,AAAK,YAAY,EAAE,MAAO,YAAY,OACzC,KAAM,IAAI,OACN,8DAIR,WAA2B,SAE3B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCvExB,AAwDA,cACI,OAA8C,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,MAAO,eAEhB,CAAC,EAAG,UACN,CAAC,KAAM,UAE/B,MAAO,QAAO,UACV,IAAK,OAAgC,OAGpC,QAAY,GAAG,CAAC,OCnEvB,AAwDA,cACI,OAA8C,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,MAAO,eAEhB,CAAC,EAAG,UACN,CAAC,KAAM,UAE/B,MAAO,QAAO,UACV,IAAK,OAAgC,OAIpC,QAAY,GAAG,CAAC,OCpEvB,AAmDA,iBAAmC,OAA6B,GAC9D,OAAW,gBAAgB,EAAG,IAAK,iBAEN,CAAC,EAAG,UACN,CAAC,MAE5B,MAAO,QAAO,UACV,OAAQ,OAAgC,OAGvC,WAAe,GAAG,CAAC,UC7D1B,AAmDA,iBAAmC,OAA6B,GAC9D,OAAW,gBAAgB,EAAG,IAAK,iBAEN,CAAC,EAAG,UACN,CAAC,MAE5B,MAAO,QAAO,UACV,OAAQ,OAAgC,OAGvC,WAAe,GAAG,CAAC,UC7D1B,AAqCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QC3CxB,AAuCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SC9CzB,AAsCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QC7CxB,AA2CA,gBACI,KACF,OAAS,gBAAgB,EAAG,IAAK,YACxB,gBAAgB,EAAG,IAAK,SACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA4B,CAAC,EAAG,GAAI,EAAG,IAEvC,MAAO,QAAO,UAAU,MAAO,QAG1B,UAAc,GAAG,CAAC,SCtDzB,AAuCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SC9CzB,AAiGM,+BACF,gDAEiD,kBAMnD,kBAAsB,WAAW,gBAE7B,CAAC,GAAG,YAAa,2BACD,wBAAwB,YAE5C,MAAO,mBACH,WAAY,aAAc,QAAS,UAAW,MAC9C,KAAyB,KAAsB,aAG/C,8FAK2C,gBAC/C,8BAAoC,gBAAgB,wBAGpD,GAAI,aAAe,eACjB,YAAc,CAAC,aAAc,YAAa,QAAQ,GAAI,QAAQ,YACrD,aAAe,gBACxB,YAAc,CAAC,aAAc,YAAa,QAAQ,GAAI,QAAQ,QAE9D,MAAM,IAAI,OAAM,sBAAsB,cAGxC,MAAO,mBACH,QAAS,YAAa,QAAS,UAAW,MAAK,aAAc,GAC7D,YAMA,8FAM4B,SAChC,0CAAiD,iBAAiB,oCAIlE,GAAI,aAAe,QACjB,YAAc,eACd,YACI,CAAC,YAAa,aAAc,YAAa,QAAQ,GAAI,QAAQ,YACxD,aAAe,QACxB,YAAc,gBACd,YACI,CAAC,YAAa,aAAc,YAAa,QAAQ,GAAI,QAAQ,QAEjE,MAAM,IAAI,OAAM,sBAAsB,cAGxC,MAAO,mBACH,QAAS,YAAa,QAAS,UAAW,MAAK,GAAO,YACtD,cAOA,8FAKiD,cACN,gBAC/C,2CAAiD,CAAC,GAAI,GAAI,GAAI,IAC9D,GAAI,aAAe,eACjB,CAAC,UAAW,SAAU,QAAS,YAAc,gBACpC,aAAe,gBACxB,CAAC,UAAW,WAAY,SAAU,SAAW,YAE7C,MAAM,IAAI,OAAM,sBAAsB,cAGxC,8CAAsD,uCAClB,gBAAgB,wCACZ,gBAAgB,iCAGpD,uBAAuB,aAAc,qCAErC,uBAAuB,YAAa,gBACjC,QAAS,UAAW,UAAY,iBACnC,MAAK,SAAU,QAAS,aAAc,YAAa,sBACnD,qBAAsB,aAAc,wBAEpB,UAAY,eAAiB,WAAa,wBAG9D,MAAI,cAAe,gBACjB,SAAW,CAAC,UAAW,YAAa,UAAW,UAC1C,AAAI,aAAe,gBACxB,UAAW,CAAC,UAAW,UAAW,SAAU,cAGvC,CACL,UACA,WACA,SACA,QACA,WACA,UACA,SACA,YACA,QACA,aACA,YACA,aACA,YACA,sBACA,qBACA,eACA,cACA,QACA,SACA,aA0CE,iFAKU,cACiC,6BAE/C,mDACI,CAAC,GAAI,GAAI,GAAI,GAAI,IACrB,GAAI,aAAe,eACjB,CAAC,UAAW,QAAS,SAAU,QAAS,YAAc,gBAC7C,aAAe,gBACxB,CAAC,UAAW,WAAY,QAAS,SAAU,SAAW,YAEtD,MAAM,IAAI,OAAM,sBAAsB,cAGxC,0DACI,mDAC6C,iBAAiB,sDAE9D,iBAAiB,gCAGjB,uBAAuB,YAAa,qCAEpC,uBAAuB,aAAc,qCAErC,uBAAuB,YAAa,gBACjC,QAAS,SAAU,UAAW,UAAY,mBAC7C,MAAK,QAAS,SAAU,QAAS,YAAa,aAAc,YAC5D,qBAAsB,sBAAuB,qBAC7C,0BAEgB,UAAY,eAAiB,WAAa,wBAG9D,MAAI,cAAe,gBACjB,SAAW,CAAC,UAAW,YAAa,SAAU,UAAW,UACpD,AAAI,aAAe,gBACxB,UAAW,CAAC,UAAW,SAAU,UAAW,SAAU,cAGjD,CACL,UACA,WACA,QACA,SACA,QACA,WACA,SACA,UACA,SACA,YACA,QACA,YACA,aACA,YACA,YACA,aACA,YACA,qBACA,sBACA,qBACA,cACA,eACA,cACA,QACA,SACA,aAIJ,6EAGE,AAAI,SAAW,MACb,SAAU,kBAAkB,QAAS,UAAW,SAElD,cAAkB,QAAQ,aACR,QAAQ,cAGtB,MAAO,WAAY,UAAY,EAAI,SAAW,OAAS,EAAG,yBAE1D,MAAO,WAAY,UAAY,EAAI,SAAW,OAAS,EAAG,cAE9D,MAAO,CAAC,WAAY,YAGtB,yFAIE,AAAI,SAAW,MACb,SAAU,kBAAkB,QAAS,UAAW,SAElD,eAAmB,QAAQ,aACT,QAAQ,aACR,QAAQ,gBAGtB,MAAO,YAAa,UAAY,EAAI,SAAW,OAAS,EAAG,yBAE3D,MAAO,WAAY,UAAY,EAAI,SAAW,OAAS,EAAG,yBAE1D,MAAO,WAAY,UAAY,EAAI,SAAW,OAAS,EAAG,cAE9D,MAAO,CAAC,aAAc,WAAY,WAAY,aAG1C,gEAE4C,GAChD,uBAA2B,uBAAuB,UAAW,UAC7D,MAAO,MAAK,MACP,YAAW,GAAM,QAAS,GAAK,OAAS,oBAAsB,GAGrE,gCACE,MAAI,OAAO,QAAU,SACZ,CAAC,MAAO,MAAO,OAEpB,MAAM,SAAW,EACZ,CAAC,MAAM,GAAI,MAAM,GAAI,GAEvB,MAGT,iCAEE,MAAO,OAAO,QAAU,SAAW,CAAC,MAAO,MAAO,OAAS,MAc7D,qDACE,MAAI,WAAY,EACP,WAGF,WAAc,YAAa,GAAM,UAAW,GAGrD,4HAOE,+BAIA,GAAI,MAAO,QAAQ,UACjB,YAAiB,QAAQ,EAAK,QAAU,SACxC,QAAU,CAAC,IAAK,MAAK,OAAQ,MAAK,KAAM,MAAK,MAAO,MAAK,KAAM,SAC/D,aAAiB,qBACb,CAAC,SAAU,SAAU,aAAc,aAAc,MAAK,cAC1D,UAAY,SAAS,GACrB,SAAW,SAAS,WACX,QAAQ,QACjB,UAAY,KAAK,KAAK,SAAW,cACjC,SAAW,KAAK,KAAK,QAAU,aAC/B,mBACI,KAAK,IAAI,EAAI,WAAY,GAAK,aAAe,aAAe,wBAE5D,KAAK,IAAI,EAAI,UAAW,GAAK,YAAc,YAAc,aACjD,KAAK,MAAM,eAAiB,UACzB,eAAiB,SACnB,KAAK,MAAM,cAAgB,SAC1B,cAAgB,KAC9B,QAAU,CAAC,IAAK,OAAQ,KAAM,MAAO,KAAM,gBAClC,QAAQ,QACjB,QAAU,CAAC,IAAK,EAAG,OAAQ,EAAG,KAAM,EAAG,MAAO,EAAG,KAAM,SACvD,UAAY,KAAK,KAAM,UAAW,aAAe,GAAK,cACtD,SAAW,KAAK,KAAM,SAAU,YAAc,GAAK,qBAC1C,MAAO,QAAQ,UACxB,QAAY,aAAe,eAAiB,MAAI,GAAG,GAAK,MAAI,GAAG,UAChD,aAAe,eAAiB,MAAI,GAAG,GAAK,MAAI,GAAG,QACrD,aAAe,eAAiB,MAAI,GAAG,GAAK,MAAI,GAAG,SAClD,aAAe,eAAiB,MAAI,GAAG,GAAK,MAAI,GAAG,WAChD,MAAQ,GAAK,SAAW,GAAK,OAAS,GAAK,QAAU,EAClE,QACA,WACJ,QAAU,CAAC,IAAK,OAAQ,KAAM,MAAO,KAAM,SAC3C,UAAY,MACP,UAAW,aAAe,IAAM,QAAU,aAAe,EAC1D,cACJ,SAAW,MACN,SAAU,YAAc,KAAO,OAAS,YAAc,EAAG,kBAE9D,MAAM,OAAM,8BAA8B,SAE5C,MAAO,CAAC,QAAS,UAAW,UAG9B,mJAUE,wCAKA,GAAI,MAAO,QAAQ,UACjB,YAAiB,QAAQ,EAAK,QAAU,SACxC,QAAU,CACR,IAAK,MACL,OAAQ,MACR,KAAM,MACN,MAAO,MACP,MAAO,MACP,KAAM,MACN,KAAM,SAER,aAAiB,qBACb,CAAC,QAAS,SAAU,QAAS,GAAI,YAAa,EAAG,YAAa,MAC9D,cACJ,SAAW,SAAS,GACpB,UAAY,SAAS,GACrB,SAAW,SAAS,WACX,QAAQ,QACjB,SAAW,KAAK,KAAK,QAAU,aAC/B,UAAY,KAAK,KAAK,SAAW,cACjC,SAAW,KAAK,KAAK,QAAU,aAC/B,kBAAuB,UAAW,GAAK,YAAc,YAAc,uBAE9D,WAAY,GAAK,aAAe,aAAe,uBAC7B,UAAW,GAAK,YAAc,YAAc,cACrD,KAAK,MAAM,cAAgB,QAC5B,cAAgB,UACjB,KAAK,MAAM,eAAiB,UACzB,eAAiB,SACnB,KAAK,MAAM,cAAgB,SAC1B,cAAgB,KAE9B,QAAU,CAAC,IAAK,OAAQ,KAAM,MAAO,MAAO,KAAM,KAAM,gBAC/C,QAAQ,QACjB,QAAU,CACR,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,EACP,MAAO,EACP,KAAM,EACN,KAAM,SAER,SAAW,KAAK,KAAM,SAAU,YAAc,GAAK,aACnD,UAAY,KAAK,KAAM,UAAW,aAAe,GAAK,cACtD,SAAW,KAAK,KAAM,SAAU,YAAc,GAAK,iBAEnD,MAAM,OAAM,8BAA8B,SAE5C,MAAO,CAAC,QAAS,SAAU,UAAW,UASxC,mCACE,GAAI,CAAC,aACH,MAAO,MAAK,MAAM,OAEpB,OAAQ,kBACD,QAEH,MAAO,MAAK,MAAM,WACf,OAEH,MAAO,MAAK,KAAK,WACd,QACH,MAAO,MAAK,MAAM,eAElB,KAAM,IAAI,OAAM,wBAAwB,iBAIxC,kCACJ,oBAA2B,gBAAgB,OAC3C,MAAO,QAAS,GAAK,OAAS,GAAK,OAAS,EAGxC,2DAEJ,MAAO,mBAAkB,UAAY,kBAAkB,WAUnD,6CAEJ,GAAI,aAAe,OACjB,MAAO,eACF,GAAI,aAAe,OACxB,MAAO,gBAEP,KAAM,IAAI,OAAM,sBAAsB,cCnlB1C,AAqDA,kBACI,SACF,OAAW,gBAAgB,EAAG,IAAK,UAAW,aAEhB,CAAC,EAAG,UACN,CAAC,OAC7B,MAAO,QAAO,UACV,QAAS,OAAgC,OAExC,YAAgB,GAAG,CAAC,WC9D3B,AAmDA,kBACI,4CAGF,OAAW,gBAAgB,EAAG,IAAK,UAAW,qBAC5B,EAElB,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IAAM,wEACa,0BAA0B,cAEjD,QAAU,gBACS,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG3D,AAAK,OACD,IAAI,OAAS,EACb,IAAM,mDAAmD,IAAI,SAEjE,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,wEACiB,+BAA+B,UAG5D,WAA8B,CAAC,EAAG,WAEN,CAAC,WAAY,QAAS,UAAK,qBAG7C,OAAO,UACH,QAAS,OACT,OAId,MAFA,KAAM,KAAK,IAAK,GAAG,OAEf,aACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGtD,IAGF,YAAgB,GAAG,CAAC,WCnG3B,AA4EA,oBACI,sDAG8B,mBAEhC,AAAI,WAAa,KACf,UAAY,CAAC,EAAG,EAAG,GAEnB,gBACI,+DAIN,OAAW,gBAAgB,EAAG,IAAK,YAAa,eAEtC,gBACS,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGxE,AAAK,OACD,IAAI,OAAS,EACb,IAAM,qDAAqD,IAAI,SACnE,AAAK,OACD,aAAe,QACf,IAAM,gFACuB,cACjC,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IAAM,0EACa,0BAA0B,cAEjD,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,0EACiB,+BAA+B,UAG5D,WAAgC,CAAC,EAAG,WAGhC,CAAC,WAAY,QAAS,UAAK,gBAAiB,WAAY,eAGlD,OAAO,UACH,UAAW,OACX,OAId,MAFA,KAAM,KAAK,IAAK,IAAI,OAEhB,aACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAIhE,IAGF,cAAkB,GAAG,CAAC,aC3I7B,AAoEA,iBAAmC,aAAqC,GACtE,OAAO,QAAQ,QAAU,EAAG,IAAM,sCAElC,aAAiB,qBAAqB,QAAS,UAAW,UAW1D,GATA,AAAI,SAAS,GAAG,QAAU,aACxB,SAAS,QAAQ,YACf,GAAI,UAAO,QAAU,YACnB,KAAM,IAAI,OAAM;uBACD,UAAO,aAKxB,SAAS,SAAW,EACtB,MAAO,OAAM,SAAS,IAGxB,WAA6B,cACH,CAAC,MAE3B,MAAO,QAAO,UACV,OAAQ,OAAgC,MAGvC,WAAe,GAAG,CAAC,UC7F1B,AAsCA,kBAAoC,GAClC,OAAW,gBAAgB,EAAG,IAAK,kBAEL,CAAC,EAAG,IAElC,MAAO,QAAO,UAAU,QAAS,QAE5B,YAAgB,GAAG,CAAC,WC7C3B,AA6DA,gBACI,cACF,OAAW,gBAAgB,EAAG,IAAK,QAAS,MAE5C,GAAI,GAAG,OAAS,EACd,KAAM,IAAI,OAAM,kCAGlB,WAA4B,CAAC,EAAG,UACN,CAAC,MAAO,MAElC,MAAO,QAAO,UACV,MAAO,OAAgC,OAGtC,UAAc,GAAG,CAAC,SC5EzB,AAsCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,UAAa,GAAG,CAAC,QC7CxB,AA8CA,wBACI,yCAGF,gBACI,gBAAgB,WAAY,aAAc,6BAE1C,gBAAgB,WAAY,aAAc,2BAC5B,gBAAgB,SAAU,WAAY,uBAC1C,gBAAgB,KAAM,OAAQ,oBACjC,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,0BAElB,OAAO,CAAC,MAAO,IAAK,YACpB,OAAO,SAAU,iBACZ,KAAI,SAAU,qBAGlB,IAAI,MAAM,aACV,IAAI,MAAM,GAAK,YACG,CAAC,UAAW,aACtC,MAAM,IAAK,CAAC,EAAG,GAAI,aACnB,MAAM,IAAK,CAAC,EAAG,WAAY,aAC3B,MAAM,IAAK,CAAC,EAAG,UAAY,GAAI,aAC/B,MAAM,IAAK,CAAC,EAAG,UAAY,GAAI,gBAGrC,KAAI,IAAI,QAAQ,GAAI,MAAK,IACrB,IAAI,GAAI,QAAQ,KAAI,YAAa,WAClB,IAAI,MAAK,MAAO,QAAQ,IAC/C,MAAO,CAAC,KAAM,MAGT,kBAAsB,GAAG,CAAC,iBC/EjC,AA4EA,yBACI,oBACF,OAAW,gBAAgB,EAAG,IAAK,wBACtB,WAAW,OAAO,OAAU,EAAI,GAE7C,AAAK,OACD,GAAG,MAAQ,EAAI,WAAW,OAC1B,IAAM,iBAAiB,GAAG,+CACtB,WAAW,UAEnB,AAAK,OACD,MAAM,SAAW,WAAW,OAC5B,IAAM,mBACF,MAAM,oDACN,WAAW,UAEnB,AAAK,OACD,GAAG,MAAM,GAAK,QAAS,EACvB,IAAM,yBACI,GAAG,MAAM,wEACe,WAAW,KAAK,cAAc,SAEpE,WAAqC,CAAC,EAAG,UACN,CAAC,WAAY,OAEhD,MAAO,QAAO,UACV,eAAgB,OAChB,OAGC,mBAAuB,GAAG,CAAC,kBCtF5B,eAAgC,GACpC,QACA,MAAI,GAAE,OAAS,GAAK,EAAE,OAAS,EAC7B,IAAM,QAAQ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAE,OACxB,AAAI,EAAE,OAAS,EACpB,IAAM,QAAQ,EAAG,CAAC,EAAG,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,KACvC,AAAI,EAAE,OAAS,EACpB,IAAM,QAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,KAErD,IAAM,EAGD,IChCT,AAwDA,oBACI,gDAKF,AAAI,iBAAmB,MACrB,iBAAkB,MAEpB,OAAW,gBAAgB,EAAG,IAAK,mBACrB,gBAAgB,MAAM,OAAQ,uBAC1B,gBAAgB,SAAU,WAAY,oBAExD,AAAI,QAAS,MACX,QAAS,gBAAgB,OAAO,QAAS,cAE3C,YACA,AAAI,QAAU,MACZ,SAAU,gBAAgB,OAAQ,SAAU,cAG9C,AAAK,OACD,MAAM,OAAS,UAAU,KACzB,IAAM,gFAEV,AAAK,OACD,SAAW,MAAQ,MAAM,OAAS,QAAQ,KAC1C,IAAM,8EAEV,AAAK,OACD,QAAU,MAAQ,MAAM,OAAS,OAAO,KACxC,IAAM,6EAGV,QAAsB,MAAM,WAES,CACnC,EAAG,IACH,MAAO,OACP,OAAQ,QACR,KAAM,MACN,SAAU,iBAGuB,CAAC,qBAGxB,OAAO,UACH,eAAgB,OAChB,OAEhB,MAAO,SAAQ,IAAK,GAAG,OAGlB,cAAkB,GAAG,CAAC,aC3E7B,sBACI,gDAIF,OAAW,gBAAgB,EAAG,IAAK,mBACrB,gBAAgB,MAAM,OAAQ,uBAC1B,gBAAgB,SAAU,WAAY,oBAExD,AAAI,QAAS,MACX,QAAS,gBAAgB,OAAO,QAAS,cAE3C,YACA,MAAI,SAAU,MACZ,SAAU,gBAAgB,OAAQ,SAAU,cAE9C,AAAK,OACD,GAAG,OAAS,EACZ,IAAM,uDACC,GAAG,SACd,AAAK,OACD,MAAM,OAAS,GAAK,MAAM,OAAS,EACnC,IAAM,oEACU,MAAM,SAC1B,AAAK,OACD,UAAU,OAAS,GAAK,UAAU,OAAS,EAC3C,IAAM,wEACc,UAAU,SAClC,AAAI,QAAU,MACZ,AAAK,OACD,OAAO,OAAS,GAAK,OAAO,OAAS,EACrC,IAAM,qEACc,OAAO,SAEjC,AAAI,SAAW,MACb,AAAK,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,sEACc,QAAQ,SAG3B,UAAU,GAAI,MAAO,UAAW,QAAS,OAAQ,iBAGnD,gBAAoB,GAAG,CAAC,eC5C/B,sBACI,gDAIF,OAAW,gBAAgB,EAAG,IAAK,mBACrB,gBAAgB,MAAM,OAAQ,uBAC1B,gBAAgB,SAAU,WAAY,oBAExD,AAAI,QAAS,MACX,QAAS,gBAAgB,OAAO,QAAS,cAE3C,YACA,MAAI,SAAU,MACZ,SAAU,gBAAgB,OAAQ,SAAU,cAE9C,AAAK,OACD,GAAG,OAAS,EACZ,IAAM,uDACC,GAAG,SACd,AAAK,OACD,MAAM,OAAS,GAAK,MAAM,OAAS,EACnC,IAAM,oEACU,MAAM,SAC1B,AAAK,OACD,UAAU,OAAS,GAAK,UAAU,OAAS,EAC3C,IAAM,wEACc,UAAU,SAClC,AAAI,QAAU,MACZ,AAAK,OACD,OAAO,OAAS,GAAK,OAAO,OAAS,EACrC,IAAM,qEACc,OAAO,SAEjC,AAAI,SAAW,MACb,AAAK,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,sEACc,QAAQ,SAG3B,UAAU,GAAI,MAAO,UAAW,QAAS,OAAQ,iBAGnD,gBAAoB,GAAG,CAAC,eC5C/B,sBACI,gDAIF,OAAW,gBAAgB,EAAG,IAAK,mBACrB,gBAAgB,MAAM,OAAQ,uBAC1B,gBAAgB,SAAU,WAAY,oBAExD,AAAI,QAAS,MACX,QAAS,gBAAgB,OAAO,QAAS,cAE3C,YACA,MAAI,SAAU,MACZ,SAAU,gBAAgB,OAAQ,SAAU,cAE9C,AAAK,OACD,GAAG,OAAS,EACZ,IAAM,uDACC,GAAG,SACd,AAAK,OACD,MAAM,OAAS,GAAK,MAAM,OAAS,EACnC,IAAM,oEACU,MAAM,SAC1B,AAAK,OACD,UAAU,OAAS,GAAK,UAAU,OAAS,EAC3C,IAAM,wEACc,UAAU,SAClC,AAAI,QAAU,MACZ,AAAK,OACD,OAAO,OAAS,GAAK,OAAO,OAAS,EACrC,IAAM,qEACc,OAAO,SAEjC,AAAI,SAAW,MACb,AAAK,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,sEACc,QAAQ,SAE3B,UAAU,GAAI,MAAO,UAAW,QAAS,OAAQ,iBAGnD,gBAAoB,GAAG,CAAC,eC9E/B,AA6CA,mBACI,gBACF,OAAW,gBAAgB,EAAG,IAAK,qBAClB,gBAAgB,QAAS,UAAW,YAErD,AAAK,OACD,GAAG,QAAU,QACb,IAAM,yDAC8B,GAAG,SAC3C,AAAK,OAAO,MAAQ,EAAG,IAAM,sCAAsC,SACnE,AAAK,OACD,SAAS,OAAS,GAAG,MAAQ,SAAS,OAAS,EAC/C,IAAM,gGACgC,GAAG,yBAClC,SAAS,UAEpB,WAA+B,CAAC,EAAG,GAAI,QAAS,gBACnB,CAAC,MAE9B,MAAO,QAAO,UACV,SAAU,OAAgC,OAGzC,aAAiB,GAAG,CAAC,YCpE5B,AA2CA,sBACI,SACF,WAAY,gBAAgB,EAAG,cAAe,YAC/B,OAAM,MAErB,GAAI,MAAM,KAAK,GAAK,CAAE,GAAI,IAAM,EAAI,IAAM,GACxC,KAAM,IAAI,OAAM,2CAA2C,WAG7D,GAAI,MAAM,OAAS,OAAM,KACvB,KAAM,IAAI,OAAM,+BAA+B,MAAM,uBACjD,OAAM,SAGZ,GAAI,MAAM,OAAS,OAAM,MACvB,aAAiB,OAAM,MAAM,QAC7B,KAAO,SAAS,OAAS,MAAM,QAC7B,SAAS,QAAQ,GAEnB,OAAQ,QAAQ,OAAO,UAGzB,eAAmB,OAAM,WACF,MAAM,KAAK,OAClC,UAAa,MAAM,OAAS,EAAG,GAAK,EAAG,IACrC,GAAI,WAAW,KAAO,MAAM,GAC1B,KAAK,GAAK,UACD,OAAM,MAAM,KAAO,EAC5B,KAAM,IAAI,OACN,mBAAmB,mCAAmC,WAG9D,SAAa,KAAK,IAAI,OAAU,EAAI,EAAI,EAAI,IAAI,OAAO,GAAK,GAAK,GAEjE,GAAI,KAAK,SAAW,EAClB,MAAO,OAAM,QAIf,WAA2B,CAAC,EAAG,cACN,CAAC,MAC1B,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,gBAAoB,GAAG,CAAC,eCxF/B,AAsCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAC/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QC5CxB,AAyCA,sBACI,6BACF,OAAW,gBAAgB,EAAG,IAAK,eACnC,AAAK,OACA,cAAgB,aACjB,IAAM,uBAAuB,oDACK,kBAEtC,WAAkC,CAAC,EAAG,UACN,CAAC,aAAc,cAE/C,MAAO,QAAO,UACV,YAAa,OAAgC,OAG5C,gBAAoB,GAAG,CAAC,eCvB/B,mBAAmB,SACjB,MAAO,QAAO,QAAS,GAGlB,aAAiB,GAAG,CAAC,YCY5B,mBACI,cACF,MAAO,QAAO,QAAS,MAGlB,aAAiB,GAAG,CAAC,YCD5B,mBACI,cACF,MAAO,QAAO,QAAS,MAGlB,aAAiB,GAAG,CAAC,YC5B5B,mBACI,cACF,MAAO,QAAO,QAAS,MAGlB,aAAiB,GAAG,CAAC,YCnC5B,AA6DA,iBACI,kCAG4B,iBACS,CAAC,EAAG,oBAE3C,OAAW,gBAAgB,EAAG,IAAK,kBACnB,gBAAgB,OAAQ,SAAU,cAExC,gBACS,GAEnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG3D,AAAK,OACD,IAAI,OAAS,EACb,IAAM,uDAAuD,IAAI,SACrE,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,wDACC,QAAQ,SACnB,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,uEACiB,+BAA+B,UAG5D,YAAgB,aAAe,OAAS,IAAI,MAAM,GAAK,IAAI,MAAM,GACjE,AAAK,OACD,UAAY,QAAQ,MAAM,GAC1B,IAAM,oCAAoC,8CACZ,QAAQ,MAAM,OAChD,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IAAM,uEACa,0BAA0B,cAEjD,WAA6B,CAAC,EAAG,IAAK,OAAQ,eAE5B,CAAC,QAAS,UAAK,WAAY,UAAW,qBAG5C,OAAO,UACH,OAAQ,OACR,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,WAAe,GAAG,CAAC,UChE1B,iBACI,iCAE0B,eAAkB,mBAE9C,OAAW,gBAAgB,EAAG,IAAK,kBACnB,gBAAgB,OAAQ,SAAU,cAExC,gBACS,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,MAG9C,AAAK,OACD,IAAI,OAAS,EACb,IAAM,uDAAuD,IAAI,SACrE,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,wDACC,QAAQ,SACnB,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,uEACiB,+BAA+B,UAG5D,AAAK,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,oCAAoC,IAAI,MAAM,yCACtB,QAAQ,MAAM,OAChD,AAAK,OACD,AAAU,+BAA+B,OAAQ,UACjD,IAAM,oEACY,wBAAwB,aAC9C,AAAK,OACD,aAAe,MACf,IAAM,sCACF,mDAER,aAAiB,QACb,QAAS,CAAC,EAAG,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,aACnD,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,EAAG,IAAI,MAAM,GAAI,IAAI,MAAM,aACrC,CAAC,EAAG,kBACF,CAAC,EAAG,2BAEf,WAEb,OACP,QAAuB,SAAuB,QAAS,MACxD,iBAAkB,UAAW,iBAEjC,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,KAGxC,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGtD,WAAe,GAAG,CAAC,UCnH1B,AAmDA,8BACI,0CAG4B,wBAE9B,AAAK,OACD,OAAO,SAAW,GAAG,KACrB,IAAM,sBACE,OAAO,2BAA2B,GAAG,oBAEjD,aAAe,YACJ,gBACQ,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,KAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,KAC1D,SAAW,CAAC,EAAG,OAAO,GAAI,OAAO,GAAI,OAAO,KAG9C,AAAK,OACD,SAAS,SAAW,EACpB,IACI,qEACG,SAAS,WACpB,AAAK,OACD,KAAK,OAAS,EACd,IAAM,4DACM,KAAK,QACrB,AAAK,OACD,OAAO,OAAS,EAChB,IAAM,gEACM,OAAO,QACvB,YAAgB,aAAe,OAAS,SAAS,GAAK,SAAS,YAC9C,aAAe,OAAS,KAAK,MAAM,GAAK,KAAK,MAAM,GACpE,AAAK,OACD,UAAY,OAAO,MAAM,GACzB,IAAM,4CAA4C,8CACd,OAAO,MAAM,OACrD,AAAK,OACD,WAAa,OAAO,MAAM,GAC1B,IAAM,6CAA6C,gDACd,OAAO,MAAM,OACtD,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,+EACiB,+BAA+B,UAG5D,WAA0C,CAAC,GAAI,KAAM,cAGjD,CAAC,QAAS,UAAK,WAAY,gBAAiB,WAAY,cAGhD,OAAO,UACH,oBAAqB,OACrB,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,wBAA4B,GAAG,CAAC,uBC1EvC,0BACI,oDAIF,OAAW,gBAAgB,EAAG,IAAK,2BACnB,gBAAgB,OAAQ,SAAU,mBAElD,MAAO,qBACH,YAAa,GAAI,QAAS,QAAS,MAAK,OAAQ,iBAG/C,oBAAwB,GAAG,CAAC,mBCvDnC,AA6DA,iBACI,kCAE8B,kBACe,CAAC,EAAG,EAAG,IACtD,OAAW,gBAAgB,EAAG,IAAK,kBACnB,gBAAgB,OAAQ,SAAU,cAExC,gBACS,GAEnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAExE,AAAK,OACD,IAAI,OAAS,EACb,IAAM,uDAAuD,IAAI,SACrE,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,wDACC,QAAQ,SACnB,AAAK,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,oCAAoC,IAAI,MAAM,yCACtB,QAAQ,MAAM,OAChD,AAAK,OACD,+BAA+B,QAAS,WACxC,IAAM,uEACa,0BAA0B,cACjD,AAAK,OACD,aAAe,QACf,IAAM,sCACF,qDAER,WAA6B,CAAC,EAAG,IAAK,OAAQ,eAEnB,CAAC,QAAS,UAAK,WAAY,eAG1C,OAAO,UACH,OAAQ,OACR,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGhE,IAGF,WAAe,GAAG,CAAC,UCjH1B,AA4CA,8BACI,gCAKF,AAAK,OACD,OAAO,SAAW,GAAG,KACrB,IAAM,sBACE,OAAO,2BAA2B,GAAG,oBAEjD,aAAe,YACJ,gBACQ,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,KAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,KACvE,SAAW,CAAC,EAAG,OAAO,GAAI,OAAO,GAAI,OAAO,GAAI,OAAO,KAGzD,YAAgB,SAAS,YACR,KAAK,MAAM,GAC5B,AAAK,OACD,SAAS,SAAW,EACpB,IACI,qEACG,SAAS,WACpB,AAAK,OACD,KAAK,OAAS,EACd,IAAM,4DACM,KAAK,QACrB,AAAK,OACD,OAAO,OAAS,EAChB,IAAM,gEACM,OAAO,QACvB,AAAK,OACD,UAAY,OAAO,MAAM,GACzB,IAAM,4CAA4C,8CACd,OAAO,MAAM,OACrD,AAAK,OACD,WAAa,OAAO,MAAM,GAC1B,IAAM,6CAA6C,gDACd,OAAO,MAAM,OAEtD,WAA4C,CAAC,GAAI,KAAM,cAGtB,CAAC,UAAK,QAAS,WAAY,cAGhD,OAAO,UACH,sBAAuB,OACvB,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGhE,IAGF,wBAA4B,GAAG,CAAC,uBChEvC,0BACI,oCAKF,OAAW,gBAAgB,EAAG,IAAK,2BACnB,gBAAgB,OAAQ,SAAU,mBAElD,MAAO,qBAAoB,YAAa,GAAI,QAAS,QAAS,OAGzD,oBAAwB,GAAG,CAAC,mBCtDnC,AAsCA,cAAgC,GAC9B,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAE9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OC7CvB,AAsCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QC5CxB,AAkDA,iBACI,OAA6B,YAAe,aAAiB,IAC/D,OAAW,gBAAgB,EAAG,IAAK,iBAEN,CAAC,EAAG,UACN,CAAC,KAAM,UAAW,mBAE7C,MAAO,QAAO,UACV,OAAQ,OAAgC,OAGvC,WAAe,GAAG,CAAC,UC7D1B,AA+CA,wBACI,4BACe,IACjB,OAAW,gBAAgB,EAAG,IAAK,0BAClB,gBAAgB,QAAS,UAAW,iBAErD,AAAK,OACD,GAAG,QAAU,QACb,IAAM,8DAC8B,GAAG,SAC3C,AAAK,OACD,GAAG,MAAQ,EACX,IAAM,sEACM,GAAG,SACnB,AAAK,OAAO,MAAQ,EAAG,IAAM,sCAAsC,SACnE,AAAK,OACD,SAAS,OAAS,GAAG,MAAQ,SAAS,OAAS,EAC/C,IACI,+FAC8B,GAAG,yBAC9B,SAAS,UAEpB,WAAoC,CAAC,EAAG,GAAI,QAAS,gBACnB,CAAC,KAAM,cAEzC,MAAO,QAAO,UACV,cAAe,OACf,OAGC,kBAAsB,GAAG,CAAC,iBC7EjC,AAiEA,uBACI,uBAC4B,QAC9B,OAAW,gBAAgB,EAAG,IAAK,4BAEd,aAAe,OAAU,GAAG,MAAM,GAAK,GAAG,MAAM,cACjD,aAAe,OAAU,GAAG,MAAM,GAAK,GAAG,MAAM,cAChD,aAAe,OAAU,GAAG,MAAM,GAAK,GAAG,MAAM,GAEpE,AAAK,OACD,YAAc,WAAa,EAC3B,IAAM;MACN,mBAAmB;MACnB,GAAG,SAEP,AAAK,OACD,WAAa,WAAa,EAC1B,IAAM;MACN,kBAAkB;UACd,GAAG,SAEX,AAAK,OACA,WAAc,WAAY,aAAe,EAC1C,IAAM,8CACF,UAAY,oBACZ,gDAAgD,GAAG,SAE3D,WAAmC,CAAC,EAAG,UACN,CAAC,UAAW,YAE7C,MAAO,QAAO,UACV,aAAc,OACd,OAGC,iBAAqB,GAAG,CAAC,gBCpGhC,AAyEA,0BACI,kCAE4B,iBACS,CAAC,EAAG,oBAE3C,OAAW,gBAAgB,EAAG,IAAK,2BACnB,gBAAgB,OAAQ,SAAU,uBAExC,gBACS,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAE3D,AAAK,OACD,IAAI,OAAS,EACb,IAAM,gEACM,IAAI,SACpB,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,iEACC,QAAQ,SACnB,AAAK,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,uDACE,IAAI,MAAM,qDACJ,QAAQ,MAAM,OAEhC,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,gFACiB,+BAA+B,UAG5D,WAA4C,CAAC,EAAG,IAAK,OAAQ,eAEzD,CAAC,QAAS,UAAK,WAAY,UAAW,qBAG9B,OAAO,UACH,sBAAuB,OACvB,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,oBAAwB,GAAG,CAAC,mBC5HnC,AA8CA,eAAe,GACb,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCtDxB,AA4DA,qBACI,iCAEqC,CAAC,EAAG,cACpB,QACvB,OAAW,gBAAgB,EAAG,IAAK,sBACnB,gBAAgB,OAAQ,SAAU,cAElD,AAAK,OACD,GAAG,OAAS,GAAK,GAAG,OAAS,EAC7B,IAAM,gEACC,GAAG,SACd,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,4DACC,QAAQ,SACnB,AAAK,OACD,aAAe,OACf,IAAM,gFACuB,cAEjC,QAAU,gBACS,GAEnB,AAAI,GAAG,OAAS,GACd,KAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,KACzD,aAAe,IAGjB,WAAiC,CAAC,EAAG,IAAK,OAAQ,eACnB,CAAC,QAAS,UAAK,eAGlC,OAAO,UACH,WAAY,OACZ,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGtD,IAGF,eAAmB,GAAG,CAAC,cCxG9B,AA0BM,0BACF,kBACF,WAAe,QAAQ,YACA,GACvB,UAAa,EAAG,EAAI,OAAQ,KAC1B,QAAY,OAAS,EAAI,IACf,QAAQ,MAAQ,IAChB,SAAS,SAAS,OAAS,EAAI,IAAM,EAC/C,AAAI,EAAI,GAAK,IAAM,GACjB,KAAK,QAAQ,KAGjB,MAAO,MAOH,4CAEJ,WAAyB,GACzB,UAAa,EAAG,EAAI,SAAS,OAAQ,KACnC,UAAc,QAAQ,QAAQ,OAAS,EAAI,WAC3B,SAAS,OAAS,EAAI,SACvB,SAAS,SACxB,AAAI,QAAS,MAAS,QAAU,GAAK,OAAS,IAC5C,OAAO,QAAQ,SAGnB,MAAO,QAGH,mDAEJ,WAAyB,KACf,KAAK,IAAI,OAAO,OAAQ,OAAO,QAEzC,UAAa,EAAG,EAAI,EAAG,KACrB,MAAQ,OAAO,OAAO,OAAS,EAAI,GACnC,AAAI,GAAK,MACP,GAAI,GAEN,MAAQ,OAAO,OAAO,OAAS,EAAI,GAInC,GAHA,AAAI,GAAK,MACP,GAAI,GAEF,IAAM,EACR,OAAO,QAAQ,WACN,IAAM,EACf,OAAO,QAAQ,WACN,IAAM,GACf,WAAe,wDACR,cAAc,UACrB,KAAM,OAAM,YAEZ,QAAO,QAAQ,GAGnB,MAAO,QCrFT,AA0CA,gBACI,KACF,OAAS,gBAAgB,EAAG,IAAK,YACxB,gBAAgB,EAAG,IAAK,SACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA4B,CAAC,EAAG,GAAI,EAAG,IAEvC,MAAO,QAAO,UAAU,MAAO,QAG1B,UAAc,GAAG,CAAC,SCvDzB,AAoDA,gBACI,eACF,OAAW,gBAAgB,EAAG,IAAK,YACxB,gBAAgB,EAAG,IAAK,oBAChB,gBAAgB,UAAW,YAAa,QAAS,uBAI7C,2BAA2B,GAAG,MAAO,GAAG,qBACzC,YAAY,GAAI,8BAChB,YAAY,GAAI,gBACtC,AAAI,WAAW,OAAS,GAGtB,OACI,WAAW,MAAM,KAAO,GAAG,MAAM,GACjC,IAAM,kEAGZ,AAAI,WAAW,OAAS,GAEtB,kBACI,WAAW,MAAO,cAAc,MAAO,oBAG7C,WAA6B,CAC3B,UAAW,WACX,EAAG,cACH,EAAG,eAEL,MAAO,QAAO,UAAU,OAAQ,QAG3B,UAAc,GAAG,CAAC,SCrFzB,AAuCA,oBAAsC,GACpC,OAAW,gBAAgB,EAAG,IAAK,oBACH,CAAC,EAAG,IACpC,MAAO,QAAO,UAAU,UAAW,QAE9B,cAAkB,GAAG,CAAC,aC5C7B,AA0DA,mBACI,KAEF,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,cAAkB,IAAI,GAAI,WACZ,UAAU,uBACJ,MAAM,GAAI,QAC9B,MAAO,OAAM,YAAa,OAAO,WAG5B,aAAiB,GAAG,CAAC,YCvE5B,AA2CA,cAAc,OACZ,QAAY,gBAAgB,GAAI,KAAM,WAC1B,gBAAgB,GAAI,KAAM,OAEtC,AAAK,OACA,KAAI,OAAS,GAAK,IAAI,OAAS,IAAO,KAAI,OAAS,GAAK,IAAI,OAAS,GACtE,IAAM,+DACC,IAAI,YAAY,IAAI,SAE/B,YAAiB,IAAI,OAAS,EAAI,IAAI,KAAO,IAAI,MAAM,WACtC,IAAI,OAAS,EAAI,IAAI,KAAO,IAAI,MAAM,GAOvD,GALA,AAAK,OACD,UAAY,QACZ,IAAM,gEACC,eAAe,YAEtB,IAAI,OAAS,GAAK,IAAI,OAAS,GACjC,SAAa,QAAQ,IAAK,CAAC,EAAG,UACjB,QAAQ,IAAK,CAAC,GAAI,SAClB,OAAO,KAAM,MAC1B,MAAO,SAAQ,KAAM,YACZ,IAAI,OAAS,GAAK,IAAI,OAAS,GACxC,SAAa,QAAQ,IAAK,CAAC,EAAG,UACjB,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,UACtC,OAAO,KAAM,MAC1B,MAAO,SAAQ,KAAM,CAAC,KAAK,eAClB,IAAI,OAAS,GAAK,IAAI,OAAS,GACxC,SAAa,QAAQ,IAAK,CAAC,GAAI,SAClB,OAAO,IAAK,MACzB,MAAO,SAAQ,KAAM,CAAC,KAAK,YAE3B,SAAa,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,UACtC,OAAO,IAAK,MACzB,MAAO,OAIJ,QAAY,GAAG,CAAC,OCjFvB,AAsCA,cAAgC,GAC9B,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAE9B,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OC9CvB,AAyCA,cAAgC,GAC9B,OAAS,gBAAgB,EAAG,IAAK,OACjC,AAAK,OACD,GAAG,QAAU,SAAW,GAAG,QAAU,UACrC,IAAM,6CAEV,AAAI,GAAG,QAAU,SACf,IAAK,KAAK,GAAI,YAGhB,WAA0B,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OCtDvB,AAsCA,cAAgC,GAC9B,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OC5CvB,AA4CA,qBAAuC,OAA6B,GAClE,YAA0B,QACf,gBAAgB,EAAG,IAAK,aAAc,SAEjD,AAAK,OAAO,MAAQ,GAAG,KAAM,IAAM,sCAEnC,WAAiC,CAAC,MAAO,UACV,CAAC,IAAK,MAErC,MAAO,QAAO,UACV,WAAY,OAAgC,OAG3C,eAAmB,GAAG,CAAC,cCzD9B,AAuCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAChC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SC7CzB,AAqDA,eAAiC,QAC/B,YAA0B,QACf,gBAAgB,EAAG,IAAK,OAAQ,SAC3C,AAAK,OACD,GAAG,OAAS,KAAK,OACjB,IAAM,qCAAqC,GAAG,kCACb,SAErC,WAA2B,CAAC,EAAG,UACN,CAAC,MAE1B,MAAO,QAAO,UACV,KAAM,OACN,OAGC,SAAa,GAAG,CAAC,QCrExB,AAwCA,cACI,oCAMkB,WACpB,AAAI,YAAc,MAChB,YAAa,SAEf,SAAa,OAAO,CAAC,QAAS,YAAa,SACjC,SAAW,WAAa,QAAU,WAC5C,UAAa,EAAG,EAAI,EAAG,EAAE,EACvB,KAAK,IAAI,EAAG,EAAG,GAEjB,QAAsB,QAAQ,KAAK,WAAY,CAAC,QAAS,aACzD,GAAI,YAAc,KAChB,MAAO,KAEP,GAAI,WAAW,SAAW,EACxB,MAAO,MAAK,WAAW,IAAK,GAAI,CAAC,WAAW,GAAI,EAAG,IAC9C,GAAI,WAAW,SAAW,EAE/B,MAAO,MACI,WAAW,WAAW,IAAK,GAAI,GAC/B,CAAC,WAAW,GAAI,WAAW,GAAI,EAAG,IACxC,GAAI,WAAW,SAAW,EAE/B,MAAO,MAAK,WAAW,WAAW,WAAW,IAAK,GAAI,GAAI,GAAI,CACrD,WAAW,GAAI,WAAW,GAAI,WAAW,GAAI,EAAG,IAGzD,KAAM,IAAI,OACN,qEAE8B,WAAmB,YAKpD,QAAY,GAAG,CAAC,OCjFvB,AAqCA,cACI,mBACF,UAAyB,CAAC,MAAO,MAAO,OAExC,MAAO,QAAO,UAAU,KAAM,GAAI,OCzCpC,AAqCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAChC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SC3CzB,AAqDA,iBACI,eAAoD,YAAe,GACrE,OAAW,gBAAgB,EAAG,IAAK,mBAClB,gBAAgB,QAAS,UAAW,SAAU,gBAEhC,CAAC,EAAG,GAAI,QAAS,gBACnB,CAAC,KAAM,WAEpC,MAAO,QAAO,UACV,SAAU,OAAgC,OAGzC,WAAe,GAAG,CAAC,UCjE1B,AA0CA,kBACI,KACF,OAAS,gBAAgB,EAAG,IAAK,cACxB,gBAAgB,EAAG,IAAK,WACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA8B,CAAC,EAAG,GAAI,EAAG,IAEzC,MAAO,QAAO,UAAU,QAAS,QAG5B,YAAgB,GAAG,CAAC,WCvD3B,AA0CA,uBACI,KACF,OAAS,gBAAgB,EAAG,IAAK,mBACxB,gBAAgB,EAAG,IAAK,gBACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAmC,CAAC,EAAG,GAAI,EAAG,IAE9C,MAAO,QAAO,UAAU,aAAc,QAGjC,iBAAqB,GAAG,CAAC,gBCvDhC,AAsCA,eAAiC,QAC/B,WAAe,gBAAgB,OAAO,QAAS,eAEpB,CAAC,MAAO,QACnC,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QC7CxB,AAsCA,mBAAqC,GACnC,OAAW,gBAAgB,EAAG,IAAK,mBAEJ,CAAC,EAAG,IAEnC,MAAO,QAAO,UAAU,SAAU,QAE7B,cAAiB,GAAG,CAAC,YC7C5B,AAsCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SC7CzB,AAsCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBACP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,WAAc,GAAG,CAAC,SC5CzB,AA4CA,oBAAsC,QAAyB,IAC7D,OAAW,gBAAgB,EAAG,IAAK,oBAEH,CAAC,EAAG,UACN,CAAC,OAE/B,MAAO,QAAO,UACV,UAAW,OAAgC,OAG1C,cAAkB,GAAG,CAAC,aCtD7B,AAyCA,eACI,KACF,OAAS,gBAAgB,EAAG,IAAK,WACxB,gBAAgB,EAAG,IAAK,QACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA2B,CAAC,EAAG,GAAI,EAAG,IAEtC,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCtDxB,AA0CA,oBACI,KACF,OAAS,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAgC,CAAC,EAAG,GAAI,EAAG,IAE3C,MAAO,QAAO,UAAU,UAAW,QAG9B,cAAkB,GAAG,CAAC,aCvD7B,AAkCM,kBAAmB,gBACvB,GAAI,KAAO,EACT,KAAM,IAAI,OAAM,4CAGlB,UAA6B,CAAC,MAAO,KAAM,KAC3C,MAAO,QAAO,UAAU,SAAU,GAAI,OCxCxC,AA4CA,qCACI,cAA+B,OAAU,QAAW,OAAU,IAChE,OAAW,gBAAgB,EAAG,IAAK,8BACnC,AAAK,OACD,GAAG,OAAS,GAAK,GAAG,OAAS,EAC7B,IAAM;sBACU,GAAG,SACvB,AAAK,OACD,AAAK,MAAM,aACX,IAAM,2FAC6B,gBAEvC,QAAU,gBACS,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG3D,WAA0B,CAAC,EAAG,WAEN,CAAC,YAAa,KAAM,MAAO,UAGvC,OAAO,UACH,IAAK,OACL,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEpD,IAIJ,+BAAmC,GAAG,CAAC,8BC/E9C,AAsCA,cAAgC,GAC9B,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OC5CvB,AAuCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAChC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SC7CzB,AA0DA,cAAc,GAEZ,MAAK,QACD,AAAK,WAAW,GAAI,IAAM,8CACvB,SAEL,OAAW,gBAAgB,EAAG,IAAK,UAAW,UAEzC,IAAM,KAAQ,gBAAgB,GAAI,KAAM,WAAa,KAC1D,MAAO,QAAO,KAAK,KACjB,IAAO,MAAO,cAAS,OAAO,UAAU,IAAM,EAAE,IAAK,CAAC,IAAK,KAC3D,MAAI,MAAO,MACT,AAAK,kBACD,MAAM,MAAO,IAAI,MACjB,kFAGN,WAAW,QACJ,OAAM,MAkCnB,kBAEE,MAAK,QACD,AAAK,WAAW,GAAI,IAAM,+CACvB,YACL,AAAK,OACD,MAAM,QAAQ,MACd,IAAM,oFAGV,UAAc,qBAAqB,KAAM,OAAQ,WAAY,UAExD,IAAM,KAAQ,gBAAgB,GAAI,KAAM,YAAc,KAC3D,MAAO,QAAO,KAAK,KACjB,IAAO,MAAO,cAAS,OAAO,UAAU,IAAM,EAAE,GAAG,OAAQ,MAAO,KAClE,MAAI,MAAO,MACT,AAAK,kBACD,MAAM,MAAO,IAAI,MACjB,iGAGN,WAAW,QACJ,UA8Bb,yBAKE,MAAK,QACD,AAAK,WAAW,GAChB,IAAM,sDACH,SACL,AAAK,OACD,YAAa,QACb,IAAM,uDACV,AAAK,OACD,IAAM,MAAQ,aAAc,QAC5B,IAAM,4DACV,IAAO,aAAO,OAAS,OAAO,UAAU,IAAM,EAAE,GAAI,CAAC,GAAI,IACzD,kBAAW,QACJ,CAAC,KAAM,OAAM,GAAS,QAmCjC,0BAKE,MAAK,QACD,AAAK,WAAW,GAChB,IAAM,uDACH,YACL,AAAK,OACD,MAAM,QAAQ,OAAS,KAAK,MAAM,KAAO,cAAe,SACxD,IAAM,sEAEV,AAAK,OACD,IAAM,MAAQ,aAAc,QAC5B,IAAM,gEACV,QAAY,OAAO,UAAU,IAAM,EAAE,GAAG,MAAO,KAAM,IACrD,MAAI,KAAM,MACR,AAAK,kBACD,IAAI,MAAM,MAAO,GAAG,MACpB,yGAGN,WAAW,IAAI,OACR,KAkCX,kCAEE,AAAK,OACD,AAAK,WAAW,GAChB,IAAM,uDACV,AAAK,OACD,SAAW,MACP,MAAM,QAAQ,UAAY,QAAQ,MAAM,GAAK,YAAa,WAC9D,IACI,iFAGR,qBAAyB,SAAW,KACpC,GAAI,CAAC,kBAEH,QAAU,GACV,kBAAsB,QAAO,oBAC3B,QAAQ,KAAK,OAAO,oBAAoB,UAI5C,0BACI,iBAAmB,QAAQ,OAAO,WAAY,CAAC,UAAS,WAAa,sBAGhD,QAAQ,OACjC,QAAU,QAAQ,OAAO,WAAY,UAAS,WAC9C,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,gGAC+B,4CAGzC,qBAAyB,IAClB,MAAO,cAAS,OAAO,UAAU,EAAG,QAAS,KAAM,kBAE1D,AAAK,OACD,OAAM,KAAK,GAAK,GAAK,MACrB,IAAM,gMAGV,AAAK,OACD,MAAM,OAAS,EACf,IAAM,iFACiB,MAAM,eAEjC,eAAmC,GACnC,eAAQ,QAAQ,QACd,AAAI,OAAM,IAAM,MACd,YAAW,EAAE,MAAQ,OAAM,MAG/B,AAAI,uBAAyB,MAG3B,sBAAsB,QAAQ,GAAK,WAAW,EAAE,MAAQ,MAEnD,CAAC,MAAO,MAAO,YA2CxB,uBAEE,MAAO,QAAO,WAAW,GAG3B,4BACE,qBAAyB,OAAM,OAAO,GAAK,GAAK,MAAM,OACtD,GAAI,iBAAmB,EACrB,KAAM,IAAI,OACN;sEC7XR,AAuCA,cAAgC,GAC9B,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAC9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OC7CvB,AAsCA,mBAAqC,GACnC,OAAW,gBAAgB,EAAG,IAAK,mBAEJ,CAAC,EAAG,IACnC,MAAO,QAAO,UAAU,SAAU,QAE7B,aAAiB,GAAG,CAAC,YC5C5B,AAyCA,qBAAuC,GACrC,OAAW,gBAAgB,EAAG,IAAK,uBAKlB,WAAW,KAI1B,UAAc,IAAI,SAAS,IAAI,eAEd,KACf,SAAa,IAAI,GAAI,QAAQ,IAAI,MACjC,MAAO,OAET,MAAO,CAAC,MAAO,YAGjB,MAAO,UAAS,IAEX,eAAmB,GAAG,CAAC,cC9D9B,AAwDA,cACI,OAA8C,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,UACN,CAAC,iBAAkB,KAAM,UAEjD,MAAO,QAAO,UACV,IAAK,OAAgC,OAGpC,QAAY,GAAG,CAAC,OCnEvB,AAiDA,cAAgC,KAC9B,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA0B,CAAC,EAAG,GAAI,EAAG,IAErC,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OC3DvB,AAyDA,cACI,OAA8C,cAAiB,IACjE,OAAS,gBAAgB,EAAG,IAAK,OACjC,AAAI,GAAG,QAAU,QACf,IAAK,KAAK,GAAI,UAGhB,WAA0B,CAAC,EAAG,UACN,CAAC,KAAM,UAE/B,MAAO,QAAO,UACV,IAAK,OAAgC,OAGpC,SAAY,GAAG,CAAC,OCvEvB,AAsDA,qBAAuC,YAA6B,IAClE,YAAgB,gBAAgB,OAAQ,SAAU,cAKlD,GAHA,AAAI,OAAS,IACX,MAAO,QAAQ,KAAO,GAEpB,OAAS,QAAQ,KAAO,EAC1B,KAAM,OACF,gFACmB,QAAQ,qBAAqB,QAetD,aAAiB,WAAW,iBAC1B,aAAiB,QACJ,IAAI,QAAQ,KAAM,YACf,IAAI,QAAQ,YAExB,IAAI,KAAK,QAAS,WAAY,IAAI,KAAI,IAAI,SAAU,KAAM,YAC9D,KAAK,CAAC,QAEN,aAAiB,aACf,YAAgB,gBACC,YACD,IAAI,QACpB,MAAO,KAAI,GAAI,IAAI,KAAI,GAAI,KAAM,WAAW,YAE9C,MAAO,CAAC,MAAO,YAGjB,MAAO,UAAS,SAUX,eAAmB,GAAG,CAAC,cCzG9B,AAuBM,8BAA+B,WACnC,UAAa,EAAG,EAAI,KAAK,OAAQ,EAAE,EACjC,GAAI,KAAK,KAAK,OAAS,EAAI,KAAO,KAAO,EAAI,EAC3C,MAAO,GAGX,MAAO,GAGH,oDAEJ,SAAa,UAAU,OAAS,UAAU,WAC9B,UACC,YACG,EACd,YAAe,EAAG,IAAM,KAAM,MAC9B,AAAI,KAAK,QAAQ,OAAS,GACxB,IAAI,KAAK,UAAU,WAEnB,IAAI,KAAK,UAAU,cAGvB,MAAO,KAGH,gDAEJ,aAAiB,QACJ,OAAO,OACpB,YAAe,EAAG,IAAM,KAAM,MAC5B,AAAI,KAAK,QAAQ,OAAS,IACxB,SAAS,KAAK,OAAO,MAGzB,gBAAoB,KAAK,IAAI,KAAO,OAAO,MAC3C,MAAO,CAAC,SAAU,aAGd,0CAEJ,mBAAuB,KAAK,IAAI,GAAK,GACrC,MAAO,kBAAiB,MAAO,eAAgB,MAG3C,mDAEJ,AAAK,OACD,qBAAqB,KAAM,MAC3B,IAAM,GAAG,uDACO,iBAAiB,eAQjC,uCAEJ,GAAI,qBAAqB,KAAM,MAC7B,MAAO,MAET,WAAyB,GACzB,UAAa,EAAG,EAAI,KAAM,EAAE,EAC1B,AAAI,KAAK,QAAQ,KAAO,IACtB,OAAO,KAAK,GAGhB,YAAK,QAAQ,MAAQ,OAAO,KAAK,OAC1B,OAIH,sCACJ,MAAO,MAAK,IAAI,UAAa,CAAC,EAAG,OAC5B,KAAK,OAAU,EAAE,GAAK,EAAE,IACxB,IAAI,GAAK,EAAE,IAGZ,wCACJ,QAAsB,GACtB,UAAa,KAAO,QAAS,EAAI,KAAM,EAAE,EACvC,IAAI,KAAK,GAEX,MAAO,KC3GT,AA6DA,oBACI,OAA8C,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,kBAEtB,eAAe,KAAM,GAAG,YACxB,IAAI,GAAI,KAAM,MACjB,IAAI,GAAI,QACR,IAAI,KACJ,KAAI,EAAG,QACP,IAAI,OACF,KAAI,QAAQ,KAAM,EAAE,OAAQ,GAExC,GAAI,UACF,aAAiB,qBAAqB,IAAI,MAAO,MACjD,MAAO,SAAQ,IAAK,UAEtB,MAAO,KAGF,cAAkB,GAAG,CAAC,aChF7B,AAyCA,qBACI,KACF,OAAW,gBAAgB,EAAG,IAAK,aAAc,WACtC,gBAAgB,EAAG,IAAK,aAAc,QACjD,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAiC,CAAC,EAAG,GAAI,EAAG,IAE5C,MAAO,QAAO,UAAU,WAAY,QAG/B,eAAmB,GAAG,CAAC,cCpD9B,AAsCA,qBAAuC,GACrC,OAAW,gBAAgB,EAAG,IAAK,aAAc,eAChB,CAAC,EAAG,IACrC,MAAO,QAAO,UAAU,WAAY,QAG/B,eAAmB,GAAG,CAAC,cC5C9B,AAwCA,oBACI,KACF,OAAW,gBAAgB,EAAG,IAAK,YAAa,WACrC,gBAAgB,EAAG,IAAK,YAAa,QAChD,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAgC,CAAC,EAAG,GAAI,EAAG,IAC3C,MAAO,QAAO,UAAU,UAAW,QAE9B,cAAkB,GAAG,CAAC,aCjD7B,AA0CA,qBACI,KACF,OAAW,gBAAgB,EAAG,IAAK,aAAc,WACtC,gBAAgB,EAAG,IAAK,aAAc,QACjD,kCAA2B,GAAG,MAAO,GAAG,OAGjC,WAAW,UAAU,EAAG,GAAI,WAAW,WAAW,EAAG,KAGvD,eAAmB,GAAG,CAAC,cCpD9B,AAuDA,kBACI,4CAGF,OAAW,gBAAgB,EAAG,IAAK,qBACjB,MAER,gBACS,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG3D,AAAK,OACD,IAAI,OAAS,EACb,IAAM,uDAAuD,IAAI,SACrE,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IAAM,wEACa,0BAA0B,cACjD,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,wEACiB,+BAA+B,UAG5D,WAA8B,CAAC,EAAG,WAEN,CAAC,WAAY,QAAS,UAAK,qBAG3C,OAAO,UACH,QAAS,OACT,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,YAAgB,GAAG,CAAC,WClG3B,AA0EA,oBACI,aAA+D,CAAC,EAAG,EAAG,4CAGxC,mBAEhC,AAAI,WAAa,KACf,UAAY,CAAC,EAAG,EAAG,GAEnB,gBACI,+DAIN,OAAW,gBAAgB,EAAG,IAAK,iBAEzB,gBACS,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGxE,AAAK,OACD,IAAI,OAAS,EACb,IAAM,qDAAqD,IAAI,SACnE,AAAK,OACD,aAAe,QACf,IAAM,gFACuB,cACjC,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IAAM,0EACa,0BAA0B,cACjD,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,0EACiB,+BAA+B,UAG5D,WAAgC,CAAC,EAAG,WAGhC,CAAC,WAAY,QAAS,UAAK,gBAAiB,WAAY,eAGhD,OAAO,UACH,UAAW,OACX,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAIhE,IAGF,cAAkB,GAAG,CAAC,aCtI7B,AA4DA,4BACI,+CAEsB,IACxB,OAAW,gBAAgB,EAAG,IAAK,4BAEK,CAAC,EAAG,UAEf,CAAC,WAAY,QAAS,UAAK,4BAGzC,OAAO,UACH,kBAAmB,OACnB,OAEnB,MAAO,CAAC,OAAQ,OAAO,GAAI,QAAS,OAAO,IAGtC,sBAA0B,GAAG,CAAC,qBC9ErC,AAwDA,kBACI,KACF,OAAS,gBAAgB,EAAG,IAAK,cACxB,gBAAgB,EAAG,IAAK,WACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,AAAI,GAAG,QAAU,QACf,IAAK,KAAK,GAAI,SACd,GAAK,KAAK,GAAI,UAEhB,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA8B,CAAC,EAAG,GAAI,EAAG,IAEzC,MAAO,QAAO,UAAU,QAAS,QAG5B,YAAgB,GAAG,CAAC,WCzE3B,AAwDA,eACI,OAA8C,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,UACN,CAAC,KAAM,UAEhC,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,SAAa,GAAG,CAAC,QCnExB,AAuDA,cACI,OAA8C,cAAiB,IACjE,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,UACN,CAAC,KAAM,UAG/B,MAAO,QAAO,UACH,IAAK,OACL,OAGN,QAAY,GAAG,CAAC,OCpEvB,AAwDA,kBACI,KACF,OAAS,gBAAgB,EAAG,IAAK,cACxB,gBAAgB,EAAG,IAAK,WACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,AAAI,GAAG,QAAU,QACf,IAAK,KAAK,GAAI,SACd,GAAK,KAAK,GAAI,UAGhB,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA8B,CAAC,EAAG,GAAI,EAAG,IAEzC,MAAO,QAAO,UAAU,QAAS,QAG5B,YAAgB,GAAG,CAAC,WC1E3B,AAqDA,oBACI,iBAEF,AAAK,OACD,OAAS,WAAa,OAAS,YAC/B,IAAM,+DACK,SAEf,OAAW,gBAAgB,EAAG,IAAK,aACnC,GAAI,GAAG,OAAS,EACd,KAAM,IAAI,OACN,kEAGN,AAAK,OACD,SAAS,SAAW,GAAG,KACvB,IAAM,wCAAwC,GAAG,aACtC,SAAS,WACxB,gBAAoB,OAAS,UAAY,EAAI,EAC7C,UAAa,EAAG,EAAI,GAAG,KAAM,IAC3B,AAAK,OACD,SAAS,GAAG,SAAW,EACvB,IAAM,yDACV,AAAK,OACD,SAAS,GAAG,IAAM,GAAK,SAAS,GAAG,IAAM,GAAG,MAAM,GAAK,aACnD,SAAS,GAAG,IAAM,GAAK,SAAS,GAAG,IAAM,GAAG,MAAM,GAAK,YAC3D,IAAM,wBAAwB,wCACpB,GAAG,MAAM,GAAK,iDACX,GAAG,SAGtB,UAA8B,CAAC,SAAU,aACT,CAAC,EAAG,IACpC,MAAO,QAAO,UACV,UAAW,OAAgC,OAG1C,cAAkB,GAAG,CAAC,aC1F7B,AAuDA,cAAgC,KAC9B,OAAS,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,WAA0B,CAAC,EAAG,GAAI,EAAG,IAErC,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OCjEvB,AAmCA,iBAAmC,GACjC,OAAW,gBAAgB,EAAG,IAAK,gBACrB,GACd,MAAO,QAAO,UAAU,SAAU,CAAC,EAAG,IAAK,OAGtC,WAAe,GAAG,CAAC,UCzC1B,AA4CA,kBACI,OAA8C,cACnC,IACb,EAAI,gBAAgB,EAAG,IAAK,WAC5B,SAAa,eAAe,KAAM,EAAE,aACtB,KAAK,EAAG,KAAM,wBACR,MAAM,MAC1B,AAAK,UACH,eAAgB,qBAAqB,MAAM,MAAO,OAEpD,eACI,OAAO,IAAI,KAAK,EAAG,WAAY,QAAQ,MAAO,0BACjC,KAAK,WAAY,KAAM,UACxC,MAAO,CAAC,KAAM,MAAO,UAGhB,YAAgB,GAAG,CAAC,WChB3B,uBACI,oBAGF,UAAc,gBAAgB,KAAM,OAAQ,mBACjC,qBAAqB,EAAG,IAAK,mBAC7B,qBAAqB,EAAG,IAAK,uBAE5B,gBACM,GAClB,UAAa,EAAG,EAAI,UAAU,OAAQ,KACpC,WAAe,UAAU,GAAG,OAAO,GAAG,GAAI,GAAG,IAC7C,UAAU,KAAK,OAAO,IACtB,UAAU,KAAK,OAAO,IACtB,OAAQ,OAAO,GAEjB,SAAyB,QACA,GACzB,UAAa,EAAG,EAAI,UAAU,OAAQ,GAAK,EACzC,KAAK,KAAK,UAAU,IACpB,KAAK,KAAK,UAAU,EAAI,IAE1B,MAAO,CAAC,KAAM,MAET,iBAAqB,GAAG,CAAC,gBCpEhC,AAgDA,sBACI,kCACa,IACf,YAAgB,gBAAgB,OAAQ,SAAU,2BAC9B,QAAQ,cACX,QAAQ,KACzB,GAAI,YAAc,EAChB,KAAM,IAAI,OACN,+DACG,gBAET,GAAI,SAAW,EACb,KAAM,IAAI,OAAM,gDAAgD,YAIlE,KAAO,MAAQ,KAAK,SAGpB,aACI,WAAa,EAAI,QAAQ,QAAS,CAAC,EAAG,KAAO,eAEf,CAAC,OAAQ,gBACX,CAAC,WAAY,KAAM,gBAGvC,OAAO,UACH,YAAa,OACb,OAGhB,MAAO,YAAa,EAAI,QAAQ,IAAK,CAAC,IAAI,OAAqB,IAG1D,gBAAoB,GAAG,CAAC,eClF/B,AAyCA,mBACI,KACF,OAAS,gBAAgB,EAAG,IAAK,eACxB,gBAAgB,EAAG,IAAK,YACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAA+B,CAAC,EAAG,GAAI,EAAG,IAE1C,MAAO,QAAO,UAAU,SAAU,QAG7B,aAAiB,GAAG,CAAC,YCtD5B,AAqCM,eACF,YAAsC,WACxC,GAAI,QAAU,aACZ,UAAa,MAAM,MAAO,iBACb,MAAM,MAAO,WAC1B,MAAO,SAAQ,MAAM,OAEvB,WAAe,oBAAoB,cAAc,OAAQ,OACzD,MAAO,QAAO,WAAW,OAAQ,MAAO,OC7C1C,AAsCM,eACF,YAAsC,WACxC,GAAI,QAAU,aACZ,UAAa,MAAK,MAAO,iBACZ,MAAM,MAAO,WAC1B,MAAO,SAAQ,MAAM,OAEvB,WAAe,mBAAmB,cAAc,OAAQ,OACxD,MAAO,QAAO,WAAW,OAAQ,MAAO,OC9C1C,AAsCA,mBAAqC,GACnC,OAAW,gBAAgB,EAAG,IAAK,mBAEJ,CAAC,EAAG,IACnC,MAAO,QAAO,UAAU,SAAU,QAG7B,aAAiB,GAAG,CAAC,YCN5B,uBACI,OACF,QAAY,gBAAgB,GAAI,KAAM,oBAC1B,gBAAgB,GAAI,KAAM,gBAEtC,AAAK,OACD,IAAI,OAAS,GAAK,IAAI,OAAS,EAC/B,IAAM,+DACC,IAAI,YAAY,IAAI,SAE/B,SAAa,QAAQ,IAAK,CAAC,GAAI,SAClB,QAAQ,IAAK,CAAC,EAAG,KAC9B,MAAO,QAAO,KAAM,MAGf,iBAAqB,GAAG,CAAC,gBCtDhC,AAoDA,cACI,yBAAoE,GACtE,OAAW,gBAAgB,EAAG,IAAK,OACnC,GAAI,GAAG,OAAS,EACd,KAAM,IAAI,OAAM,sDAGlB,UAA0B,CAAC,SAAU,sBACT,CAAC,EAAG,IAChC,MAAO,QAAO,UACV,MAAO,OACP,OAGC,QAAY,GAAG,CAAC,OCzCvB,gBACI,yBACgB,GAClB,cACI,SAAS,SAAW,EACpB,IAAM,oDACH,IAAI,EAAG,CAAC,UAAW,eAGrB,UAAc,GAAG,CAAC,SCTzB,gBACI,yBACgB,GAClB,cACI,SAAS,SAAW,GAAK,SAAS,GAAG,SAAW,GAC5C,SAAS,GAAG,SAAW,EAC3B,IAAM,yDACH,IAAI,EAAG,SAAU,eAGnB,UAAc,GAAG,CAAC,SCVzB,gBACI,yBAEgB,GAClB,cACI,SAAS,SAAW,GAAK,SAAS,GAAG,SAAW,GAC5C,SAAS,GAAG,SAAW,GAAK,SAAS,GAAG,SAAW,EACvD,IAAM,yDACH,IAAI,EAAG,SAAU,eAGnB,UAAc,GAAG,CAAC,SCXzB,gBACI,yBAKgB,GAClB,cACI,SAAS,SAAW,GAAK,SAAS,GAAG,SAAW,GAC5C,SAAS,GAAG,SAAW,GAAK,SAAS,GAAG,SAAW,GACnD,SAAS,GAAG,SAAW,EAC3B,IAAM,yDACH,IAAI,EAAG,SAAU,eAGnB,UAAc,GAAG,CAAC,SCxCzB,AA4EA,yBACI,uBACF,OAAW,gBAAgB,EAAG,IAAK,kBAEnC,AAAK,OACD,GAAG,MAAQ,EAAI,WAAW,OAC1B,IAAM,cAAc,GAAG,sCACnB,WAAW,UAEnB,AAAK,OACD,SAAS,SAAW,WAAW,OAC/B,IAAM,qBACF,SAAS,wCAAwC,WAAW,UAEpE,AAAK,OACD,GAAG,MAAM,OACL,SACM,EAAI,GAAK,GAAK,WAAW,OACpB,GACD,GAAI,SAAS,EAAI,GAAG,GAAK,SAAS,EAAI,GAAG,IACtC,WAAW,EAAI,KACnB,EAEA,EAET,IACJ,IAAM,4BAA4B,GAAG,MAAM,MAAM,oBAC7C,SAAS,+CACT,WAAW,cAEnB,WAAqC,CAAC,EAAG,UACN,CAAC,WAAY,UAEhD,MAAO,QAAO,UACV,eAAgB,OAChB,OAGC,mBAAuB,GAAG,CAAC,kBClHlC,AAwDA,eACI,wDAGF,AAAI,WAAa,MACf,WAAY,CAAC,EAAG,IAElB,AAAI,SAAW,MACb,SAAU,GAEZ,AAAI,QAAQ,GACV,OAAM,SAGR,OAAW,gBAAgB,OAAO,IAAK,eAC7B,gBACS,GAEnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG3D,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IAAM,qEACa,0BAA0B,cAEjD,aAAiB,AAAU,kBACvB,IAAI,MAAO,YAAa,QAAS,UAAW,gBAE5C,CAAC,SAAS,eAAgB,SAAS,2BAQvC,AAAI,QAAQ,OACV,YAAc,6BACV,CAAC,SAAS,aAAc,SAAS,aAAc,UAEnD,YAAc,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,IAG7B,kBAAsB,SAAS,KAAO,GAAK,SAAS,KAAO,kCAClB,6BACrC,CAAC,SAAS,SAAU,SAAS,SAAU,SAAU,0BAChC,cAAgB,MAAM,mBAEvC,cAAgB,IAAM,eAAe,IAAK,SAAU,2BAEtC,cAAgB,MAC9B,IAAM,QAAQ,WAAY,YAAa,QAAS,cAChD,IAAM,QAAQ,WAAY,YAAa,QAAS,gBAC1C,gBAEE,cAAgB,EAAI,eAAe,EAAG,SAAU,eAE5D,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAGtD,IAMT,yEAGE,aAAiB,YAAY,IAAI,GAAK,EAAE,eACrB,YAAY,IAAI,GAAK,EAAE,mBACnB,WAAW,OAAO,SAAU,wBAC/B,WAAW,IAAI,OAAW,GAAI,eAAe,GAAK,GAAK,UAC5D,WAAW,IAAI,OAAU,EAAI,YAAY,aACvC,WAAW,IAAI,OAAU,CAAC,SAAS,GAAI,OAAO,WACjD,WAAW,IAAI,OAAU,CAAC,EAAG,YAAY,KACvD,MAAO,CAAC,SAAU,OAMpB,4DAIE,uBAA2B,YAAY,IAAI,OAClC,EAAK,GAAI,GAAM,UAAS,GAAK,kBAEhB,mBAAmB,IAAI,GAAK,EAAI,iBAIhC,cAAc,IAAI,GAAK,KAAK,MAAM,EAAI,gBACxC,cAAc,IAAI,OAAU,EAAI,cAAc,IAClE,MAAO,eAAc,IAAI,OAChB,CAAC,cAAc,GAAI,YAAY,KAInC,SAAa,GAAG,CAAC,QChKxB,AAsDA,cACI,aACF,UAAY,gBAAgB,MAAM,OAAQ,YAC/B,gBAAgB,MAAK,MAAO,OACvC,CAAC,MAAO,MAAQ,eAAe,MAAO,MAEtC,WAA0B,CAAC,EAAG,MAAO,EAAG,MAExC,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OCjEvB,AA0CA,gBAAkC,SAChC,OAAW,gBAAgB,EAAG,IAAK,gBACpB,gBAAgB,MAAO,QAAS,gBAEnB,CAAC,EAAG,GAAI,MAAO,QAC3C,MAAO,QAAO,UAAU,MAAO,QAG1B,UAAc,GAAG,CAAC,SClDzB,AA0DA,eACI,OAA8C,cAAiB,IACjE,OAAS,gBAAgB,EAAG,IAAK,QAEjC,AAAI,GAAG,QAAU,QAEf,IAAK,KAAK,GAAI,UAGhB,WAA2B,CAAC,EAAG,UACN,CAAC,KAAM,UAEhC,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,SAAa,GAAG,CAAC,QC1ExB,AAiCA,eACI,0BAEF,SAAa,cAAc,cACd,KACb,GAAI,OAAS,MAAQ,QAAU,UAC7B,OAAS,GAAI,cAAa,cACjB,QAAU,QACnB,OAAS,GAAI,YAAW,cACf,QAAU,OACnB,OAAS,GAAI,YAAW,UAExB,MAAM,IAAI,OAAM,qBAAqB,SAEvC,UAAa,EAAG,EAAI,KAAM,IACxB,OAAO,GAAK,eAEd,MAAO,QAAO,WAAW,OAAQ,MAAO,OAGnC,SAAa,GAAG,CAAC,QCpCxB,WAA4B,kCCjB5B,IAAA,kBAmDE,qDAGE,KAAK,KAAO,MACZ,KAAK,OAAS,aACd,KAAK,MAAQ,MACb,KAAK,QAAU,IACf,KAAK,UAAY,UACjB,AAAI,KAAK,WACP,MAAK,MAAQ,KAAK,KAAO,KAAK,OAAS,EACvC,KAAK,MAAQ,KAAK,KAAO,KAAK,OAAS,GAEzC,cAAkB,MAAc,KAAK,SACrC,KAAK,OAAS,AAAW,gBAAK,UAAU,YAInC,YACL,GAAI,CAAC,MAAM,KAAK,UACd,UAAc,KAAK,QACnB,YAAK,QAAU,IACR,MAGT,4BACc,GACd,KAAO,CAAC,UACN,YACA,EACE,IAAK,EAAI,KAAK,SAAW,EACzB,GAAK,EAAI,KAAK,SAAW,EACzB,EAAI,GAAK,GAAK,GAAK,SACZ,GAAK,GAAK,IAAM,GAEzB,UAAY,KAAK,KAAK,GAAO,KAAK,IAAI,GAAK,GAC3C,QAAU,KAAK,KAAO,KAAK,OAAS,GAAK,MACzC,QAAU,KAAK,KAAO,KAAK,OAAS,GAAK,MAEzC,AAAI,EAAC,KAAK,WAAa,KAAK,iBAAiB,WAC3C,SAAU,IAId,MAAI,EAAC,KAAK,WAAa,KAAK,iBAAiB,WAC3C,MAAK,QAAU,KAAK,aAAa,UAE5B,KAAK,aAAa,SAInB,oBACN,MAAI,MAAK,OAAS,MAAQ,KAAK,QAAU,UAChC,MAEF,KAAK,MAAM,OAIZ,wBACN,MAAO,QAAS,KAAK,OAAS,OAAS,KAAK,kBA9GhD,MA6HE,mCAGE,KAAK,MAAQ,MACb,KAAK,KAAO,EAAI,KAChB,KAAK,MAAQ,MAEb,cAAkB,MAAc,KAAK,SACrC,KAAK,MAAQ,AAAW,gBAAK,UAAU,YACvC,KAAK,MAAQ,GAAI,aAAY,EAAG,EAAG,MAAO,GAAO,KAAK,SAEtD,AAAI,MAAQ,EACV,KAAK,EAAI,MAAS,EAAI,EAEtB,KAAK,EAAI,MAAS,EAAI,EAExB,KAAK,EAAI,EAAI,KAAK,KAAK,EAAI,KAAK,GAI3B,YACL,mBACA,QACE,EACE,GAAI,KAAK,MAAM,YACf,EAAI,EAAK,KAAK,EAAI,QACX,GAAK,GAMd,GALA,GAAK,EAAI,EACT,GAAK,EAAI,EACT,GAAK,EAAK,KAAQ,GAAK,GACvB,GAAM,GAAM,GAAO,KAAK,EAAK,GAAI,EAAI,KAAK,IAAI,IAC9C,EAAI,KAAK,QACL,EAAI,IAAM,KAAK,IAAI,GAAK,GAC1B,MAGJ,SAAK,EAAI,KAAK,KAAQ,KAAK,EAAI,EAC/B,AAAI,KAAK,MAAQ,GACf,IAAK,KAAK,IAAI,KAAK,QAAS,EAAI,KAAK,QAEhC,KAAK,aAAa,GAGnB,oBACN,MAAI,MAAK,QAAU,UACV,MAEF,KAAK,MAAM,uBA5KtB,MAsLE,iBACU,QAAS,cAYjB,GAQM,KAAA,eAAiB,IACpB,KAAK,OAAS,MAAQ,KAAK,QAAU,UAnBxC,KAAK,IAAM,KACX,KAAK,MAAQ,MAAM,KACnB,KAAK,MAAQ,MACb,AAAI,MAAQ,MACV,MAAO,KAAK,UAEd,AAAI,MAAO,OAAS,UAClB,MAAO,KAAK,YAGV,CAAC,KAAK,kBAAoB,KAAK,OAAS,EAC1C,KAAM,IAAI,OACN,0BAA0B,UAAS,qCAEzC,KAAK,OAAS,AAAW,gBAAK,MAOxB,oBACN,MAAI,MAAK,iBACA,MAEF,KAAK,MAAM,OAGpB,YACE,MAAO,MAAK,aAAa,KAAK,IAAM,KAAK,MAAQ,KAAK,YCtN1D,AAwCA,sBACI,iBAA0C,QACf,gBAO7B,GANA,AAAI,MAAQ,MACV,MAAO,GAET,AAAI,OAAS,MACX,OAAQ,WAEN,QAAU,WAAa,QAAU,QACnC,KAAM,IAAI,OAAM,yBAAyB,SAE3C,WAAe,GAAI,WAAU,MAAO,KAAM,MAAO,UACrC,OAAO,MAAO,OAC1B,UAAa,EAAG,EAAI,IAAI,OAAO,OAAQ,IACrC,IAAI,OAAO,GAAK,OAAO,YAEzB,MAAO,KAAI,WAGN,gBAAoB,GAAG,CAAC,eC5D/B,AAuCA,uBACI,YAA2B,SAAY,cAEzC,GAAI,OAAS,MAAS,QAAuB,OAC3C,KAAM,IAAI,OAAM,yBAAyB,SAE3C,cACI,GAAI,aAAY,MAAM,OAAQ,MAAO,GAAuB,UACpD,OAAO,MAAO,OAC1B,UAAa,EAAG,EAAI,IAAI,OAAO,OAAQ,IACrC,IAAI,OAAO,GAAK,UAAU,YAE5B,MAAO,KAAI,WAGN,iBAAqB,GAAG,CAAC,gBCtDhC,AA4CA,wBACI,aAA6B,SAAY,QAAqB,gBAEhE,QAAY,OAAO,MAAO,cACX,GAAI,eAAc,OAAQ,OAAQ,KAAM,MACvD,UAAa,EAAG,EAAI,IAAI,OAAO,OAAQ,IACrC,IAAI,OAAO,GAAK,OAAO,YAEzB,MAAO,KAAI,WAGN,kBAAsB,GAAG,CAAC,iBCvDjC,AAyCM,eACF,iBAAoC,QACT,WAC7B,GAAI,QAAS,EACX,KAAM,IAAI,OAAM,8BAGlB,UAA0B,CAAC,MAAO,KAAM,WAAM,OAE9C,MAAO,QAAO,UAAU,MAAO,GAAiB,OClDlD,AAwCA,eAAiC,QAC/B,WAAe,gBAAgB,OAAO,QAAS,eAEpB,CAAC,MAAO,QACnC,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QC/CxB,AAsCA,qBAAuC,GACrC,OAAW,gBAAgB,EAAG,IAAK,qBAEF,CAAC,EAAG,IACrC,MAAO,QAAO,UAAU,WAAY,QAE/B,eAAmB,GAAG,CAAC,cC5C9B,AAuCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QC/CxB,AAuCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAG1B,UAAc,GAAG,CAAC,SC/CzB,AA0DA,kBACI,QACF,OAAW,gBAAgB,EAAG,IAAK,kBAEL,CAAC,EAAG,UACN,CAAC,KAAM,MAEnC,MAAO,QAAO,UACV,QAAS,OAAgC,OAGxC,YAAgB,GAAG,CAAC,WCrE3B,AA6BA,oBAAoB,GAClB,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IAAM,qDAAqD,GAAG,SAC3D,QAAQ,GAAI,GAGd,cAAkB,GAAG,CAAC,aCrC7B,AA+BA,oBAAoB,QAClB,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IAAM,qDAAqD,GAAG,SAC3D,QAAQ,GAAI,MAGd,cAAkB,GAAG,CAAC,aCvC7B,AA+BA,oBAAoB,QAClB,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IAAM,qDAAqD,GAAG,SAC3D,QAAQ,GAAI,MAGd,cAAkB,GAAG,CAAC,aCvC7B,AA+BA,oBAAoB,QAClB,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IAAM,qDAAqD,GAAG,SAC3D,QAAQ,GAAI,MAGd,cAAkB,GAAG,CAAC,aCvC7B,AAuCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBACP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAG1B,WAAc,GAAG,CAAC,SC9CzB,AAuCA,gBAAkC,GAChC,OAAW,gBAAgB,EAAG,IAAK,gBAEP,CAAC,EAAG,IAEhC,MAAO,QAAO,UAAU,MAAO,QAE1B,UAAc,GAAG,CAAC,SC9CzB,AAqCM,gBACF,aACF,GAAM,cAAa,QAAU,QAAU,UAAa,MAAM,QAAQ,SAC9D,QAAU,YACZ,KAAM,IAAI,OACN,kFAGN,GAAI,QAAU,UAAY,aAAa,QACnC,CAAE,iBAAiB,aACrB,KAAM,IAAI,OACN,6EAGN,UAAwB,iBACQ,GAChC,MAAO,YAAW,MAAO,MAAO,cAAe,OCrDjD,AAwCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCuBxB,0BACI,yDAEyD,CAAC,EAAG,cACjC,QAC9B,OAAW,gBAAgB,EAAG,IAAK,oCAE/B,gBAAgB,gBAAiB,kBAAmB,oCAEpD,gBAAgB,gBAAiB,kBAAmB,uBAE9C,gBACS,GAMnB,GALA,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAGvD,aAAe,OACjB,KAAM,IAAI,OACN,sFAIN,AAAK,OACD,IAAI,OAAS,EACb,IAAM,gEACM,IAAI,SACpB,AAAK,OACD,iBAAiB,OAAS,EAC1B,IAAM,2EACU,iBAAiB,SACrC,AAAK,OACD,iBAAiB,OAAS,EAC1B,IAAM,2EACU,iBAAiB,SACrC,AAAK,OACD,iBAAiB,MAAM,KAAO,EAC9B,IACI,yFACuB,iBAAiB,MAAM,OACtD,AAAK,OACD,iBAAiB,MAAM,KAAO,EAC9B,IAAM,yFAC2B,iBAAiB,MAAM,OAE5D,eAAmB,iBAAiB,MAAM,qBAChB,iBAAiB,MAAM,GACjD,AAAK,OACD,iBAAiB,MAAM,KAAO,WAAa,kBAC3C,IACI,6EACW,WAAa,8BACb,iBAAiB,MAAM,OAE1C,cAAkB,gBACd,IAAK,iBAAkB,QAAS,MAAK,WAAY,0BAC7B,MAEpB,OAAO,UAAW,iBAAkB,gBAAiB,QAAS,YAElE,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,oBAAwB,GAAG,CAAC,mBC1InC,AAkDA,+BACI,KACF,OAAW,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aAEnC,AAAK,OACD,GAAG,QAAU,GAAG,MAChB,IAAM,kDACF,GAAG,iBAAiB,GAAG,WAE/B,AAAK,OACD,GAAG,OAAS,EAAG,IAAM,qCAAqC,GAAG,WAEjE,AAAK,OACD,GAAG,OAAS,EAAG,IAAM,qCAAqC,GAAG,WAEjE,UAAc,KAAM,IAAG,aACT,KAAM,IAAG,YACV,GAAI,KAAI,kBAEJ,EACjB,UAAa,EAAG,EAAI,MAAM,OAAQ,IAChC,AAAK,KAAK,IAAI,MAAM,KAClB,aAIJ,YAAe,GAAI,cAAa,CAAC,YAAa,GAAG,eACjC,GAAI,cAAa,CAAC,YAAa,SAC/C,UAAa,KAAO,EAAG,EAAI,MAAM,OAAQ,IACvC,AAAK,KAAK,IAAI,MAAM,KAClB,SAAO,OAAO,IAAK,MAAM,GACzB,QAAQ,OAAO,IAAK,EACpB,MAGJ,MAAO,CAAC,QAAO,WAAY,QAAQ,YAE9B,mBAAuB,gBCxF9B,AAsCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAC/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QC3CxB,AAsCA,cAAgC,GAC9B,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAE9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OC7CvB,AAsCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eACR,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QC5CxB,AA6BA,kBACI,cACF,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IACI,mDAAmD,GAAG,eACvD,MAAM,GAAI,CAAC,OAAQ,CAAC,OAEtB,YAAgB,GAAG,CAAC,WCtC3B,AA6BA,kBACI,cAEF,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IACI,mDAAmD,GAAG,eACvD,MAAM,GAAI,MAAO,MAEnB,YAAgB,GAAG,CAAC,WCvC3B,AA6BA,kBACI,cAEF,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IACI,mDAAmD,GAAG,eACvD,MAAM,GAAI,MAAO,MAEnB,YAAgB,GAAG,CAAC,WCvC3B,AA6BA,kBACI,cAEF,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAK,QACD,GAAG,OAAS,EACZ,IACI,mDAAmD,GAAG,eACvD,MAAM,GAAI,MAAO,MAEnB,YAAgB,GAAG,CAAC,WCvC3B,AAgDA,kBAAoC,WAA4B,IAC9D,YAAgB,gBAAgB,OAAQ,SAAU,UAAW,WAK7D,GAHA,AAAI,MAAQ,IACV,KAAM,QAAQ,KAAO,GAEnB,MAAQ,QAAQ,KAAO,EACzB,KAAM,OACF,4EACmB,QAAQ,oBAAoB,OAGrD,WAA8B,CAAC,OAAQ,eACX,CAAC,KAE7B,MAAO,QAAO,UACV,QAAS,OAAgC,OAGxC,YAAgB,GAAG,CAAC,WCnE3B,AAyCA,cAAc,QACZ,OACI,OAAM,QAAU,YAChB,IAAM,6DACS,OAAM,UAEzB,WAA0B,CAAC,cAE3B,MAAO,QAAO,UAAU,IAAK,QAGxB,QAAY,GAAG,CAAC,OCpDvB,AAyCA,eAAe,QACb,OACI,OAAM,QAAU,YAChB,IAAM,8DACS,OAAM,UAEzB,WAA2B,CAAC,cAE5B,MAAO,QAAO,UAAU,KAAM,QAGzB,SAAa,GAAG,CAAC,QCpDxB,AAgDA,gBAAgB,QACd,uBAA2B,OAAM,MAAM,OAAM,MAAM,OAAS,SAC9C,OAAM,KAAO,uBAE3B,GAAI,oBAAsB,GACxB,iBAAqB,QAAQ,OAAO,CAAC,MAAO,qBAC5C,IAAM,KAAK,mBAIX,gBAAoB,CAAC,MAAO,EAAK,oBAAqB,cACpC,QAAQ,KAAK,QAAQ,CAAC,MAAO,+BAC7B,QAAQ,KAAK,QAAQ,CAAC,MAAO,mCAG3C,QAAQ,MAAM,UAAW,CAAC,EAAG,GAAI,CAAC,MAAO,mBAAqB,IAAK,iBACvC,IAC5B,QAAQ,MAAM,UAAW,CAAC,EAAG,GAAI,CAAC,MAAO,mBAAqB,IAAK,GACnE,OAAO,OAED,OAAO,CAAC,UAAW,eAAgB,KACnC,OAAO,CAAC,UAAW,eAAgB,gBAEzC,QAAQ,QAAQ,EAAG,GAAI,CAAC,YAAY,GAAI,YAAY,KACxD,IAAM,KAAK,cAIb,GAFA,IAAM,KAAK,KAEP,OAAM,OAAS,GAAK,OAAM,MAAM,KAAO,GACzC,SAAa,WACC,OAAM,MAAM,GAC1B,IAAM,QAAQ,IAAK,CAAC,OAAO,IAAI,MAAM,GAAK,OAAO,IAAI,MAAM,KAC3D,KAAK,UAEP,MAAO,KAGF,UAAc,GAAG,CAAC,SCrFzB,AA6DA,gBACI,uBAA+D,GACjE,OAAW,gBAAgB,EAAG,IAAK,gBAEN,CAAC,EAAG,SACP,CAAC,gBAAiB,MAE5C,MAAO,QAAO,UACH,OAAQ,OACR,MAGN,UAAc,GAAG,CAAC,SCzEzB,AA+CA,eAAe,kBACb,OACI,OAAM,QAAU,UAChB,IAAM,mDAAmD,OAAM,SAEnE,uBAAyB,OAAM,MAAM,OAAM,MAAM,OAAS,SAC5C,OAAM,KAAO,iCAG3B,GAAI,WAAa,MAAQ,UAAY,oBAEnC,UAAc,OAAM,MAAM,IAAI,GAAK,QACtB,OAAM,MAAM,IAAI,GAAK,GAClC,KAAK,OAAM,MAAM,OAAS,GAAK,UAC/B,cAAgB,MAAM,OAAO,MAAO,MACpC,mBAAqB,kBACZ,WAAa,MAAQ,UAAY,oBAE1C,eAAmB,OAAM,MAAM,IAAI,GAAK,GACxC,WAAW,OAAM,MAAM,OAAS,GAAK,UAAY,mBACjD,cAAgB,OAAO,CAAC,OAAO,MAAM,aAAc,OAAM,MAAM,OAAS,GACxE,mBAAqB,cAErB,eAAgB,OAIlB,eAAmB,UAAU,4BAEzB,QAAQ,QAAQ,cAAe,YAAa,CAAC,MAAO,yBAE5C,IAAI,mBAGH,KAAK,MAAM,mBAAqB,GAAK,aAC/B,KAAK,gBACL,KAAK,0BACK,MACzB,WAAY,CAAC,KAAM,mBAAqB,MACxC,WAAW,MAAM,OAAS,wBACD,MACzB,WAAY,CAAC,KAAM,mBAAqB,MACxC,WAAW,MAAM,OAAS,eAEV,cAAc,MAAM,QACxC,mBAAY,cAAc,MAAM,OAAS,GAAK,KAEvC,QACH,QAAQ,qBAAqB,GAAI,qBAAqB,IAAK,aAG1D,SAAa,GAAG,CAAC,QClGxB,AAsCA,eAAiC,GAC/B,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,IAE/B,MAAO,QAAO,UAAU,KAAM,QAEzB,SAAa,GAAG,CAAC,QC7CxB,AAoDA,4BACI,KACF,OAAS,gBAAgB,EAAG,IAAK,wBACxB,gBAAgB,EAAG,IAAK,qBACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,2BAA2B,GAAG,MAAO,GAAG,OAExC,WAAwC,CAAC,EAAG,GAAI,EAAG,UACrC,GAEd,MAAO,QAAO,UACV,kBAAmB,OAAqC,OAGvD,sBAA0B,GAAG,CAAC,qBCnErC,AAwCA,kBAAoC,QAClC,OAAW,gBAAgB,EAAG,IAAK,WACnC,MAAO,SAAQ,GAAI,aAAa,GAAG,MAAO,MAAM,UAG3C,YAAgB,GAAG,CAAC,WC7C3B,AA2CA,gBACI,aAAqC,GACvC,aAAiB,qBAAqB,QAAS,UAAW,SAE1D,AAAK,OACD,SAAS,QAAU,EAAG,IAAM,wCAEhC,AAAI,SAAS,OAAS,GACpB,AAAK,OACD,MAAQ,SAAS,GAAG,KAAM,IAAM,sCAGtC,WAA2B,eACF,CAAC,MAE1B,MAAO,QAAO,UACV,KAAM,OAAgC,OAGrC,UAAc,GAAG,CAAC,SC9DzB,AAwCA,eAAiC,QAAyB,GACxD,OAAW,gBAAgB,EAAG,IAAK,eAER,CAAC,EAAG,UACN,CAAC,OAE1B,MAAO,QAAO,UACV,KAAM,OAAgC,OAErC,SAAa,GAAG,CAAC,QCjDxB,AA4DA,uBACI,8BACY,UAAa,eAAkB,cAAiB,iBAC3C,GACnB,OAAW,gBAAgB,EAAG,IAAK,uBAEA,CAAC,EAAG,UACN,CAC/B,MACA,IACA,QACA,UACA,QACA,aACA,YACA,gBAGF,MAAO,QAAO,UACV,aAAc,OACd,OAGC,iBAAqB,GAAG,CAAC,gBCnFhC,AAsCA,cAAgC,GAC9B,OAAW,gBAAgB,EAAG,IAAK,cAET,CAAC,EAAG,IAE9B,MAAO,QAAO,UAAU,IAAK,QAExB,QAAY,GAAG,CAAC,OC7CvB,AAwCM,kBAAmB,cACvB,cAAc,QACd,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,EAC3B,KAAM,IAAI,OAAM,sDAElB,UAAwB,KACxB,MAAO,YAAW,OAAQ,MAAO,cAAe,OC/ClD,AA+CM,kBACF,oBAGF,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,iDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,kEAEN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,gFAGN,MAAO,YAAW,OAAQ,MAAO,cAAe,OChElD,AA+CM,kBACF,oBAGF,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,kDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,sEAEN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,YAAW,OAAQ,MAAO,cAAe,OChElD,AA+CM,kBACF,oBAGF,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,kDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,wEAGN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,YAAW,OAAQ,MAAO,cAAe,OCjElD,AA+CM,kBACF,oBAIF,GADA,cAAc,QACV,OAAS,MAAQ,MAAM,SAAW,EACpC,KAAM,IAAI,OAAM,iDAElB,kBAAsB,WAAW,OAAQ,OACzC,GAAI,cAAc,SAAW,GAAK,cAAc,SAAW,EACzD,KAAM,IAAI,OACN,0EAGN,GAAI,cAAc,SAAW,GAAK,OAAS,KACzC,KAAM,IAAI,OACN,2EAGN,aAAQ,OACJ,cACG,WAAW,OAAQ,MAAO,cAAe,OCpElD,AAmDA,eACI,IAAqB,SAAY,IACnC,OAAW,gBAAgB,EAAG,IAAK,QACnC,GAAI,GAAG,OAAS,EACd,KAAM,IAAI,OAAM,sDAElB,YAAgB,GAAG,MAAM,GAAG,MAAM,OAAS,GAC3C,GAAI,EAAI,QACN,KAAM,IAAI,OACN,uDAAuD,oBAC5C,KAGjB,WAA2B,CAAC,EAAG,UACN,CAAC,EAAG,yBAEH,OAAO,UAC7B,KAAM,OAAgC,OAE1C,MAAO,CAAC,OAAQ,SAGX,SAAa,GAAG,CAAC,QCzExB,AA4CA,0BACI,YAA2B,SAAY,cAEzC,GAAI,OAAS,MAAS,QAAuB,OAC3C,KAAM,IAAI,OAAM,qCAElB,cACI,GAAI,aAAY,MAAM,OAAQ,MAAO,GAAsB,UACnD,OAAO,MAAO,OAC1B,UAAa,EAAG,EAAI,IAAI,OAAO,OAAQ,IACrC,IAAI,OAAO,GAAK,UAAU,YAE5B,MAAO,KAAI,WAGN,oBAAwB,GAAG,CAAC,mBC3DnC,AA6EA,iBACI,OAAwB,GAE1B,OAAW,gBAAgB,EAAG,IAAK,SAAU,MAC7C,OAAO,GAAG,KAAO,EAAG,IAAM,wCAE1B,WAA6B,CAAC,EAAG,UACN,CAAC,uBACF,OAAO,UACH,OAAQ,OACR,OAC9B,MAAO,CAAC,OAAQ,SAGX,WAAe,GAAG,CAAC,UC3F1B,AA8CA,6BACI,0BACF,OAAW,gBAAgB,EAAG,IAAK,kCAE/B,gBAAgB,WAAY,aAAc,qBAAsB,SACpE,OAAO,MAAM,aAAc,IAAM,oCAEjC,WAAyC,CAAC,EAAG,GAAI,WAAY,mBACtB,CAAC,aAExC,MAAO,QAAO,UACV,mBAAoB,OACpB,OAGC,uBAA2B,GAAG,CAAC,sBC7DtC,AA0CA,kBAAkB,OAA6B,GAC7C,OAAW,gBAAgB,EAAG,IAAK,WACnC,AAAK,OACD,MAAQ,CAAC,GAAG,MAAM,QAAU,KAAO,GAAG,MAAM,OAC5C,IACI,UAAU,oBAAoB,GAAG,MAAM,WAAW,GAAG,MAAM,WAEnE,WAA6B,CAAC,MAAO,UACV,CAAC,MAE5B,MAAO,QAAO,UACV,OAAQ,OAAgC,OAGvC,YAAgB,GAAG,CAAC,WCxD3B,AAqCM,kBACF,uBAAqC,eAEvC,MAAO,QAAO,aAAa,aAAc,UAAW,KAAM,OCxC5D,AAuBM,mBAAoB,oBACxB,YAAgB,GAChB,UAAa,EAAG,EAAI,SAAS,OAAQ,IACnC,AAAI,SAAS,IACX,QAAQ,KAAK,GAIjB,aAAiB,OAAO,UAAW,aAEvB,OAAO,CAAC,QAAQ,OAAQ,UAAU,QAAS,SACvD,UAAa,EAAG,EAAI,QAAQ,OAAQ,KAClC,QAAY,SAAS,WAAW,QAAQ,WACzB,EAAI,UAAU,OAC7B,IAAI,OAAO,IAAI,IAAK,QAEtB,MAAO,KAAI,WCvCb,AAyCA,2BAA2B,WACzB,eACI,gBAAgB,UAAW,YAAa,aAAc,aAC7C,KAAM,YAAW,WAClB,UAAU,WAAW,MAAO,MACxC,MAAI,aAAc,YAChB,WAAW,UAEN,IAGF,eAAmB,YCpD1B,AA6CA,iCACI,qBAEF,YAAgB,gBAAgB,UAAQ,SAAU,kBACpC,gBAAgB,KAAM,OAAQ,WAAY,iBAEvC,MAAQ,KAAO,EAAI,aACpB,MAAM,iBACF,QAAQ,MAE5B,AAAK,OAAO,QAAU,EAAG,IAAM,yBAC/B,AAAK,kBACD,YAAY,MAAM,SAAU,SAAW,SAAU,MAAM,MACvD,qEAEJ,gBAAkB,EAClB,UAAa,SAAU,EAAI,SAAW,QAAS,IAC7C,aAAe,YAAY,GAE7B,sBACI,YAAY,MAAM,EAAG,UAChB,OAAO,CAAC,aAAc,YAAY,MAAM,SAAW,yBACrC,QAAQ,QAAS,gCACnB,QAAQ,MAAO,CAAC,uBACX,KAAM,YAAW,sBAC3B,QAAQ,kBAAmB,CAAC,QAEhC,OAAO,eAAgB,QAAS,UAG5C,MAAI,aAAW,SACb,QAAQ,UAEV,AAAI,OAAS,OACX,MAAM,UAER,QAAQ,UACR,eAAe,UACf,aAAa,UACb,kBAAkB,UAEX,IAGF,qBAAyB,kBCzFhC,AAuCA,yBACI,KACF,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,qBACxB,gBAAgB,EAAG,IAAK,kBACnC,yBAAkB,GAAG,MAAO,GAAG,MAAO,6BAC/B,SAAS,GAAI,IAYtB,0BACE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,iBACxB,gBAAgB,EAAG,IAAK,cACnC,yBAAkB,GAAG,MAAO,GAAG,MAAO,yBAC/B,KAAK,GAAI,IAGlB,2BACE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,kBACxB,gBAAgB,EAAG,IAAK,eACnC,yBAAkB,GAAG,MAAO,GAAG,MAAO,0BAC/B,MAAM,GAAI,IAGnB,+BAEE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,sBACxB,gBAAgB,EAAG,IAAK,mBACnC,yBAAkB,GAAG,MAAO,GAAG,MAAO,8BAC/B,UAAU,GAAI,IAGvB,6BACE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,iBACnC,yBAAkB,GAAG,MAAO,GAAG,MAAO,4BAC/B,QAAQ,GAAI,IAGrB,kCAEE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,yBACxB,gBAAgB,EAAG,IAAK,sBACnC,yBAAkB,GAAG,MAAO,GAAG,MAAO,iCAC/B,aAAa,GAAI,IAGnB,gBAAoB,GAAG,CAAC,kCACG,GAAG,CAAC,oCACT,GAAG,CAAC,iCACF,GAAG,CAAC,8BACT,GAAG,CAAC,6BACA,GAAG,CAAC,kBCpHlC,AA2CA,oBAAsC,KACpC,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,wBACpC,KAAI,GAAI,IAajB,yBACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,wBACpC,IAAI,GAAI,IAajB,iCACE,uBACI,6EAGJ,AAAK,kBAAkB,MAAK,MAAO,MAAI,MAAO,wBACvC,IAAI,MAAM,OAanB,yBACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,6BACpC,IAAI,GAAI,IAWjB,yBACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,UACxB,gBAAgB,EAAG,IAAK,OACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,2BACpC,IAAI,GAAI,IAWjB,yBACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,gBACxB,gBAAgB,EAAG,IAAK,aACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,wBACpC,IAAI,GAAI,IAWjB,6BACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,iBACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,4BACpC,QAAQ,GAAI,IAWrB,6BACE,gBACI,6EAGJ,OAAW,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,iBACnC,MAAK,mBAAkB,GAAG,MAAO,GAAG,MAAO,4BACpC,QAAQ,GAAI,IAarB,uCAEE,gBACI,6EAEJ,OAAW,gBAAgB,EAAG,IAAK,8BACxB,gBAAgB,EAAG,IAAK,2BACnC,MAAK,mBACD,GAAG,MAAO,GAAG,MAAO,sCACjB,kBAAkB,GAAI,IAGxB,cAAkB,GAAG,CAAC,uBACJ,GAAG,CAAC,2BACA,GAAG,CAAC,+BACJ,GAAG,CAAC,2BACR,GAAG,CAAC,uBACJ,GAAG,CAAC,uBACJ,GAAG,CAAC,qCACU,GAAG,CAAC,qCAClB,GAAG,CAAC,aC5N7B,AAwEA,eACI,MAAsD,iBAC9B,cAAiB,IAC3C,EAAI,gBAAgB,EAAG,IAAK,QAE5B,UAAa,SAAS,EAAG,IAAK,oBACV,MAAK,MACzB,GAAI,UACF,SAAa,eAAe,KAAM,EAAE,OACpC,cAAgB,AAAU,qBAAqB,MAAK,MAAO,MAE7D,MAAO,SAAQ,MAAM,eAGvB,4BACyD,MACvD,GAAI,EAAE,OAAS,EACb,MAAO,KAAI,GAIb,GAAI,EAAE,OAAS,GAAK,OAAS,KAC3B,MAAO,UAAS,QAAQ,EAAG,CAAC,KAAM,GAAG,MAIvC,GAAI,EAAE,OAAS,GAAK,MAAO,OAAS,UAChC,MAAM,QAAQ,OAAS,KAAK,SAAW,GACzC,GAAI,KAAM,EACR,MAAO,MAAI,IAAI,GAAI,MAErB,GAAI,KAAM,SACR,MAAO,KAAI,IAAI,GAAI,MAErB,GAAI,KAAM,UACR,MAAO,KAAI,IAAI,GAAI,MAErB,GAAI,KAAM,aAAe,KAAM,EAE7B,MAAO,MAAK,KAAI,IAAI,IAAI,GAAI,OAAO,EAAG,UAAW,OAGnD,KAAM,IAAI,OAAM,qCAAqC,MAIvD,GAAI,MAAM,QAAQ,OAAS,KAAK,SAAW,GACzC,GAAI,KAAM,EACR,MAAO,KAAI,KAAI,IAAI,GAAI,KAAK,IAAK,KAAK,GAAK,GAE7C,GAAI,KAAM,SACR,MAAO,KAAI,KAAI,IAAI,GAAI,KAAK,IAAK,KAAK,IAExC,GAAI,KAAM,UACR,MAAO,KAAI,KAAI,IAAI,GAAI,KAAK,IAAK,KAAK,IAExC,GAAI,KAAM,OAAS,KAAM,YAEvB,MAAO,MAAK,KAAI,OAAO,GAAI,OAG7B,KAAM,IAAI,OAAM,qCAAqC,MAGvD,KAAM,IAAI,OAAM,gCAAgC,QAG3C,SAAa,GAAG,CAAC,QC3IxB,AA2DA,wBACI,2BACmC,IACrC,OAAW,gBAAgB,EAAG,IAAK,oBACxB,gBAAgB,EAAG,IAAK,wBACpB,gBAAgB,MAAO,QAAS,iBAE/C,iBAAiB,GAAI,IACrB,AAAK,OACD,AAAK,YAAY,GAAG,MAAO,GAAG,OAAQ,IAAM,6BAEhD,QAAY,OAAO,iBACG,IAAI,IAAK,eAElB,IAAI,IAAI,GAAI,IAAK,eAC9B,GAAI,YACF,AAAK,OACD,OAAQ,KAAM,IAAM,kDACxB,UAAc,gBAAgB,MAAM,OAAQ,iBAC5C,OAAS,IAAI,OAAQ,IAAI,IAAK,IAAI,OAAQ,SAE5C,MAAO,MAAI,GAAI,QAGV,kBAAsB,GAAG,CAAC,iBCnFjC,AA+CA,oBACI,uBAEF,aAAiB,gBAAgB,QAAS,UAAW,YAAa,kBACjD,gBAAgB,QAAS,UAAW,aACrD,AAAgB,cAAc,SAAU,SAAU,OAElD,WAAgC,CAAC,QAAS,SAAU,QAAS,gBAC/B,CAAC,OAG/B,MAAO,QAAO,UACH,UAAW,OACX,OAGN,cAAkB,GAAG,CAAC,aChCvB,wBACF,sDAEF,GAAI,cAAc,QAAU,QAC1B,KAAM,IAAI,OACN,8EACsB,cAAc,UAE1C,GAAI,cAAc,KAAO,EACvB,KAAM,IAAI,OACN,sEACkB,cAAc,UAGtC,aAAiB,cAAc,KAAO,EAAI,cAAc,MAAM,GAAK,UACnD,cAAc,KAAO,EAAI,cAAc,MAAM,GAAK,EAElE,GAAI,YAAY,SAAW,QACzB,KAAM,IAAI,OACN,kDACI,YAAY,sBAAsB,YAG5C,cAAkB,aAAa,KAC/B,GAAI,CAAE,cAAa,OAAS,GACtB,aAAa,OAAS,GAAK,YAAc,UAC7C,KAAM,IAAI,OACN,oCACG,aAAa,2BAA2B,aAGjD,GAAI,aAAa,QAAU,cAAc,MACvC,KAAM,IAAI,OAAM,qDC/DpB,AAkEA,wBACI,oDAC4D,GAC9D,mBACI,gBAAgB,cAAe,gBAAiB,gBAAiB,uBAEjE,gBAAgB,aAAc,eAAgB,+BAC5B,gBAClB,aAAc,eAAgB,gBAAiB,cAAc,OAEjE,AAAgB,eACZ,eAAgB,cAAe,YAAa,eAEhD,WAAoC,CAClC,cAAe,eACf,aAAc,cACd,aAAc,qBAGkB,CAAC,aAEnC,MAAO,QAAO,UACV,cAAe,OACf,OAGC,kBAAsB,GAAG,CAAC,iBC5FjC,AA8DA,mBAAmB,WACjB,aAAiB,gBAAgB,QAAS,UAAW,WAAY,YACtD,gBAAgB,EAAG,IAAK,mBAEJ,CAAC,OAAQ,GAAI,QAAS,UAErD,MAAO,QAAO,UAAU,SAAU,QAG7B,aAAiB,GAAG,CAAC,YCvE5B,AA4BM,uBAAwB,cAC5B,GAAI,YAAc,KAChB,MAAO,GAAE,MAAM,QAEjB,GAAI,AAAK,YAAY,EAAE,MAAO,YAC5B,MAAO,YAET,GAAI,EAAE,MAAM,SAAW,WAAW,QAChC,iBAA+B,GAC/B,UAAa,EAAG,EAAI,EAAE,MAAM,OAAQ,IAClC,AAAI,WAAW,IAAM,MAAQ,EAAE,MAAM,IAAM,KACzC,aAAa,KAAK,EAAE,MAAM,IAE1B,aAAa,KAAK,WAAW,IAGjC,MAAO,cAGT,MAAO,YC/CT,AAoDA,kBACI,wBAEF,OAAW,gBAAgB,EAAG,IAAK,WAUnC,GARA,AAAK,OACD,GAAG,QAAU,UACb,IAAM,gFACmB,GAAG,yBAChC,AAAK,OACD,MAAQ,GAAK,KAAO,EACpB,IAAM,qDAAqD,SAE3D,OAAS,EACX,MAAO,aAAa,QAAS,GAAG,QAAU,GAG5C,gBAAoB,cAAc,GAAI,qBACrB,EAAI,gBACF,IACf,MAAM,KAAI,cAAc,YAAa,EAAG,EAAG,UAAW,MAAO,WAC7D,UAEJ,MAAO,KAAI,GAAI,YAGV,YAAgB,GAAG,CAAC,WC9E3B,AAoBM,6BAA8B,OAElC,MAAO,MAAK,MAAM,KAAK,IAAI,EAAG,KAAK,KAAK,KAAK,IAAI,OAAS,KAAK,IAAI,MAG/D,wCAEJ,SAAa,EAAI,aAAe,YACd,GAAI,cAAa,cACnC,UAAa,EAAG,EAAI,aAAc,EAAE,GAClC,WAAgB,EAAM,KAAK,GAAK,EAAM,cAAe,KAAO,GAC5D,UAAU,GAAK,EAAI,EAAI,KAAK,IAAI,QAElC,MAAO,UAAS,UAAW,WCjC7B,AAwCA,4BACI,sBAAsD,GACxD,iBAAqB,gBAAgB,YAAa,cAAe,mBAChD,gBAAgB,QAAS,UAAW,UAErD,OACI,aAAa,KAAO,EACpB,IAAM,uEACS,aAAa,QAChC,OACI,aAAa,KAAO,IAAM,SAAS,KACnC,IAAM,mFAEC,aAAa,yBAAyB,SAAS,QAC1D,kBACI,aAAa,MAAM,MAAM,EAAG,aAAa,MAAM,OAAS,GACxD,SAAS,MACT,2FAEJ,YAAgB,aAAa,MAAM,aAAa,MAAM,OAAS,GAC/D,OACI,EAAI,GAAK,GAAK,QACd,IAAM,4EACY,qBAAqB,KAE3C,oBAAwB,KAAM,cAAa,mBACvB,KAAM,UAAS,oBAIb,CAAC,gBAAgB,OAAS,QAAS,oBACvC,uBAAuB,OAAQ,OAEjD,UAAa,EAAG,EAAI,MAAO,KACzB,WAAe,EAAI,UACN,gBAAgB,SAAS,OAAQ,OAAS,gBACE,GACzD,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,UAAU,KAAK,CAAC,MAAO,KAAK,GAAI,MAAO,IAEzC,UAAU,KAAK,QAAU,GAAE,MAAQ,EAAE,OAErC,WAAU,GAAK,EACf,UAAa,EAAG,EAAI,EAAG,IACrB,GAAI,UAAU,GAAG,QAAU,YAAY,IACrC,WAAU,GAAK,EACf,OAKN,MAAI,eAAgB,cAClB,aAAa,UAEf,AAAI,UAAY,UACd,SAAS,UAIJ,QAAO,WAAW,SAAS,MAAO,QAGpC,gBAAoB,aCtG3B,IAAA,8HCAA,AA+CA,+BACI,0CAG4B,wBAE9B,QAAU,EACV,AAAI,EAAE,OAAS,GACb,KAAM,QAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEvD,SAAW,GACX,AAAI,KAAK,OAAS,GAChB,MAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAE5D,AAAK,OACD,IAAI,OAAS,EACb,IAAM,iEACC,IAAI,UACf,AAAK,OACD,KAAK,OAAS,EACd,IAAM,8DACC,KAAK,UAChB,AAAK,OACD,YAAY,SAAW,EACvB,IAAM,mEACC,gBACX,YAAgB,aAAe,OAAS,IAAI,MAAM,GAAK,IAAI,MAAM,YAChD,aAAe,OAAS,KAAK,MAAM,GAAK,KAAK,MAAM,GACpE,AAAK,OACD,UAAY,YAAY,GACxB,IAAM,4CAA4C,8CACd,YAAY,OACpD,AAAK,OACD,WAAa,YAAY,GACzB,IAAM,0CAA0C,iDACV,YAAY,QACtD,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,gFACiB,+BAA+B,UAG5D,WAA2C,CAAC,EAAG,IAAK,GAAI,YAEpD,CAAC,QAAS,UAAK,WAAY,gBAAiB,aAGhD,MAAO,QAAO,UACH,qBAAsB,OACtB,OAGN,yBAA6B,GAAG,CAAC,wBCpGxC,AAgCM,8BACF,kBACF,GAAI,aAAc,MAAQ,cAAe,SACvC,MAAO,IAET,GAAI,cAAe,OACjB,MAAO,KAAI,GAAI,KAAK,IAEtB,KAAM,IAAI,OACN,gDAAgD,gBAIhD,iDAEJ,QAAU,wBAEN,AAAe,iBAAiB,KAAK,MAAO,aAAa,OAC7D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,KAAK,OAGrB,8EAGJ,GAAI,cAAe,SACjB,MAAO,GACF,GAAI,cAAe,OACxB,MAAO,MAAK,GACP,GAAI,cAAe,MACxB,MAAO,KAAI,GACN,GAAI,cAAe,QACxB,MAAO,OAAM,GACR,GAAI,cAAe,QACxB,MAAO,OAAM,EAAG,wBACX,GAAI,cAAe,YACxB,MAAO,WAAU,EAAG,gBAEtB,KAAM,IAAI,OAAM,4BAA4B,gBAIvC,eAAmB,8BACxB,iBAAqB,cAAgB,EACrC,MAAO,CAAC,cAAgB,cAAe,UC9EzC,AA+FA,sBAAmD,CACjD,EACA,OACA,QACA,UACA,WAAa,OACb,UAAY,CAAC,EAAG,GAChB,gBACA,KACA,uBAAa,SACb,uBACA,iBAgBA,GAFA,YAAa,aAAc,SAEvB,WAAW,OAAO,MAAM,cAAe,eAAgB,IACzD,WAAa,OACT,EAAG,OAAQ,QAAS,MAAK,WAAY,UAAW,iBACpD,MAAI,OAAQ,MACV,QAAS,KAAI,OAAQ,OAGhB,gBACI,OAAQ,YAAY,uBAAwB,gBAGzD,OAAW,gBAAgB,EAAG,IAAK,kBACnB,gBAAgB,OAAQ,SAAU,cAExC,gBACS,GAEnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAE3D,AAAK,OACD,IAAI,OAAS,EACb,IAAM,6DACC,IAAI,SACf,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,8DACC,QAAQ,SACnB,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,6EACiB,+BAA+B,UAG5D,AAAK,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,oCAAoC,IAAI,MAAM,yCACtB,QAAQ,MAAM,OAChD,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IAAM,uEACa,0BAA0B,cACjD,AAAK,OACD,aAAe,OACf,IAAM,sCACF,oDAER,aAAiB,AAAU,kBACvB,IAAI,MAAO,QAAQ,MAAO,QAAS,UAAW,MAAK,uBAGvD,AAAI,MAAQ,MACV,OAAQ,gBAAgB,KAAM,OAAQ,gBACtC,CAAC,OAAS,eAAe,MAAO,IAEhC,AAAe,2BAA2B,SAAS,SAAU,MAAM,QAGrE,4BACA,AAAI,wBAA0B,MAC5B,yBAA0B,gBACtB,uBAAwB,gBAAiB,iBAG/C,UAAa,aACX,4BACI,mBAEiB,qBAAqB,GAAI,EAAG,aAEjD,AAAK,OACD,AAAU,kBAAkB,WAC5B,IAAM,uHAEoD,cAE9D,SACI,oBAAoB,KAAI,MAAO,aAAc,SAAS,QAAS,iBAE/D,qBAAqB,KAAK,aAAc,SAAQ,MAAO,QAAS,WAC9C,CAAC,KAAM,WAE7B,GAAI,QAAS,MACX,YAAgB,qBAAqB,OAAO,cAC5C,IAAI,KAAK,SAEX,MAAO,aAGyB,CAChC,EAAG,IACH,OAAQ,QACR,KAAM,MACN,uBAAwB,+BAGM,CAC9B,QACA,UACA,WACA,UACA,gBACA,uBACA,gBAKF,GAAI,MAAQ,MACV,aACI,WAAW,sBACT,QAEI,OAAO,UACH,YAAa,OACb,OAER,YAAK,CAAC,QAAQ,KAAK,MAEnB,AAAI,cAEF,KAAM,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAIrD,CAAC,MAAO,IAAK,SAAU,SAEpC,MAAO,UAAS,IAAK,cAErB,qBAAyB,WACrB,4BACE,QAA6B,OAAO,UAChC,YAAa,OACb,OAEJ,YAAK,CAAC,QAAQ,KAAK,IAAK,QAExB,AAAI,cAEF,KAAM,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAIrD,CAAC,MAAO,IAAK,SAAU,SAGpC,MAAO,kBAAiB,IAAK,QAAS,QAGnC,YAAe,GAAG,CAAC,eCjR1B,AAyBA,8CACI,yCAEqC,CAAC,EAAG,oBAE3C,QAAU,EACV,AAAI,EAAE,OAAS,GACb,KAAM,QAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEvD,SAAW,GACX,AAAI,KAAK,OAAS,GAChB,MAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG5D,WAA0D,CAAC,EAAG,IAAK,GAAI,YAEnE,CAAC,QAAS,UAAK,gBAAiB,UAAW,aAG/C,MAAO,QAAO,UACH,oCACA,OAAgC,OAItC,wCACH,GAAG,CAAC,uCCnDR,AAyBA,6CACI,yCAEqC,CAAC,EAAG,oBAE3C,SAAW,gBACQ,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,KAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAG5D,WAAyD,CAAC,GAAI,KAAM,cAEhE,CAAC,QAAS,UAAK,gBAAiB,UAAW,WAAY,YAIvD,OAAO,UACH,mCAAoC,OACpC,OAER,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,uCACH,GAAG,CAAC,sCCtDR,AA0FA,+BAA4D,CAC1D,EACA,OACA,QACA,UACA,WAAa,OACb,UAAY,CAAC,EAAG,GAChB,gBACA,KACA,uBAAa,SACb,uBACA,iBAcA,GAAI,WAAW,OAAO,MAAM,cAAe,eAAgB,IACzD,WAAa,gBACT,EAAG,OAAQ,QAAS,MAAK,WAAY,UAAW,iBACpD,MAAI,OAAQ,MACV,QAAS,KAAI,OAAQ,OAGhB,gBACI,OAAQ,YAAY,uBAAwB,gBAGzD,OAAW,gBAAgB,EAAG,IAAK,2BACnB,gBAAgB,OAAQ,SAAU,uBAExC,gBACS,GACnB,AAAI,GAAG,OAAS,GACd,cAAe,GACf,IAAM,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAE3D,AAAK,OACD,IAAI,OAAS,EACb,IAAM,sEACM,IAAI,SACpB,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,uEACc,QAAQ,SAChC,AAAK,OACD,IAAI,MAAM,KAAO,QAAQ,MAAM,GAC/B,IAAM,6DACE,IAAI,MAAM,qDACJ,QAAQ,MAAM,OAChC,AAAI,WAAa,MACf,WAAY,CAAC,EAAG,IAElB,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IACI,sFACqB,0BAA0B,cAEvD,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,qFACuB,+BAA+B,UAGlE,aAAiB,AAAU,kBACvB,IAAI,MAAO,QAAQ,MAAO,QAAS,UAAW,MAAK,gBACnD,UAGJ,AAAI,MAAQ,MACV,OAAQ,gBAAgB,KAAM,OAAQ,gBACtC,CAAC,OAAS,eAAe,MAAO,IAEhC,AAAe,2BAA2B,SAAS,SAAU,MAAM,QAGrE,4BACA,AAAI,wBAA0B,MAC5B,yBAA0B,gBACtB,uBAAwB,gBAAiB,0BAG/C,UAAa,aACX,AAAK,OACD,AAAU,kBAAkB,WAC5B,IAAM,mHAEE,cACZ,2BAAgC,mBAEX,qBAAqB,GAAI,EAAG,kBAEpC,mCACR,KAAiB,MAAO,aAAc,SAAqB,QAC5D,MAAK,UAAW,2BACF,oCACd,KAAiB,aAAe,SAAqB,MAAO,QAC5D,MAAK,UAAW,iBAEpB,GAAI,OAAQ,MACV,YAAgB,qBAAqB,MAAO,cAC5C,MAAO,CAAC,KAAM,UAAW,SAE3B,MAAO,CAAC,KAAM,mBAG2B,CACzC,EAAG,IACH,OAAQ,QACR,KAAM,MACN,uBAAwB,+BAEe,CACvC,QACA,UACA,WACA,UACA,gBACA,uBACA,gBAKF,GAAI,MAAQ,MACV,aACI,WAAW,sBAET,QAA6B,OAAO,UAChC,qBAAsB,OACtB,OAEJ,YAAK,CAAC,QAAQ,KAAK,MAEnB,AAAI,cAEF,KAAM,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAIrD,CAAC,MAAO,IAAK,SAAU,SAEpC,MAAO,UAAS,IAAK,cAErB,qBAAyB,WACrB,4BAEE,QAA6B,OAAO,UAChC,qBAAsB,OACtB,OAEJ,YAAK,CAAC,QAAQ,KAAK,IAAK,QAExB,AAAI,cAEF,KAAM,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAIrD,CAAC,MAAO,IAAK,SAAU,SAGpC,MAAO,kBAAiB,IAAK,QAAS,QAGnC,qBAAwB,GAAG,CAAC,wBCzQnC,AAyDA,sBAAwC,CACtC,EACA,EACA,WAAa,GACb,WAAa,GACb,KACA,uBAAa,SACb,uBACA,iBAWE,GAAI,WAAW,OAAO,MAAM,cAAe,eAAgB,IACzD,WAAa,OAAc,EAAG,EAAG,WAAY,YAC7C,MAAI,OAAQ,MACV,QAAS,KAAI,OAAQ,OAGhB,gBACI,OAAQ,YAAY,uBAAwB,gBAIzD,OAAS,gBAAgB,EAAG,IAAK,mBACxB,gBAAgB,EAAG,IAAK,gBACjC,CAAC,GAAI,IAAM,eAAe,GAAI,IAE9B,gBACI,WAAa,GAAG,MAAM,GAAG,KAAO,GAAK,GAAG,MAAM,GAAG,KAAO,eAExD,WAAa,GAAG,MAAM,GAAG,KAAO,GAAK,GAAG,MAAM,GAAG,KAAO,eAGxD,WAAa,GAAG,MAAM,GAAG,KAAO,GAAK,GAAG,MAAM,GAAG,KAAO,eAExD,WAAa,GAAG,MAAM,GAAG,KAAO,GAAK,GAAG,MAAM,GAAG,KAAO,cAEzC,GAAG,MAAM,MAAM,EAAG,eAClB,GAAG,MAAM,MAAM,EAAG,cACnB,AAAK,cAAc,sBACnB,AAAK,cAAc,YAErC,AAAK,OACD,GAAG,MAAQ,GAAK,GAAG,MAAQ,GAAK,GAAG,OAAS,GAAG,KAC/C,IAAM,kFACoB,GAAG,YAAY,GAAG,SAEhD,AAAK,OACD,AAAK,YAAY,WAAY,YAC7B,IAAM,4CAA4C,oBAC3C,sCAAsC,GAAG,aACzC,GAAG,qBAEd,AAAK,OACD,cAAgB,YAChB,IAAM,wCAAwC,qBACvC,uCAAuC,GAAG,aAC1C,GAAG,wBAAwB,6BACX,0BAE3B,aAAiB,GAAG,MAAM,MAAM,EAAG,IAAI,OAAO,CAAC,YAAa,kBAEtC,WAClB,QAAQ,GAAI,CAAC,UAAW,YAAa,cACrC,QAAQ,GAAI,CAAC,UAAW,YAAa,kBACnB,WAClB,QAAQ,GAAI,CAAC,UAAW,YAAa,cACrC,QAAQ,GAAI,CAAC,UAAW,YAAa,oBAGzC,AAAI,MAAQ,MACV,OAAQ,gBAAgB,KAAM,OAAQ,gBACtC,CAAC,OAAS,eAAe,MAAO,IAEhC,AAAe,2BAA2B,SAAU,MAAM,QAG5D,4BACA,AAAI,wBAA0B,MAC5B,yBAA0B,gBACtB,uBAAwB,gBAAiB,iBAG/C,UAAa,aACX,wBAA6B,mBAKzB,qBAAqB,QAAQ,GAAI,EAAE,OAAQ,EAAG,uBAkBlD,GAdA,AAAI,CAAC,YAAc,CAAC,WAClB,MAAO,OAAc,aAAc,KAAK,GAAO,IAC/C,KAAO,OAAc,KAAK,aAAc,GAAM,KACzC,AAAI,CAAC,YAAc,WACxB,MAAO,OAAc,aAAc,KAAK,GAAO,IAC/C,KAAO,OAAc,aAAc,KAAK,GAAM,KACzC,AAAI,YAAc,CAAC,WACxB,MAAO,OAAc,KAAK,aAAc,GAAO,IAC/C,KAAO,OAAc,KAAK,aAAc,GAAO,KAE/C,MAAO,OAAc,KAAK,aAAc,GAAM,IAC9C,KAAO,OAAc,aAAc,KAAK,GAAM,KAG5C,MAAQ,MACV,YAAgB,qBAAqB,OAAO,cAC5C,MAAO,CAAC,KAAM,KAAM,aAEpB,OAAO,CAAC,KAAM,cAIiB,CACjC,EAAG,IACH,EAAG,IACH,KAAM,MACN,uBAAwB,+BAGtB,CAAC,WAAY,WAAY,uBAAY,gBAIzC,GAAI,MAAQ,MACV,aACI,WAAW,mBACT,QAEI,OAAO,UACH,aAAc,OACd,OAER,YAAK,CAAC,KAAK,KAAK,MAET,CAAC,MAAO,QAAQ,IAAK,UAAW,SAAU,SAEvD,MAAO,UAAS,IAAK,UAErB,qBAAyB,WACrB,0BACE,QAEI,OAAO,UACH,aAAc,OACd,OAER,YAAK,CAAC,KAAK,KAAK,IAAK,SAEd,CAAC,MAAO,QAAQ,IAAK,UAAW,SAAU,SAGvD,MAAO,kBAAiB,IAAK,IAAK,QAI/B,YAAe,GAAG,CAAC,eC9N5B,ACAA,AAiCA,wBAAwB,cACtB,MAAO,cAAa,aAAc,IAAM,KAEnC,kBAAsB,GAAG,CAAC,iBCpCjC,AAiCA,qBAAqB,cACnB,MAAO,cAAa,aAAc,GAAK,IAGlC,eAAmB,GAAG,CAAC,cCrC9B,AAyCA,gBACI,qCAAmE,YACxD,GACb,UAAY,SACa,GACzB,KAAO,MAAQ,aAAe,QAAO,MACnC,OAAO,KAAK,MAAM,QAAQ,MAAO,cACjC,OAAS,UAGX,GAAI,OACF,KAAO,MAAQ,QAAO,OACpB,WAAgB,MAAQ,YAAe,QAAO,WAClC,OAAO,CACjB,MAAM,QAAQ,MAAO,YAAc,QAAS,KAAK,CAAC,QAAS,YAE7D,OAAO,KAAK,OACZ,OAAS,UAIb,MAAI,QAAO,SAAW,EACb,SAAS,GAAI,CAAC,EAAG,cAGnB,QAAQ,OAAO,QAAS,CAAC,OAAO,OAAQ,cAE1C,UAAc,GAAG,CAAC,SCpEzB,AA4CA,eACI,iDAEyC,YAC3C,AAAI,WAAa,MACf,WAAY,oBAAoB,cAElC,iBAAqB,MAAM,QAAQ,YAAa,0BACzB,IAAI,aAAc,SAAS,qBACzB,GACzB,UAAa,EAAG,EAAI,aAAa,MAAM,GAAI,IACzC,OAAO,KACH,KAAK,MAAM,eAAgB,CAAC,EAAG,GAAI,CAAC,EAAG,cAAe,YAE5D,MAAO,QAAO,QAET,SAAa,GAAG,CAAC,QC5DxB,AAmDA,wBACI,oCAI+B,8BACV,GAEvB,WAAe,gBAAgB,OAAO,QAAS,wBAChC,gBAAgB,MAAO,QAAS,gBAAiB,mBAChD,gBAAgB,OAAQ,SAAU,gBAAiB,kBAElD,OAAO,MAAM,GAE9B,AAAK,OACD,OAAO,OAAS,EAChB,IAAM,6DACc,OAAO,SAC/B,AAAK,OACD,OAAO,OAAS,GAAK,OAAO,MAAM,KAAO,EACzC,IAAM,oDAAoD,6BACrC,OAAO,UAChC,AAAK,OACD,QAAQ,OAAS,GAAK,QAAQ,MAAM,KAAO,SAC3C,IAAM,qDAAqD,2BACtC,OAAO,UAChC,AAAK,OACD,SAAS,SAAW,EACpB,IAAM,wEACQ,SAAS,WAC3B,AAAK,OACD,SAAS,IAAM,GAAK,SAAS,IAAM,EACnC,IAAM,2CAA2C,YACrD,AAAK,OACD,SAAW,YAAc,SAAW,UACpC,IAAM,+CAA+C,UAEzD,WAC0B,CAAC,MAAO,OAAQ,MAAO,OAAQ,OAAQ,eAC/B,CAAC,OAAQ,mBAAoB,cACnD,OAAO,UACf,cAAe,OACf,OACJ,MAAO,KAGF,kBAAsB,GAAG,CAAC,iBCjGjC,AAiCA,wBAAwB,QACtB,WAAe,gBAAgB,OAAO,QAAS,gBAAiB,WAEhE,AAAK,OACD,OAAO,OAAS,EAChB,IAAM,6DACc,OAAO,SAE/B,WAAoC,CAAC,MAAO,YAExC,OAAO,UAAU,cAAe,OAAgC,IACpE,MAAO,KAGF,kBAAsB,GAAG,CAAC,iBC/CjC,AA4CA,2BACI,yBAC6C,SACX,IACpC,WAAe,gBAAgB,OAAO,QAAS,mBAAoB,WAEnE,AAAK,OACD,OAAO,OAAS,EAChB,IAAM,gEACc,OAAO,SAE/B,WAAuC,CAAC,MAAO,cACV,CAAC,QAAS,UAAW,YAC9C,OAAO,UACf,iBAAkB,OAClB,OACJ,MAAO,KAGF,qBAAyB,GAAG,CAAC,oBC/DpC,AAoBA,+BACI,qEAOF,AAAI,cAAgB,MAClB,cAAe,IAEjB,AAAI,gBAAkB,MACpB,gBAAiB,OAAO,mBAE1B,AAAI,cAAgB,MAClB,cAAe,GAGjB,aAAiB,MAAM,MAAM,GAC7B,qBAAgB,KAAK,IAAI,cAAe,UAExC,AAAK,OACD,GAAK,cAAgB,cAAgB,EACrC,IAAM,4CAA4C,iBACtD,AAAK,OACD,MAAM,OAAS,EACf,IAAM,+CAA+C,MAAM,SAC/D,AAAK,OACD,MAAM,MAAM,KAAO,EACnB,IACI,oDAAoD,MAAM,MAAM,MACxE,AAAK,OAAO,OAAO,OAAS,EAAG,IAAM,8BACrC,AAAK,OACD,OAAO,MAAM,KAAO,SACpB,IAAM,sDAAsD,qBAC7C,OAAO,MAAM,MAChC,AAAK,OACD,GAAK,cAAgB,cAAgB,EACrC,IAAM,4CAA4C,iBAC/C,CAAC,cAAe,aAAc,eAAgB,cC3DvD,AA4CA,4BACI,wCACsC,kBACrB,OAAO,mBAC1B,WAAe,gBAAgB,MAAO,QAAS,6BAC/B,gBAAgB,OAAQ,SAAU,4BAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,gBAClD,cAAgB,OAAO,cACvB,aAAe,OAAO,aACtB,eAAiB,OAAO,eAExB,UAAc,CAAC,cAAe,aAAc,gBAC5C,MAAO,QAAO,UACV,oBAAqB,CAAC,MAAO,OAAQ,OAAQ,SAAU,OAGtD,sBAA0B,GAAG,CAAC,qBC9DrC,AA8BM,sBACF,wBACF,UAAc,aAAa,IAAK,QAAS,2BAClB,MAAQ,EAAI,CAAE,OAAQ,GAAK,MAClD,IAAI,OAAO,eAAgB,EAAG,SAkB1B,6CAEJ,MAAO,eAAc,IAAK,OAAQ,YAAc,mBAUlD,gCACE,MAAO,GAAI,EAAI,EAAI,EAAI,EAAI,GAAK,EAGlC,8CAEE,SAAW,QACC,IAAI,cACH,QACD,GACZ,KAAO,KAAO,QACZ,OAAS,KAAS,OAAQ,OAAU,GACpC,kBAAsB,WAAW,OAAQ,IAAI,SAC7C,AAAI,cAAgB,EAClB,KAAO,OAAS,EAEhB,OAAQ,OAGR,MAAQ,CAAC,eAIb,MAAO,OAAQ,KAAO,CAAC,KAAO,ECvFhC,AAmCM,iCACF,wDAEF,MAAO,wBACH,MAAO,OAAQ,cAAe,aAAc,eAC5C,GAGA,4GAIJ,MAAO,wBACH,MAAO,OAAQ,cAAe,aAAc,eAC5C,EAAsB,GACtB,mBAA6C,IAI7C,sGAIJ,MAAO,wBACH,MAAO,OAAQ,cAAe,aAAc,eAAgB,aAC5D,IAGN,uHAGyB,sBAA4B,sBAC5B,IAGvB,eAAmB,GAEnB,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,AAAI,OAAO,GAAK,gBACd,WAAW,KAAK,CAAC,MAAO,OAAO,GAAI,SAAU,EAAG,mBAAoB,IAIxE,WAAW,KAAK,qBAIhB,WAAc,aAAe,EAAK,IAAO,aAAgB,kBAEvB,kBACD,GAEjC,KAAO,gBAAgB,OAAS,eAAiB,WAAW,OAAS,IACnE,cAAkB,WAAW,OACtB,oBAAsB,SAAU,oBAAsB,UAE7D,GAAI,cAAgB,eAClB,MASF,oBAAsB,GACtB,UAAa,gBAAgB,OAAS,EAAG,GAAK,mBAAoB,EAAE,GAClE,QAAY,sBAAsB,MAAO,SAAU,gBAAgB,IAEnE,GAAI,KAAO,cACT,gBAAkB,GAClB,MAMF,GAHA,UAAU,MACN,UAAU,MAAQ,eAAe,aAAc,OAAO,KAEtD,UAAU,OAAS,eACrB,MAWJ,UAAU,mBAAqB,gBAAgB,OAE/C,AAAK,iBAGH,CAAI,UAAU,QAAU,cACtB,iBAAgB,KAAK,UACrB,eAAe,KAAK,UAAU,QACzB,AAAI,UAAU,MAAQ,gBAG3B,aAAa,WAAY,UAAW,sBAM1C,iBAAqB,gBAAgB,kBAClB,cAAgB,aAEnC,AAAI,oBAAsB,WAAa,GACrC,iBAAgB,KAAK,GAAG,GAAI,OAAM,YAAY,KAAK,IACnD,eAAe,KAAK,GAAG,GAAI,OAAM,YAAY,KAAK,KAGpD,WAAwC,CAAC,iBAEzC,MAAI,qBACF,QAAO,eAAoB,gBAG7B,AAAI,oBACF,QAAO,aAAkB,cAGpB,OAGT,0CACE,WAAe,MAAM,SAAS,EAAI,EAAG,EAAI,EAAI,UAC9B,MAAM,SAAS,EAAI,EAAG,EAAI,EAAI,SAC/B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC3B,KAAK,IAAI,OAAO,GAAI,OAAO,UAC1B,OAAQ,OAAU,OAAQ,aAC1B,OAAQ,OAAU,OAAQ,OACzC,GAAI,OAAS,GAAK,OAAS,EACzB,MAAO,GAET,qBAAyB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,MAAO,wBAChB,KAAK,IAAI,iBAAmB,iBAAkB,GACnE,KAAK,IAAI,iBAAmB,iBAAkB,GAClD,MAAO,kBAAoB,OAAQ,MAAQ,kBAO7C,iDACE,WAAe,KAAK,IAAI,OAAQ,IAAM,KACtC,MAAO,MAAO,aAAe,OAAS,EAGxC,oCAKE,MAAQ,IAAG,MAAQ,GAAG,OAChB,GAAG,QAAU,GAAG,OAAW,GAAG,SAAW,GAAG,SC3MpD,AA4CA,uCACI,wCACsC,kBACrB,OAAO,mBAC1B,WAAe,gBAAgB,MAAO,QAAS,kCAC/B,gBAAgB,OAAQ,SAAU,iCAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,gBAClD,cAAgB,OAAO,cACvB,aAAe,OAAO,aACtB,eAAiB,OAAO,eAExB,mBAAuB,KAAM,SAAQ,IAAI,CAAC,OAAO,OAAQ,QAAQ,mBAC/C,eAAe,cACd,eAAe,IAK3B,iBAAmB,wBACtB,UAAW,WAAY,cAAe,aAAc,gBACxD,MAAI,UAAW,OACb,OAAO,UAET,AAAI,UAAY,QACd,QAAQ,UAGH,SAAS,gBAAiB,SAG5B,2BAA+B,wBC5EtC,AAyDA,qCACI,wCACsC,kBACrB,OAAO,+BACT,GACjB,WAAe,gBAAgB,MAAO,QAAS,6BAC/B,gBAAgB,OAAQ,SAAU,4BAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,eAC9C,cACJ,cAAgB,OAAO,cACvB,aAAe,OAAO,aACtB,eAAiB,OAAO,eACxB,aAAe,OAAO,aAEtB,WAA0C,CAAC,MAAO,OAAQ,OAAQ,eAE9D,CAAC,cAAe,aAAc,eAAgB,qBAGnC,OAAO,UACH,oBAAqB,OACrB,OAEnB,MAAO,CAAC,gBAAiB,OAAO,GAAI,eAAgB,OAAO,IAGtD,+BAAmC,GAAG,CAAC,8BCrF9C,AAqDA,gDACI,wCACsC,kBACrB,OAAO,+BACT,GACjB,WAAe,gBAAgB,MAAO,QAAS,kCAC/B,gBAAgB,OAAQ,SAAU,iCAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,eAC9C,cACJ,cAAgB,OAAO,cACvB,aAAe,OAAO,aACtB,eAAiB,OAAO,eACxB,aAAe,OAAO,aAEtB,mBAAuB,KAAM,SAAQ,IAAI,CAAC,OAAO,OAAQ,QAAQ,mBAC/C,eAAe,cACd,eAAe,IAK3B,gBAAiB,gBAAkB,wBACtC,UAAW,WAAY,cAAe,aAAc,eACpD,cAEJ,MAAI,UAAW,OACb,OAAO,UAET,AAAI,UAAY,QACd,QAAQ,UAGH,CACL,gBAAiB,SAAS,gBAAiB,SAC3C,eAAgB,SAAS,iBAItB,oCAAwC,iCC7F/C,AAmDA,kCACI,wCACsC,kBACrB,OAAO,qCACH,IACvB,WAAe,gBAAgB,MAAO,QAAS,6BAC/B,gBAAgB,OAAQ,SAAU,4BAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,eAC9C,qBACmB,OAAO,4BACR,OAAO,6BACL,OAAO,sBAEW,CAAC,MAAO,OAAQ,OAAQ,eAC1B,CACtC,cAAe,eACf,aAAc,cACd,eAAgB,gBAChB,2BAIa,OAAO,UACH,oBAAqB,OACrB,OAEnB,MAAO,CAAC,gBAAiB,OAAO,GAAI,aAAc,OAAO,IAGpD,4BAAgC,GAAG,CAAC,2BClF3C,AAgDA,6CACI,wCACsC,kBACrB,OAAO,qCACH,IACvB,WAAe,gBAAgB,MAAO,QAAS,kCAC/B,gBAAgB,OAAQ,SAAU,iCAEnC,sBACX,OAAQ,QAAS,cAAe,aAAc,eAC9C,qBACmB,OAAO,4BACR,OAAO,6BACL,OAAO,sCAG3B,KAAM,SAAQ,IAAI,CAAC,OAAO,OAAQ,QAAQ,UAKvC,gBAAiB,cAAgB,wBACpC,UAAW,WAAY,eAAgB,cAAe,gBACtD,oBAEJ,MAAI,UAAW,OACb,OAAO,UAET,AAAI,UAAY,QACd,QAAQ,UAGH,CACL,gBAAiB,SAAS,gBAAiB,SAC3C,aAAc,OAAO,aAAc,UAIhC,iCAAqC,8BCtF5C,AA8CA,yBACI,yBAA6D,oBAC1C,IACrB,YAAgB,gBAAgB,OAAQ,SAAU,kBAElD,AAAK,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,gEACM,QAAQ,SACxB,AAAK,OACD,KAAK,SAAW,EAChB,IAAM,6DACC,SACX,AAAK,OACD,mBAAqB,IAAS,eAAiB,GAC/C,IAAM,qFAGV,gBAAkB,qBACC,GACnB,AAAI,QAAQ,OAAS,GACnB,cAAe,GACf,YAAc,QACV,QAAS,CAAC,EAAG,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,MAGrE,MAAW,YAE0B,CAAC,OAAQ,mBACX,CAAC,aAAc,iBAAkB,UAGxD,OAAO,UACH,eAAgB,OAChB,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,mBAAuB,GAAG,CAAC,kBCxFlC,AA+CA,gCACI,yBAA6D,oBAC1C,IACrB,YAAgB,gBAAgB,OAAQ,SAAU,yBAElD,AAAK,OACD,QAAQ,OAAS,GAAK,QAAQ,OAAS,EACvC,IAAM,uEACM,QAAQ,SACxB,AAAK,OACD,KAAK,SAAW,EAChB,IACI,oEACG,SACX,AAAK,OACD,QAAQ,QAAU,WAAa,QAAQ,QAAU,QACjD,IAAM,oDACV,AAAK,OACD,mBAAqB,IAAS,eAAiB,GAC/C,IAAM,4FAEV,gBAAkB,qBACC,GACnB,AAAI,QAAQ,OAAS,GACnB,cAAe,GACf,YAAc,QACV,QAAS,CAAC,EAAG,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,MAErE,MAAW,YAEiC,CAAC,OAAQ,mBAEpB,CAAC,aAAc,iBAAkB,UAGtD,OAAO,UACH,sBAAuB,OACvB,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,0BAA8B,GAAG,CAAC,yBC5FzC,AAyEA,mBACI,qBACF,OACI,SAAW,IAAM,EACjB,IAAM,gDAAgD,aAC1D,OACI,SAAW,IAAM,EACjB,IAAM,gDAAgD,aAE1D,OAAW,gBAAgB,EAAG,IAAK,YAEnC,OACI,GAAG,MAAQ,EACX,IAAM,4CAA4C,GAAG,SAEzD,UAAc,GAAG,YACF,GAAG,MAAM,MAAM,IAE9B,GAAI,CAAE,WAAY,GAChB,KAAM,IAAI,OACN,yBAAyB,0DACwB,OAEvD,GAAI,CAAE,WAAY,GAChB,KAAM,IAAI,OACN,yBAAyB,6DAC2B,OAG1D,AAAI,SAAW,GACb,UAAW,GAEb,AAAI,SAAW,GACb,UAAW,GAGb,MAAU,QAAQ,MAAM,EAAG,EAAG,EAAG,SAAU,CAAC,GAAI,MACtC,MAAM,EAAG,EAAG,EAAG,YACd,IAAI,EAAG,UAEH,WACX,UAAU,GAAI,OAAO,CAAC,SAAU,UAChC,aAAa,GAAI,OAAO,CAAC,SAAU,gBAE1B,MAAM,CAAC,EAAG,GAAI,GAAG,OAE9B,MAAO,SACI,MAAM,QAAQ,QAAQ,GAAI,CAAC,GAAI,EAAG,KACvB,IAAI,KAAO,MAAM,OAAQ,IAAK,QACzC,OAGN,aAAiB,GAAG,CAAC,YC7H5B,AA2DA,sBAAsB,IACpB,oBACA,GAAI,MAAM,QAAQ,KAChB,gBAAkB,GAClB,OACI,IAAM,MAAQ,GAAG,OAAS,EAC1B,IAAM,qEAEV,QAAY,GAAG,GAAG,MAAM,GACxB,UAAa,EAAG,EAAI,GAAG,OAAQ,EAAE,EAC/B,OACI,GAAG,GAAG,MAAM,KAAO,IACnB,IACI,iEACK,GAAkB,GAAG,MAAM,UAAU,YAGpD,iBAAkB,GAClB,GAAK,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,IAAI,GAAK,QAAQ,EAAG,CAAC,KAGtD,OACI,GAAG,QAAU,GAAG,GAAG,MAAM,GACzB,IAAM,oCACK,GAAkB,yCACC,GAAkB,GAAG,MAAM,QAE7D,OAAuB,QACV,GACb,UAAa,EAAG,EAAI,GAAG,OAAQ,EAAE,EAC/B,GAAG,KAAK,OAAO,KAAK,KAClB,MAAQ,KAAK,GACb,GAAI,EAAI,EACN,UAAa,EAAG,EAAI,EAAG,EAAE,GACvB,SAAa,IAAI,KAAI,IAAI,GAAG,GAAI,IAAK,GAAG,IACxC,EAAI,IAAI,EAAG,MAGf,MAAO,KAAI,EAAG,KAAK,EAAG,iBAI1B,MAAI,iBACK,MAAM,GAAI,GAEV,GAIJ,gBAAoB,GAAG,CAAC,eC5G/B,AAmFA,aAAa,eAA0B,IAMrC,GALA,OACI,EAAE,MAAQ,EACV,IAAM,gEACF,EAAE,QAEN,EAAE,OAAS,EACb,MAAO,MAAK,EAAe,cACtB,CAKL,kBAAsB,EAAE,MAAM,MAAM,EAAG,EAAE,MAAM,OAAS,GAC7B,OAAO,cAAiB,MAAQ,WAC9C,QACT,QACI,EACA,CACE,cAAe,EAAE,MAAM,EAAE,MAAM,OAAS,GACxC,EAAE,MAAM,EAAE,MAAM,OAAS,KAE/B,QACqB,QACA,GACzB,KAAK,QAAQ,MACX,aAAmB,KAAK,IAAiB,cACzC,KAAK,KAAK,KACV,KAAK,KAAK,OAEZ,MAAU,QAAQ,MAAM,KAAM,GAAI,EAAE,SAC1B,QAAQ,MAAM,KAAM,GAAI,EAAE,OACpC,MAAO,CAAC,EAAG,IAIf,6BAA0C,IACxC,MAAO,QAAO,KAAK,KACjB,OACI,EAAE,MAAM,SAAW,EACnB,IAAM,0CACF,EAAE,MAAM,mBAEhB,MAAU,EAAE,MAAM,KACR,EAAE,MAAM,KAEV,IAAI,KACJ,MAAM,SAEA,SAAS,CAAC,CAAC,IAAK,CAAC,EAAG,MAChB,MAAM,aAEV,GAAK,EAAI,EAAI,EAC3B,UAAa,EAAG,EAAI,MAAO,EAAE,GAG3B,UAAc,QACA,QACA,EACd,CAAC,EAAG,EAAG,GAAK,OAAO,KAAK,KAEtB,WAAe,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAI,EAAG,UAC1B,KAAK,YACP,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,MAGvB,MAAM,QAAQ,IAAK,GAAI,SAAS,CAAC,CAAC,MAAO,SAAS,CAAC,CAAC,SAEnD,IAAI,IAAK,IAAI,EAAG,aACd,IAAI,OAAQ,IACzB,AAAI,KAAK,MAAM,KAAO,EACpB,EAAI,MAAM,OAEV,EAAI,OACA,CACE,MACA,MAAM,KAAM,CAAC,EAAG,GAAI,CAAC,KAAK,MAAM,GAAK,EAAG,KAAK,MAAM,MAGrD,GAEN,QAAY,IAAI,IAAI,OAAO,EAAG,IAAK,iBAGlB,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAI,EAAG,cACd,IAAI,IAAK,MAChB,UAAU,GAC/B,GAAI,IAAM,EACR,EAAI,IAAI,SAAU,OAAO,UAAW,OAAO,GAAI,iBAE/C,cACI,IAAI,SAAU,OAAO,UAAW,OAAO,GAAI,YAC/C,EAAI,OAAO,CAAC,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,WAAY,GAEpD,eAA6B,UAAU,oBACtB,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,EAAE,MAAM,GAAK,IACnD,GAAI,IAAM,EACR,EAAI,IAAI,SAAU,OAAO,OAAO,SAAU,GAAI,kBAE9C,cACI,IAAI,SAAU,OAAO,OAAO,SAAU,GAAI,aAC9C,EAAI,OAAO,CAAC,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,WAAY,GAEpD,MAAO,CAAC,EAAG,EAAG,KAEhB,QAAQ,CAAC,MAAO,MAAO,QAGzB,MAAI,CAAC,cAAgB,EAAI,GACvB,GAAI,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IACzB,EAAI,MAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,KAGpB,CAAC,EAAG,KAIR,OAAW,GAAG,CAAC,MCxMtB,AAiBA,IAAY,UAAZ,AAAA,sBACE,WAAA,WAAA,KAAA,GAAA,OACA,WAAA,WAAA,KAAA,GAAA,OACA,WAAA,WAAA,IAAA,GAAA,MACA,WAAA,WAAA,uBAAA,GAAA,2BAJU,WAAA,WAAS,KCyBrB,8BACI,2BACY,UAAU,wBACxB,YAAgB,gBAAgB,QAAQ,SAAU,gCAC3B,KACvB,AAAI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,wBAGjD,iBAAsB,UAAY,KAAQ,QAAU,IAAI,QAAS,UAEjE,GAAI,aAAc,UAAU,KAC1B,MAAO,cAET,GAAI,aAAc,UAAU,IAC1B,MAAO,MAAI,cAEb,GAAI,aAAc,UAAU,MAC1B,GAAI,UAAY,KACd,MAAO,MAAK,cACP,CACL,oBAAwB,QAAQ,KAAO,SAAS,YACjC,IAAI,KAAI,cAAe,KAAI,WAC1C,MAAO,iBAAkB,EAAI,IAAI,OAAQ,OAAO,kBACnB,QAGjC,GAAI,aAAc,UAAU,wBAC1B,GAAI,UAAY,KACd,MAAO,KAAI,KAAI,cAAe,OAAO,QAAQ,OACxC,CACL,uBAA2B,IAAI,SAAU,MAAK,QAAQ,oBAGlD,KAAK,KAAI,SAAS,mBAAoB,OAAO,KAAM,WACvD,MAAO,KAAI,KAAI,cAAe,cAIlC,KAAM,OAAM,sBAAsB,cAE7B,wBAA4B,GAAG,CAAC,uBCnFvC,AA2CA,6BACI,sCAEY,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,mCAE9C,gBAAgB,YAAa,cAAe,+BACzB,KACvB,AAAI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,uBAEjD,kBACI,QAAQ,MAAO,aAAa,MAAO,iCAEvC,YAAe,IAAI,IAAI,QAAS,eAChC,MAAO,qBAAoB,QAAQ,SAAU,YAGxC,uBAA2B,GAAG,CAAC,sBChBtC,yBACI,2CAEY,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,+BAE9C,gBAAgB,YAAa,cAAe,2BACzB,KACvB,AAAI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,mBAEjD,kBACI,QAAQ,MAAO,aAAa,MAAO,6BAEvC,QAAY,OAAO,WACJ,IAAI,IAAK,KAAI,IAAI,QAAS,cAAe,KAAM,KAC9D,MAAO,qBAAoB,QAAQ,SAAU,YAExC,mBAAuB,GAAG,CAAC,kBCnBlC,oBACI,sCAEY,UAAU,wBACxB,YAAc,gBAAgB,OAAQ,SAAU,0BAC3B,gBAAgB,YAAa,cAAe,sBAC1C,KACvB,AAAI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,cAEjD,kBAAkB,QAAQ,MAAO,aAAa,MAAO,wBAErD,QAAY,OAAO,GAEnB,QAAU,IAAI,IAAI,OAAO,GAAI,SAAU,KACvC,YAAe,KAAK,IAAI,IAAK,IAAI,QAAS,gBAC1C,MAAO,qBAAoB,QAAQ,SAAU,YAExC,cAAkB,GAAG,CAAC,aC9D7B,AAiDA,oBACI,iCACqC,aACzB,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,0BAC7B,gBAAgB,YAAa,cAAe,sBAC1C,KACvB,AAAI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,cAEjD,kBAAkB,QAAQ,MAAO,aAAa,MAAO,wBAErD,gBAAoB,OAAO,aACb,IAAI,IAAI,aAAc,oBAClB,QAAQ,MAAO,oBAClB,IAAI,MAAO,mBAGtB,KAAI,IAAI,OAAO,IAAM,OAAO,YAAa,IAAI,YAAa,SAC9D,MAAO,qBAAoB,QAAQ,SAAU,YAExC,cAAkB,GAAG,CAAC,aCtE7B,AAgDA,kBACI,oCACuC,gBAC3B,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,wBAC7B,gBAAgB,YAAa,cAAe,oBAC1C,KACvB,AAAI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,YAEjD,kBAAkB,QAAQ,MAAO,aAAa,MAAO,sBAErD,QAAY,OAAO,iBACG,OAAO,cAElB,IAAI,IAAI,QAAS,IAAI,KAAI,aAAc,sBAE9C,IAAI,IAAI,IAAK,SAAU,IAAI,KAAI,IAAI,IAAK,cAAe,yBAC5C,IAAI,IAAI,KACvB,MAAO,qBAAoB,QAAQ,SAAU,YAExC,YAAgB,GAAG,CAAC,WCrE3B,AA0CA,2BACI,sCAEY,UAAU,wBACxB,YAAgB,gBAAgB,OAAQ,SAAU,iCAE9C,gBAAgB,YAAa,cAAe,6BACzB,KACvB,AAAI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,qBAEjD,kBACI,QAAQ,MAAO,aAAa,MAAO,+BAEvC,YAAe,kBAAkB,QAAS,cAC1C,MAAO,qBAAoB,QAAQ,SAAU,YAExC,qBAAyB,GAAG,CAAC,oBC3DpC,AAmCA,wCACI,eACF,YACI,gBAAgB,OAAQ,SAAU,yCAElC,gBAAgB,OAAQ,SAAU,iCACtC,kBACI,QAAQ,MAAO,QAAQ,MAAO,4CAsBlC,cAAkB,KAAK,uBACD,IAAI,QAAS,uBACb,MAAM,IAAI,IAAI,IAAI,YAExC,MAAO,MAAI,IAAI,UAAW,eAAgB,eAwB5C,6EAEkD,aAClC,UAAU,wBACxB,sBAAwB,gBACpB,iBAAkB,mBAAoB,+BAC1B,gBAAgB,OAAQ,SAAU,gCAC3B,KAOvB,GANA,AAAI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,wBAEjD,kBACI,kBAAkB,MAAO,QAAQ,MAAO,kCAExC,eAAiB,GACnB,yBAA6B,OAAO,oBACxB,OAAO,QACN,OAAO,IAEpB,kBACI,KAAI,IAAI,kBAAmB,IAAI,IAAK,uBAChC,IAAI,KAAM,uBAEpB,YAAe,+BAA+B,kBAAmB,SAEjE,MAAO,qBAAoB,QAAQ,SAAU,YAGxC,wBAA4B,GAAG,CAAC,uBCxHvC,AA+DA,wCACI,kBAA4B,IAK9B,GAJA,AAAI,MAAQ,IACV,KAAM,OAAO,KAAO,GAGlB,MAAQ,OAAO,KAAO,EACxB,KAAM,OACF,mGACuC,OAAO,oBAC/B,OAGrB,aACI,WAAW,yBAIT,aAAiB,OACL,UAAU,QAAQ,CAAC,KAAM,oBACnB,IAAI,KAAK,QAAQ,WAAY,KAC/C,KAAK,CAAC,QAAQ,YAEd,eAAmB,IAAI,IAAI,UAAW,gBACrB,KAAI,WAAY,CAAC,eAEjB,aACf,wBAA4B,cACZ,qBAAqB,GAAG,MAAO,CAAC,MAChD,MAAO,CACL,IAAI,QAAQ,GAAI,SACZ,IAAI,KAAK,QAAQ,WAAY,IAAI,cACrC,IAAI,QAAQ,GAAI,SACZ,IAAI,IAAI,YAAY,KAAK,QAAQ,eAGzC,MAAO,CAAC,MAAO,YAGrB,MAAO,UAAS,OAAQ,QAsB1B,yEAEkD,aAClC,UAAU,wBACxB,kBACI,gBAAgB,aAAc,eAAgB,+BAClC,gBAAgB,OAAQ,SAAU,gCAC3B,KASvB,GAPA,AAAI,SAAW,MACb,UAAW,gBAAgB,QAAS,UAAW,wBAGjD,kBACI,cAAc,MAAO,QAAQ,MAAO,kCAEpC,eAAiB,GACnB,yBAA6B,OAAO,oBACxB,OAAO,cACA,OAAO,cAAc,MAAM,IAE9C,cACI,KAAI,IAAI,cAAe,IAAI,IAAK,uBAC5B,IAAI,qBAAsB,aAGpC,YAAe,+BAA+B,cAAe,SAE7D,MAAO,qBAAoB,QAAQ,SAAU,YAGxC,wBAA4B,GAAG,CAAC,uBC3JvC,AA0NA,IAAM,SAAW,CACf,IACA,KACA,KACA,cASa,CACb,cACA,WACA,MACA,YAeY,CACZ,cACA,sBACA,eACA,iBACA,cACA,kBACA,uBACA,2BACA,gCACA,wBACA,qCAOa,CACb,SACA,YACA,WAaa,CACb,mBACA,oBACA,eACA,UACA,UACA,QACA,iBACA,oBACA,qBCrSF,IAAA,uBAyCwC,cAiBtC,sBAAuC,YAErC,IAAO,MAAO,cAAS,KAAK,iBAAiB,EAAG,SAEhD,GAAI,SAAW,MACb,cACI,QAAQ,IAAI,GAAM,EAAC,KAAM,EAAE,KAAM,OAAQ,OAAM,EAAE,SACrD,KAAK,eAAe,eAEpB,MAAK,eAAe,QAMtB,MAFA,SAAQ,QAEJ,WACK,MAEP,OAAM,UACC,SAOP,cACF,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAEd,KAAK,YAGJ,sBACR,KAAK,YAAc,KAAK,WAAa,EAgBvC,4BAEE,MAAO,eAAc,EAAG,SAgB1B,UACE,AAAI,KAAK,aAAe,MACtB,QAAQ,KAAK,kBAIX,kBACJ,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAEd,CACL,KAAM,OAEN,OAAQ,OAAO,KAAK,YAAa,eAI/B,cACJ,KAAM,IAAI,OAAM,gEAGZ,0BACJ,KAAM,IAAI,OACN,4DACG,KAAK,uBAUE,iCAEd,YAAK,YAAe,MAAM,cAAa,GAAG,OAAO,QAAQ,GAClD,aAAa,MAAM,KAI9B,OAAO,eAAe,UAAW,OAAO,YAAa,CACnD,MAAO,UACE,SAAS,UAAY,MAAQ,SAAS,kBAAoB,MAC7D,SAAS,gBAAkB,OC1KnC,IAAA,+BA+BuC,WAMrC,sCAEgC,MAC9B,QAFY,KAAA,aAAA,aAAgC,KAAA,IAAA,IAChC,KAAA,QAAA,SALN,KAAA,iBAAwC,GACxC,KAAA,mBAA0C,GAOhD,AAAI,UAAW,MACb,MAAK,QAAU,OAAO,QAAQ,WAIlC,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,gBACvB,GAClB,AAAI,KAAK,iBAAiB,IAAM,MAC9B,MAAK,iBAAiB,GAAK,CACzB,aAAc,GAAG,kBACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAGnD,AAAI,KAAK,mBAAmB,IAAM,MAChC,MAAK,mBAAmB,GAAK,CAC3B,aAAc,GAAG,iBACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAInD,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,oBAAwB,KAAK,iBAAiB,GAAG,2BACvB,KAAK,mBAAmB,GAAG,SAErD,KAAK,KACH,uBACI,KAAI,IAAI,gBAAiB,KAAK,KAC1B,IAAI,OAAO,UAAW,EAAI,KAAK,cAGnC,IAAI,IAAI,KAAK,KAAI,kBAAmB,KAAK,UACjC,KAAK,KAAI,gBAAiB,KAAK,WACnC,+BAGJ,KAAI,IAAI,kBAAmB,KAAK,KAC5B,IAAI,OAAO,SAAU,EAAI,KAAK,MAEtC,gBAAgB,OAAO,oBACvB,kBAAkB,OAAO,sBAEzB,aAAiB,KAAI,IAAI,QAAS,CAAC,KAAK,cAAe,OACvD,MAAM,OAAO,cAGjB,KAAK,sBAGP,UACE,AAAI,KAAK,oBAAsB,MAC7B,SAAQ,KAAK,iBAAiB,IAAI,GAAK,EAAE,WACzC,QAAQ,KAAK,mBAAmB,IAAI,GAAK,EAAE,iBAIzC,cAEJ,eACI,CAAC,GAAG,KAAK,iBAAkB,GAAG,KAAK,oBACvC,MAAO,CAAC,KAAM,MAAK,kBAAkB,OACjC,WAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,kBAAsB,aAAa,OAAS,YAC1B,GAClB,KAAK,iBACD,aAAa,MAAM,EAAG,eAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,cAEnD,KAAK,mBACD,aAAa,MAAM,cAAe,cAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,cAI7C,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,IAAO,KAAK,IACZ,QAAW,KAAK,eAKb,wBAEL,MAAO,IAAI,KAAI,OAAO,aAAiB,OAAO,IAAQ,OAAO,WAjHxD,kBAAA,UAAY,WAoHrB,cAAc,mBCrJd,IAAA,8BA+BsC,WAMpC,iDACsE,IACpE,QADY,KAAA,aAAA,aAA8B,KAAA,wBAAA,wBAHpC,KAAA,iBAAwC,GAOhD,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,MACzC,GAAI,KAAK,iBAAiB,IAAM,MAC9B,cAAkB,GAClB,KAAK,iBAAiB,GAAK,CACzB,aAAc,GAAG,mBACjB,SAAU,KACN,IAAM,KAAK,MAAM,MAAO,KAAK,yBAClB,SAAS,aAI5B,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,oBAAwB,KAAK,iBAAiB,GAAG,SAEjD,KAAK,KACH,uBAA2B,KAAI,gBAAiB,OAAO,WACvD,gBAAgB,OAAO,oBAEvB,aAAiB,KACb,IAAI,IAAI,SACA,KAAK,KAAI,mBAAoB,OAAO,QAAQ,aAChD,CAAC,KAAK,cACV,OACJ,MAAM,OAAO,cAGjB,KAAK,sBAGP,UACE,AAAI,KAAK,kBAAoB,MAC3B,QAAQ,KAAK,iBAAiB,IAAI,GAAK,EAAE,gBAIvC,cAEJ,MAAO,CAAC,KAAM,MAAK,kBAAkB,OAAO,KAAK,iBAAiB,IAC9D,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGvC,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,cAAkB,GAClB,KAAK,iBAAmB,aAAa,IACjC,GAAM,EAAC,aAAc,EAAE,KAAM,SAAU,EAAE,OAAO,SAAS,cAG/D,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,wBAA2B,KAAK,+BAK7B,wBAEL,MAAO,IAAI,KAAI,OAAO,aAAiB,OAAO,2BA/EzC,iBAAA,UAAY,UAkFrB,cAAc,kBCnHd,IAAA,2BAkCmC,WASjC,8CAEyD,MACvD,QAFY,KAAA,aAAA,aAAgC,KAAA,MAAA,MAChC,KAAA,MAAA,MAAyB,KAAA,QAAA,SAL/B,KAAA,uBAA8C,GAC9C,KAAA,wBAA+C,GAMrD,KAAK,KAEH,KAAK,SAAW,OAAO,OAAO,WAC9B,KAAK,SAAW,OAAO,OAAO,aAGhC,AAAI,UAAW,MACb,MAAK,QAAU,OAAO,QAAQ,WAIlC,kCACE,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,IAAI,GAAK,EAAE,MAC7B,OAAO,KAAK,mBAChB,KAAK,KACH,qBAAyB,IAAI,EAAG,KAAK,2BACZ,IAAI,EAAG,KAAK,UAErC,SAAS,QAAQ,WACf,UAAc,OAAO,oBAAoB,gBACvB,GAClB,AAAI,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,SACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAGnD,AAAI,KAAK,wBAAwB,IAAM,MACrC,MAAK,wBAAwB,GAAK,CAChC,aAAc,GAAG,SACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAInD,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,gBAAoB,KAAK,uBAAuB,GAAG,sBAC9B,KAAK,wBAAwB,GAAG,wBAGjD,KAAI,IAAI,YAAa,KAAK,OAAQ,IAAI,SAAU,EAAI,KAAK,wBAEzD,KAAI,IAAI,aAAc,KAAK,OACvB,IAAI,OAAO,UAAW,EAAI,KAAK,iCAEN,IAAI,eAAgB,4CAEjD,IAAI,gBAAiB,kBAEzB,YAAY,OAAO,gBACnB,aAAa,OAAO,iBAEpB,aACI,KAAI,IAAI,IAAI,yBACA,KAAI,KAAK,2BAA4B,KAAK,UAC9C,CAAC,KAAK,cACV,OACR,MAAM,OAAO,YAGf,KAAK,SAAS,OAAO,IAAI,KAAK,SAAU,KAAK,QAC7C,KAAK,SAAS,OAAO,IAAI,KAAK,SAAU,KAAK,UAE/C,KAAK,sBAGP,UACE,KAAK,SAAS,UACd,KAAK,SAAS,UAEd,AAAI,KAAK,wBAA0B,MACjC,QAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAEjD,AAAI,KAAK,yBAA2B,MAClC,QAAQ,KAAK,wBAAwB,IAAI,GAAK,EAAE,gBAI9C,cAEJ,eACI,CAAC,GAAG,KAAK,uBAAwB,GAAG,KAAK,yBAC7C,MAAO,CAAC,KAAM,MAAK,kBAAkB,OACjC,WAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,KAAK,KACH,KAAK,SAAS,OAAO,IAAI,KAAK,MAAO,KAAK,YAAc,IACxD,KAAK,SAAS,OAAO,IAAI,KAAK,MAAO,KAAK,YAAc,MAG1D,kBAAsB,aAAa,OAAS,YAC1B,GAClB,KAAK,uBACD,aAAa,MAAM,EAAG,eAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,cAEnD,KAAK,wBACD,aAAa,MAAM,cAAe,cAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,cAI7C,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,MAAS,KAAK,MACd,QAAW,KAAK,eAKb,wBAEL,MAAO,IAAI,KACP,OAAO,aAAiB,OAAO,MAAU,OAAO,MAChD,OAAO,WA5IN,cAAA,UAAY,OA+IrB,cAAc,eCnLd,IAAA,6BAiCqC,WASnC,8CAEyD,WACnC,GACpB,QAHY,KAAA,aAAA,aAAgC,KAAA,MAAA,MAChC,KAAA,MAAA,MAAyB,KAAA,QAAA,SACzB,KAAA,MAAA,MANN,KAAA,uBAA8C,GAC9C,KAAA,2BAAkD,GAQxD,KAAK,KACH,KAAK,UAAY,OAAO,GAAG,WAC3B,KAAK,SAAW,OAAO,OAAO,aAGhC,AAAI,UAAW,MACb,MAAK,QAAU,OAAO,QAAQ,WAIlC,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,KAAK,KACH,qBAAyB,IAAI,EAAG,KAAK,aAEjC,IAAI,CAAC,KAAK,aAAc,KAAI,IAAI,KAAK,UAAW,KAAK,OAAQ,IAEjE,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,gBACvB,GAClB,AAAI,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,SACjB,SAAU,UAAU,OAAO,SAAS,aAGxC,AAAI,KAAK,2BAA2B,IAAM,MACxC,MAAK,2BAA2B,GAAK,CACnC,aAAc,GAAG,SACjB,SAAU,UAAU,OAAO,SAAS,aAIxC,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,gBAAoB,KAAK,uBAAuB,GAAG,yBAC3B,KAAK,2BAA2B,GAAG,wBAGvD,KAAI,IAAI,YAAa,KAAK,OAAQ,IAAI,SAAU,EAAI,KAAK,YAEjD,IAAI,gBAAiB,KAAK,WAC1B,IAAI,6BAEW,QAAQ,IAAK,KAExC,YAAY,OAAO,gBACnB,gBAAgB,OAAO,oBAEvB,aACI,KAAI,IAAI,IAAI,GAAI,kBACR,IAAI,eAAgB,KAAI,mBAAoB,KAAK,WACrD,OAER,MAAM,OAAO,YAGf,KAAK,UAAU,OAAO,KAAI,KAAK,UAAW,IAC1C,KAAK,SAAS,OAAO,IAAI,KAAK,SAAU,KAAK,UAE/C,KAAK,sBAGP,UACE,KAAK,SAAS,UACd,KAAK,UAAU,UAEf,AAAI,KAAK,wBAA0B,MACjC,QAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAEjD,AAAI,KAAK,4BAA8B,MACrC,QAAQ,KAAK,2BAA2B,IAAI,GAAK,EAAE,gBAIjD,cACJ,KAAM,IAAI,OAAM,wDAGZ,0BACJ,KAAM,IAAI,OAAM,mDAGlB,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,MAAS,KAAK,MACd,QAAW,KAAK,QAChB,MAAS,KAAK,aAKX,wBAEL,MAAO,IAAI,KACP,OAAO,aAAiB,OAAO,MAAU,OAAO,MAChD,OAAO,QAAY,OAAO,SAvHzB,gBAAA,UAAY,SA0HrB,cAAc,iBC7Jd,IAAA,0BA6BkC,WAKhC,0BACE,QADoB,KAAA,aAAA,aAEpB,KAAK,gBAAgB,cAGvB,kCACE,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,IAAI,GAAK,EAAE,MAC7B,OAAO,KAAK,mBAChB,SAAS,QAAQ,WACf,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAEF,UAAc,OAAO,oBAAoB,MACzC,KAAK,KACH,aAAiB,KAAI,IAAI,KAAK,EAAG,UAAW,OAC5C,MAAM,OAAO,cAGjB,KAAK,sBAMP,8BACE,KAAK,aAAe,aACpB,AAAI,KAAK,GAAK,MACZ,KAAK,EAAE,UAET,KAAK,EAAI,KAAK,OAAO,CAAC,eAGxB,UACE,KAAK,EAAE,eAGH,cACJ,MAAO,CAAC,KAAM,MAAK,uBAGf,0BAEJ,GADA,aAAe,KAAM,MAAK,kBAAkB,cACxC,aAAa,SAAW,EAC1B,KAAM,IAAI,OAAM,iDAIpB,YACE,MAAO,CAAC,aAAgB,KAAK,oBAIxB,wBAEL,MAAO,IAAI,KAAI,OAAO,gBA7DjB,aAAA,UAAY,MAgErB,cAAc,cC/Fd,IAAA,+BA+BuC,cAMrC,8CAE0B,IACxB,MAAM,cAFM,KAAA,aAAA,aAA8B,KAAA,SAAA,SAChC,KAAA,YAAA,YAJJ,KAAA,cAAqC,GAM3C,KAAK,EAAI,OAAO,KAAK,UAGvB,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,MACzC,GAAI,KAAK,cAAc,IAAM,MAC3B,cAAkB,GAClB,KAAK,cAAc,GAAK,CACtB,aAAc,GAAG,gBACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,aAInD,iBAAqB,KAAK,cAAc,GAAG,kBAC1B,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,KAAK,KACH,6BACwB,KAAI,IAAI,KAAK,EAAG,cAAe,UACvD,AAAI,KAAK,YACP,SAAW,KACP,IAAI,KAAK,EAAG,KAAI,SAAU,IAAI,gBAAiB,KAAK,KAAM,OAE9D,SAAW,KAAI,IAAI,KAAK,EAAG,iBAAkB,OAE/C,aAAa,OAAO,iBACpB,MAAM,OAAO,cAGjB,KAAK,sBAGP,UACE,KAAK,EAAE,UACP,AAAI,KAAK,eAAiB,MACxB,QAAQ,KAAK,cAAc,IAAI,GAAK,EAAE,WAS1C,sBACE,KAAK,SAAW,cAGZ,cAEJ,MAAO,CAAC,KAAM,MAAK,kBAAkB,OAAO,KAAK,cAAc,IAC3D,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGvC,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,cAAkB,GAClB,KAAK,cAAgB,aAAa,IAC9B,GAAM,EAAC,aAAc,EAAE,KAAM,SAAU,EAAE,OAAO,SAAS,cAG/D,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,SAAY,KAAK,SACjB,YAAe,KAAK,mBAKjB,wBAEL,MAAO,IAAI,KACP,OAAO,aAAiB,OAAO,SAAa,OAAO,eA3FlD,kBAAA,UAAY,WA8FrB,cAAc,mBC/Hd,IAAA,8BAgCsC,WASpC,+BACsD,YAC7B,WAAiC,cAC3C,IACb,QAOA,GAVY,KAAA,aAAA,aAAgC,KAAA,MAAA,MAChC,KAAA,SAAA,SAA0B,KAAA,QAAA,SANhC,KAAA,uBAA8C,GAC9C,KAAA,mBAA0C,GAC1C,KAAA,qBAA4C,GAQlD,KAAK,SAAW,SAEhB,AAAI,UAAW,MACb,MAAK,QAAU,OAAO,QAAQ,WAE5B,cAAgB,KAClB,KAAM,IAAI,OAAM,sDAIpB,kCACE,kBAAsB,MAAM,QAAQ,mBAChC,kBAAkB,IAAI,MAAQ,KAAK,MACnC,OAAO,KAAK,mBAEhB,cAAc,QAAQ,WACpB,UAAc,OAAO,oBAAoB,gBACvB,GAClB,AAAI,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,WACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAGnD,AAAI,KAAK,mBAAmB,IAAM,MAChC,MAAK,mBAAmB,GAAK,CAC3B,aAAc,GAAG,gBACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAGnD,AAAI,KAAK,qBAAqB,IAAM,MAAQ,KAAK,UAC/C,MAAK,qBAAqB,GAAK,CAC7B,aAAc,GAAG,UACjB,SAAU,KAAK,IAAM,UAAU,OAAO,SAAS,cAInD,aAAiB,MAAM,QAAQ,mBAC3B,kBAAkB,GAAG,OACrB,kBAAkB,MACtB,GAAI,UAAY,KACd,OAGF,0BAA8B,KAAK,uBAAuB,GAAG,4BAClC,KAAK,mBAAmB,GAAG,SACtD,KAAK,KACH,6BACI,KAAI,IAAI,sBAAuB,KAAK,OAChC,IAAI,OAAO,UAAW,EAAI,KAAK,QAEvC,GAAI,KAAK,UACP,wBAA4B,KAAK,qBAAqB,GAAG,gCAGrD,KAAI,IAAI,oBAAqB,KAAK,OAC9B,IAAI,SAAU,EAAI,KAAK,yBAG3B,IAAI,IAAI,SAAU,KAAK,cACnB,KACI,IAAI,yBACA,KAAI,OAAO,wBAAyB,KAAK,kCAErD,KAAI,IAAI,mBAAoB,KAAK,UAAW,kBAEhD,sBAAsB,OAAO,0BAC7B,oBAAoB,OAAO,wBAC3B,mBAAmB,OAAO,uBAE1B,aAAiB,IAAI,MAAO,uBAC5B,MAAM,OAAO,eAGb,8BACI,KAAI,IAAI,sBAAuB,KAAK,OAChC,IAAI,OAAO,UAAW,EAAI,KAAK,8BAGnC,KAAI,IAAI,mBAAoB,KAAK,UAC7B,IAAI,IAAI,SAAU,KAAK,cACnB,KAAK,KAAI,0BAA0B,KAAK,YAEpD,sBAAsB,OAAO,2BAC7B,mBAAmB,OAAO,uBAE1B,aAAiB,IAAI,MAAO,uBAC5B,MAAM,OAAO,eAInB,KAAK,sBAGP,UACE,AAAI,KAAK,wBAA0B,MACjC,QAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAEjD,AAAI,KAAK,sBAAwB,MAAQ,KAAK,UAC5C,QAAQ,KAAK,qBAAqB,IAAI,GAAK,EAAE,WAE/C,AAAI,KAAK,oBAAsB,MAC7B,QAAQ,KAAK,mBAAmB,IAAI,GAAK,EAAE,gBAIzC,cAEJ,eACI,CAAC,GAAG,KAAK,uBAAwB,GAAG,KAAK,oBAC7C,MAAI,MAAK,UACP,WAAU,KAAK,GAAG,KAAK,sBAElB,CAAC,KAAM,MAAK,kBAAkB,OACjC,WAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,0BACJ,aAAe,KAAM,MAAK,kBAAkB,cAC5C,kBACI,KAAK,SAAW,aAAa,OAAS,EAAI,aAAa,OAAS,YAClD,GAClB,KAAK,uBACD,aAAa,MAAM,EAAG,eAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,cAEnD,KAAK,mBACD,aAAa,MAAM,cAAe,cAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,cAE3C,AAAI,KAAK,UACP,MAAK,qBACD,aAAa,MAAM,cAAgB,EAAG,cAAgB,GACjD,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,eAK/C,YACE,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,SAAY,KAAK,SACjB,QAAW,KAAK,QAChB,SAAY,KAAK,gBAKd,wBAEL,MAAO,IAAI,KACP,OAAO,aAAiB,OAAO,MAAU,OAAO,SAChD,OAAO,QAAY,OAAO,YA5KzB,iBAAA,UAAY,UA+KrB,cAAc,kBCjNd,IAAA,kCA+DS,mBACL,MAAO,IAAI,cAAa,oBAkBnB,4CAA+D,IAEpE,MAAO,IAAI,mBAAkB,aAAc,SAAU,mBAuBhD,4BAC2B,YAAe,WAAuB,cACzD,IACb,MAAO,IAAI,kBACP,aAAc,MAAO,SAAU,SAAS,gBAevC,mBACY,WAAe,SAAa,cACzB,MACpB,MAAO,IAAI,eAAc,aAAc,MAAO,MAAO,gBAehD,uBAAwB,SAAY,aAAuB,MAEhE,MAAO,IAAI,mBAAkB,aAAc,IAAK,gBAgB3C,qBACY,WAAe,SAAa,cAAyB,WAC5D,GACV,MAAO,IAAI,iBAAgB,aAAc,MAAO,MAAO,SAAS,aAmB3D,8CAAwD,IAE7D,MAAO,IAAI,kBAAiB,aAAc,2BC1L9C,AA4BA,AAAC,kBAAmB,aAAc,kBAAmB,iBACpD,iBAAkB,gBAAiB,cAE7B,IAAM,MAAQ,CACnB,IAAK,sBAAsB,IAC3B,SAAU,sBAAsB,SAChC,SAAU,sBAAsB,SAChC,QAAS,sBAAsB,QAC/B,QAAS,sBAAsB,QAC/B,OAAQ,sBAAsB,OAC9B,KAAM,sBAAsB,MCtC9B,AAiBA,IAAM,cAA2B,KAC3B,MAAO,wBAA0B,YAC5B,sBACE,MAAO,eAAiB,YAC1B,aAEF,GAAiB,OAa1B,qBACE,MAAO,IAAI,SAAc,SAAW,cAAc,IAAM,YCrC1D,IAAA,u7ECAA,AAmBM,gCAAiC,aACrC,SAAa,OAAO,GAAG,OACvB,OAAO,QAAQ,YACb,AAAK,OACD,MAAM,SAAW,KACjB,IACI,kBAAkB,0BAA0B,gDAChB,WAGtC,AAAK,OACD,MAAQ,GAAK,KAAO,KACpB,IAAM,kBAAkB,qCAAqC,KAAO,MAExE,eAAmB,OAAO,GAC1B,OAAO,QAAQ,YACb,UAAa,EAAG,EAAI,KAAM,IACxB,AAAK,OACA,IAAM,MAAU,MAAM,KAAO,WAAW,GACzC,IAAM,kBAAkB,2BAA2B,OAAO,gDACb,+CACN,QAK3C,uCACJ,gBAAoB,OAAO,GAAG,QAC9B,UAAa,EAAG,EAAI,OAAO,OAAQ,IACjC,YAAY,OAAS,OAAO,GAAG,MAEjC,MAAO,aClDT,AAuBO,IAAM,sBAAwB,GAS/B,0CACJ,MAAI,SAAU,sBACL,OAEF,eAAe,OAAQ,KAAK,MAAM,KAAK,KAAK,UCpCrD,AAkBM,wBACF,+BAEF,YACI,WAAc,OAAO,SAAW,SAAW,OAAS,OAAO,YAE3D,YAAe,OAAO,SAAW,SAAW,OAAS,OAAO,IAChE,MAAO,CAAC,QAAS,SCzBnB,AAyBM,qBACF,yCACe,IACjB,aAAyB,GACzB,GAAI,aACF,SAAW,SAAS,OAAO,WAAW,MAAM,IAC5C,SAAS,KAAK,WAAW,GAAK,OAC9B,SAAW,SAAS,OAAO,WAAW,MAAM,SAE5C,SAAW,SAAS,OAAO,WAAW,IACtC,kBAAsB,WAAW,OACjC,UAAa,EAAG,EAAI,cAAe,EAAE,EACnC,SACI,SAAS,OAAO,CAAC,WAAW,EAAI,GAAK,WAAW,GAAI,WAAW,KAErE,SAAW,SAAS,OAAO,WAAW,MAAM,cAAgB,IAE9D,MAAO,UAYH,8DAEa,IACjB,aAAiB,GACjB,GAAI,cACF,SAAS,KAAK,gBACd,UAAa,eAAiB,EAAG,EAAI,aAAc,EAAE,EACnD,AAAI,GAAK,EAAI,eACX,UAAS,KAAK,GACd,SAAS,KAAK,EAAK,gBAAiB,KAEpC,SAAS,KAAK,QAIlB,wBAA4B,sBACD,GAC3B,UAAa,EAAG,EAAI,aAAc,EAAE,EAClC,AAAI,GAAK,eAAiB,EAAI,GAAK,EAAI,IAAM,EAC3C,mBAAmB,KAAK,GAExB,oBAAoB,KAAK,GAG7B,SAAS,KAAK,GAAG,qBACjB,SAAS,KAAK,GACd,SAAS,KAAK,GAAG,oBAEnB,MAAO,UAYH,sEAEa,IACjB,qBAAyB,GAEzB,AAAI,aACF,iBAAiB,KAAK,WAAW,GAAK,OAEtC,iBAAiB,KAAK,WAAW,GAAK,OAGxC,UAAa,EAAG,EAAI,WAAW,OAAQ,EAAE,EACvC,AAAI,GAAK,WAAW,OAClB,AAAI,aACF,iBAAiB,KAAK,WAAW,EAAI,GAAK,WAAW,IAErD,iBAAiB,KAAK,WAAW,GAAK,WAAW,EAAI,IAGvD,iBAAiB,KAAK,WAAW,IAIrC,MAAO,kBAOH,+CAEJ,qBAAyB,CAAC,GAC1B,UAAa,EAAG,EAAI,WAAY,EAAE,EAChC,iBAAiB,KAAK,MAAM,GAAG,IAEjC,MAAO,kBAcH,uDAEJ,cAAkB,eAAe,MAAM,EAAG,GAC1C,UAAa,EAAG,EAAI,WAAY,EAAE,EAChC,UAAU,KAAK,eAAe,EAAI,GAAK,MAAM,GAAG,GAAK,MAAM,GAAG,IAGhE,MAAO,WCvJT,AAiBO,IAAM,gBAAkB,8BACL,mBClB1B,AAiBO,IAAM,MAAQ,gBACC,kBACA,mBACA,mBACA,oBACA,YCtBtB,AAmBM,iBAAkB,KACtB,AAAK,MAAM,QAAQ,YACjB,QAAQ,KAAK,GAAG,KAId,sBACJ,AAAK,MAAM,QAAQ,YACjB,QAAQ,IAAI,GAAG,KC3BnB,AAgCM,gCACF,aACF,GAAI,MAAK,SAAW,MAAK,OACvB,KAAM,IAAI,OACN,gEACG,MAAK,iBAAiB,MAAK,WAEpC,WAAe,GAAI,cAAa,MAAK,OAAS,GAC9C,UAAa,EAAG,EAAI,OAAO,OAAQ,GAAK,EACtC,OAAO,GAAK,MAAK,EAAI,GACrB,OAAO,EAAI,GAAK,MAAK,EAAI,GAE3B,MAAO,QAiBH,0CAEJ,UAAa,GAAI,cAAa,SAAQ,OAAS,SAClC,GAAI,cAAa,SAAQ,OAAS,GAC/C,UAAa,EAAG,EAAI,SAAQ,OAAQ,GAAK,EACvC,MAAK,EAAI,GAAK,SAAQ,GACtB,MAAK,EAAI,GAAK,SAAQ,EAAI,GAE5B,MAAO,CAAC,WAAM,YAOV,wCAEJ,QAAY,KAAK,KAAK,SAAQ,OAAS,SAC1B,GAAI,cAAa,WACjB,GAAI,cAAa,KAC9B,UAAa,EAAG,EAAI,SAAQ,OAAQ,GAAK,EACvC,MAAK,KAAK,MAAM,EAAI,IAAM,SAAQ,GAClC,MAAK,KAAK,MAAM,EAAI,IAAM,SAAQ,EAAI,GAExC,MAAO,CAAC,WAAM,YAOV,uCAEJ,QAAY,KAAK,MAAM,SAAQ,OAAS,SAC3B,GAAI,cAAa,WACjB,GAAI,cAAa,KAC9B,UAAa,EAAG,EAAI,SAAQ,OAAQ,GAAK,EACvC,MAAK,KAAK,MAAM,EAAI,IAAM,SAAQ,GAClC,MAAK,KAAK,MAAM,EAAI,IAAM,SAAQ,EAAI,GAExC,MAAO,CAAC,WAAM,YAQV,6CAEJ,UAAa,SAAQ,MAAQ,SAChB,SAAQ,MAAQ,EAAI,GACjC,MAAO,CAAC,WAAM,YASV,oDAEJ,KAAK,MAAQ,GAAK,MAClB,KAAK,MAAQ,EAAI,GAAK,MAMlB,8BAEJ,UAAa,GAAI,cAAa,EAAI,SACrB,GAAI,cAAa,EAAI,GAClC,UAAa,EAAG,EAAI,KAAK,KAAK,EAAI,GAAI,KACpC,MAAW,SAAU,EAAI,IAAM,KAAK,GAAM,GAAI,GAC9C,MAAK,GAAK,KAAK,IAAI,GACnB,MAAK,GAAK,KAAK,IAAI,GAErB,MAAO,CAAC,WAAM,YAMV,+BAEJ,MAAW,SAAU,EAAI,IAAM,KAAK,GAAM,GAAI,SACjC,KAAK,IAAI,SACT,KAAK,IAAI,GACtB,MAAO,CAAC,WAAM,YC9HV,0BACF,uBACO,GACT,eAAiB,GACjB,GAAI,MAAQ,kBAAqB,SAC/B,OACI,EAAE,MAAM,MAAQ,kBAAoB,EACpC,IAAM,iDACV,WACI,GAAI,OAAM,iBAAiB,KAAK,EAAE,MAAM,MAAQ,sBAEpD,cAAkB,gBAAgB,OAAO,gBACvC,CAAI,QAAU,IACZ,SAAS,GAEJ,QACN,GACH,OACI,WAAa,EACb,IAAM,2DACV,aAAiB,gBAAgB,QAAQ,IAGzC,GAAI,WAAa,IACf,UAAc,gBAAgB,OAAO,OAAU,EAAI,EAAI,EAAI,EAAI,GAC/D,gBAAgB,UAAY,EAAE,MAAM,MAAQ,MAE9C,OACI,EAAE,MAAM,QAAU,gBAAgB,OAAO,OAAU,EAAI,GACvD,IAAM,+DACV,WAAa,gBAGf,MAAO,YC1DT,IAAA,oNCAA,AA6BM,uCACF,oBACF,SAAW,OAUX,IAPA,AAAI,QAAU,sBACZ,KAAM,OACN,KAAO,IAEP,IAAM,eAAe,OAAQ,KAAK,MAAM,KAAK,KAAK,UAG7C,CAAC,MACN,AAAI,IAAM,aAAe,MAAQ,OAC/B,KAAO,GAEP,IAAM,eAAe,OAAQ,IAAM,GAGvC,MAAO,KAGH,mDAEJ,aAAiB,QACJ,OAAO,OACpB,YAAe,EAAG,IAAM,KAAM,MAC5B,AAAI,MAAQ,KACV,SAAS,KAAK,OAAO,MAErB,SAAS,KAAK,aAGlB,MAAO,UAWH,4DAGJ,gBAAoB,QAAQ,MAAM,aACpB,EAAE,MAAM,OAEtB,GAAI,YAAc,GACZ,WAAY,CAAC,aAAe,UAAY,aAC1C,KAAM,IAAI,OAAM,sCAAsC,gBAClD,yBAAyB,aAQjC,GAJA,AAAI,UAAY,GACd,YAAa,aAGX,UAAY,MACd,KAAM,IAAI,OAAM,cAAc;MAC5B,WAGJ,GAAI,KAAO,UACT,KAAM,IAAI,OAAM,cACZ,kDAAkD,UAGxD,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,GAAI,EAAE,MAAM,KAAO,QAAQ,MAAM,GAC/B,KAAM,IAAI,OACN,WAAW,OAAO,EAAE,MAAM,uCACtB,OAAO,QAAQ,MAAM,OAGjC,YAAgB,EAAE,MAAM,kBAEM,aACd,YACA,YACA,EAEhB,UAAa,EAAG,EAAI,UAAW,EAAE,EAC/B,YAAY,KAAK,EAAE,MAAM,IACzB,WAAa,EAAE,MAAM,GAGvB,UAAa,UAAW,EAAI,KAAM,IAChC,YAAY,KAAK,EAAE,MAAM,IACzB,WAAa,EAAE,MAAM,GAGvB,UAAa,UAAW,EAAI,YAAa,IACvC,YAAY,KAAK,QAAQ,MAAM,IAGjC,UAAa,KAAO,EAAG,EAAI,MAAO,IAChC,YAAY,KAAK,EAAE,MAAM,IACzB,WAAa,EAAE,MAAM,GAGvB,MAAO,CAAC,UAAW,UAAW,UAAW,QAAS,aCrIpD,ACuDM,oBACF,kBACF,GAAI,QAAU,aACZ,GAAI,EAAE,QAAU,YACd,MAAO,GAAE,QAEX,gBAAoB,MAAM,EAAE,cACb,KAAK,EAAG,kBACR,SAAQ,QAAQ,OAAQ,aACvC,mBAAY,UACZ,OAAO,UACA,OAGT,GAAI,CAAC,gBAAgB,EAAE,MAAO,OAG5B,MAAO,QAAO,qBAAqB,EAAE,OAAQ,EAAE,MAAO,OAExD,GAAI,EAAE,QAAU,aACd,UAAa,SAAQ,KAAK,UACX,KAAK,MAAM,OAC1B,aAAK,UACE,OAET,GAAI,QAAU,QACZ,MAAO,UAAQ,IAAI,GACd,GAAI,QAAU,QACnB,SAAa,OAAO,EAAG,EAAE,cACV,SAAQ,SAAS,EAAG,MACnC,YAAK,UACE,WAEP,MAAM,IAAI,OAAM,iCAAiC,EAAE,YAAY,SAI7D,gCAEJ,MAAO,QAAO,qBAAqB,EAAE,OAAQ,MAAO,EAAE,OAGlD,sCACJ,IAEE,MAAO,MAAK,IAAI,KAAO,aAAa,iBAEpC,KAAM,IAAI,OACN,4DAA4D,QAI9D,yCACJ,MAAO,SAAQ,IAAI,GAAK,aAAa,IC5GvC,IAAA,6OCAA,ACAA,AAwBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,KAAK,EAAG,WAAY,QC7BtD,AA4BO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CACL,EAAG,KACD,MAAU,OAAO,KAAK,EAAG,cACf,KAAK,IAAI,OAAO,GAAI,IAC9B,MAAO,KAAI,IAAI,GAAI,QCtC3B,AA0BO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CACL,EAAG,KACD,MAAU,KAAK,IAAI,OAAO,KAAK,EAAG,YAAa,IAC/C,MAAO,KAAI,GAAI,OCnCvB,AAuBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eAEX,AAAe,2BAA2B,EAAE,MAAO,EAAE,YAE5C,KACX,QAAU,cACS,AAAe,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,aAEX,KACX,QAAU,cACS,AAAe,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,QAGxB,MAAO,CAAC,EAAG,KAAM,EAAG,QChDxB,AAqBO,IAAM,eAA6B,CACxC,WAAY,KACZ,cAAe,GACf,SAAU,aACR,SAA4C,GAC5C,aAAM,QAAQ,QACZ,KAAK,GAAK,IAAM,GAAG,UAEd,OC7BX,AAsBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,UAAU,MC3B/B,AAsBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,UAAU,MC3B/B,AA2BO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,IAAI,OAAO,GAAI,OAAO,KAAK,EAAG,kBChChE,AA2BO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CACL,EAAG,KACD,MAAU,KAAK,KAAI,OAAO,GAAI,OAAO,KAAK,EAAG,cAC7C,MAAO,KAAI,GAAI,OCpCvB,AA6BO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eACE,2BAA2B,EAAE,MAAO,EAAE,YAE1C,KACX,MAAU,KAAI,OAAO,GAAI,OAAO,QACtB,IAAI,GAAI,IAAI,EAAG,eACN,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,aAEX,KACX,MAAU,KAAI,OAAO,GAAI,OAAO,QACtB,IAAI,IAAI,GAAI,IAAI,EAAG,gBACV,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,QAExB,MAAO,CAAC,EAAG,KAAM,EAAG,QCtDxB,AAyBO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAI,OAAO,KAAK,EAAG,YAAa,OC/B7D,AA0BO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,OAAO,GAAI,OAAO,KAAK,EAAG,iBC/B3D,AAyDA,wBACI,uCAG6C,CAAC,EAAG,EAAG,0BAEtD,QAAY,gBAAgB,GAAI,KAAM,wBACvB,gBAAgB,OAAO,QAAS,sBAEpC,YACG,oBACK,GAEnB,AAAI,OAAO,OAAS,GAClB,cAAe,GACf,KAAO,QACH,IAAK,CAAC,EAAG,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KACjE,QAAU,QAAQ,OAAQ,CACxB,EAAG,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,MAIvE,AAAK,OACD,KAAK,OAAS,EACd,IAAM,0DACC,KAAK,SAChB,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,6DACC,QAAQ,SAEnB,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IAAM,8EACwB,0BAA0B,cAE5D,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,8EACwB,+BAA+B,UAGnE,WAAoC,CAAC,GAAI,KAAM,MAAO,eAGlD,CAAC,WAAY,QAAS,UAAW,UAAK,qBAG9B,OAAO,UACH,cAAe,OACf,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAIhE,IAGF,kBAAsB,GAAG,CAAC,iBCxHjC,AAsBO,IAAM,oBAAkC,CAC7C,WAAY,UACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,WAAY,QAAS,UAAW,UAAK,iBACxC,iBAGA,WAAa,KAAO,CAAC,EAAG,EAAG,GAAiC,UAEhE,MAAO,CACL,EAAG,IAAM,cACL,GAAgB,EAAG,WAAY,QAAS,WAAY,MACpD,oBCpCV,AA6CA,sBACI,oCAEF,QAAY,gBAAgB,GAAI,KAAM,sBACvB,gBAAgB,OAAO,QAAS,eAE/C,AAAK,OACD,OAAO,OAAS,IAAI,KACpB,IAAM,kBAAkB,OAAO,oCAC3B,IAAI,SAEZ,YAAc,YACH,iBACQ,GAEnB,AAAI,OAAO,OAAS,GAClB,cAAe,GACf,QACI,QAAQ,OAAQ,CAAC,EAAG,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,KACvE,KAAO,QAAQ,IAAK,CAAC,EAAG,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,MAGhE,AAAK,OACD,KAAK,OAAS,EACd,IAAM,wDACC,KAAK,SAChB,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,2DACC,QAAQ,SAEnB,WAAkC,CAAC,GAAI,KAAM,MAAO,eAEpB,CAAC,WAAY,QAAS,eAG1C,OAAO,UACH,YAAa,OACb,OAEhB,MAAI,cACK,QAAQ,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAEtD,IAGF,gBAAoB,GAAG,CAAC,eC3F/B,AAsBO,IAAM,kBAAgC,CAC3C,WAAY,QACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,WAAY,QAAS,WAAO,MACnC,MAAO,CAAC,EAAG,IAAM,YAAY,GAAgB,EAAG,WAAY,QAAS,UC5BzE,AAsBO,IAAM,sBAAoC,CAC/C,WAAY,YACZ,aAAc,CAAC,IAAK,KACpB,SAAU,mBACR,SAAe,OAER,WAAY,YAAc,MAEjC,MAAI,CAAC,YAAc,CAAC,WACX,CACL,EAAG,IAAM,OAAO,GAAI,EAAG,GAAO,IAC9B,EAAG,IAAM,OAAO,EAAG,GAAI,GAAM,KAEtB,CAAC,YAAc,WACjB,CACL,EAAG,IAAM,OAAO,GAAI,EAAG,GAAO,IAC9B,EAAG,IAAM,OAAO,GAAI,EAAG,GAAM,KAEtB,YAAc,CAAC,WACjB,CACL,EAAG,IAAM,OAAO,EAAG,GAAI,GAAO,IAC9B,EAAG,IAAM,OAAO,EAAG,GAAI,GAAO,KAGzB,CACL,EAAG,IAAM,OAAO,EAAG,GAAI,GAAM,IAC7B,EAAG,IAAM,OAAO,GAAI,EAAG,GAAM,OChDrC,AAsBO,IAAM,yBAAuC,CAClD,WAAY,eACZ,SAAU,mBACR,IAAO,WAAY,OAAS,MAC5B,MAAO,CAAC,EAAG,IAAM,eAAe,GAAI,WAAY,UC1BpD,AAsBO,IAAM,sBAAoC,CAC/C,WAAY,YACZ,SAAU,mBACR,qBACI,iBAEe,iBAAiB,uBAChB,iBAAiB,WAEd,MAAM,KAAK,aAClC,UAAa,WAAW,OAAS,EAAG,GAAK,EAAG,IAC1C,GAAI,WAAW,KAAO,YAAY,GAChC,KAAK,GAAK,UACD,WAAW,KAAO,EAC3B,KAAM,IAAI,OAAM,mBACZ,uCAAuC,iBAG/C,SAAuB,GACvB,UAAa,EAAG,EAAI,KAAK,OAAQ,IAC/B,AAAI,KAAK,GAAK,GACZ,KAAK,KAAK,GAId,MAAO,CAAC,EAAG,IAAM,KAAI,GAAI,KAAM,OC/CnC,AAqBO,IAAM,eAA6B,CACxC,WAAY,KACZ,SAAU,IACD,EAAC,EAAG,IAAM,GAAG,WCxBxB,AAsBO,IAAM,eAA6B,CACxC,WAAY,KACZ,SAAU,IAED,EAAC,EAAG,IAAM,UAAU,OC1B/B,AA0BO,IAAM,sBAAoC,CAC/C,WAAY,YACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,aAAc,cAAgB,MACrC,MAAO,CACL,EAAG,IAAM,MACL,WAAW,aAAa,EAAG,cAAe,UAAU,EAAG,eACvD,GAAI,UAAU,QCnCxB,AAqBO,IAAM,qBAAmC,CAC9C,WAAY,WACZ,aAAc,CAAC,KACf,SAAU,cAAc,UCxB1B,AAsBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,cAAe,GACf,SAAU,mBACR,WAAe,MAAM,IAAI,GAAK,EAAE,QACzB,MAAQ,YACD,eAAe,KAAM,MAAM,GAAG,OAAO,cAChC,OAAO,IAAI,GAAK,EAAE,mBAClB,MAAM,GAAI,WAAY,OACzC,MAAO,YAAW,IAAI,GAAK,IAAM,KC/BrC,AAwBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,aAAc,CAAC,IAAK,UACpB,SAAU,mBACR,iBAAuB,OAChB,UAAW,QAAS,UAAK,YAAc,MAE9C,MAAK,QACD,AAAU,kBAAkB,WAC5B,IAAM,iHACoD,cAEvD,CACL,EAAG,IACC,oBAAoB,IAAI,MAAO,GAAI,QAAS,QAAS,MAAK,YAC9D,OAAQ,IACJ,qBAAqB,IAAK,GAAI,QAAQ,MAAO,QAAS,MAAK,eCxCrE,AAsBO,IAAM,8BAA4C,CACvD,WAAY,oBACZ,aAAc,CAAC,KAAM,UACrB,SAAU,oBACR,eAAqB,OAEd,QAAS,UAAK,WAAY,iBAC7B,MAEJ,MAAO,CACL,GAAI,IAAM,OACN,IAAK,OAAQ,QAAS,MAAK,WAAY,EACvC,iBACJ,OAAQ,IAAM,qBACV,IAAK,GAAI,OAAO,MAAO,QAAS,MAAK,WAAY,oBCpC3D,AA0CA,+BACI,gCAEF,QAAU,EACV,AAAI,EAAE,OAAS,GACb,KAAM,QAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEnE,SAAW,GACX,AAAI,KAAK,OAAS,GAChB,MAAO,QAAQ,GAAI,CAAC,EAAG,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,GAAI,GAAG,MAAM,MAEzE,AAAK,OACD,IAAI,OAAS,EACb,IAAM,iEACC,IAAI,UACf,AAAK,OACD,KAAK,OAAS,EACd,IAAM,8DACC,KAAK,UAChB,AAAK,OACD,YAAY,SAAW,EACvB,IAAM,mEACC,gBACX,AAAK,OACD,IAAI,MAAM,KAAO,YAAY,GAC7B,IAAM,4CAA4C,IAAI,MAAM,yCACxB,YAAY,OACpD,AAAK,OACD,KAAK,MAAM,KAAO,YAAY,GAC9B,IAAM,0CAA0C,KAAK,MAAM,2CACrB,YAAY,QAEtD,WAA6C,CAAC,EAAG,IAAK,GAAI,YAEf,CAAC,QAAS,UAAK,aAG1D,MAAO,QAAO,UACH,uBAAwB,OACxB,OAGN,yBAA6B,GAAG,CAAC,wBCpFxC,AAwBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,aAAc,CAAC,IAAK,UACpB,SAAU,mBACR,IAAO,UAAW,QAAS,WAAO,MAClC,AAAK,OACD,kBAAkB,WAClB,IACI,iHACkD,cAE1D,iBAAuB,MAEvB,MAAO,CACL,EAAG,IAAM,oBACJ,IAAiB,MAAO,GAAI,QAAqB,QAAS,OAC/D,OAAQ,IAAM,qBACV,IAAiB,GAAK,QAAqB,MAAO,QAAS,UCzCrE,AAyBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,IAAI,IAAI,KAAK,EAAG,aAAc,OC/BvD,AAwBO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,KAAK,KAAK,EAAG,YAAa,OC9BnD,AAwBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,KAAM,UAAW,mBAAwB,MAEhD,MAAO,CACL,EAAG,KACD,gBAAoB,mBAAmB,CAAC,MAAO,EAAE,UAEvC,OAAO,GAAI,KAAM,UAAW,CAAC,WAEvC,MAAI,cAAe,MACjB,KAAM,UAAU,IAAK,cAGhB,QCzCf,AAwBO,IAAM,gCAA8C,CACzD,WAAY,sBACZ,aAAc,CAAC,IAAK,UACpB,SAAU,mBACR,IAAO,UAAW,QAAS,UAAK,iBAC5B,iBAEe,WAAa,KAAO,CAAC,EAAG,GAAK,UAEhD,AAAK,OACD,AAAU,kBAAkB,YAC5B,IAAM,mHAEE,eAEZ,cAAoB,MAEpB,MAAK,QACD,EAAE,OAAS,EACX,IAAM,kFACsB,EAAE,SAClC,AAAK,OACD,OAAO,OAAS,EAChB,IAAM,mFACsB,OAAO,SACvC,AAAK,OACD,EAAE,MAAM,KAAO,OAAO,MAAM,GAC5B,IAAM,mEACW,EAAE,MAAM,qDACR,OAAO,MAAM,OAElC,AAAK,OACD,AAAU,+BAA+B,QAAS,YAClD,IAAM,6FACmC,0BACjC,gBAEZ,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IACI,gFACmB,+BAA+B,UAGrD,CACL,EAAG,IAAM,mCACL,EAAE,MAAO,GAAI,OAAQ,QAAS,MAAK,UAAW,iBAClD,OAAQ,IAAM,oCACV,EAAG,GAAI,OAAO,MAAO,QAAS,MAAK,UAAW,oBCzExD,AAuBO,IAAM,qBAAmC,CAC9C,WAAY,WACZ,aAAc,CAAC,IAAK,UACpB,SAAU,mBACR,cAAoB,kBAE+B,CAAC,EAAG,OAAQ,iBACV,CAAC,EAAG,OAAQ,IAEjE,MAAO,CACL,EAAG,IAAM,OAAO,UACZ,wBAAyB,YAAqC,OAClE,OAAQ,IAAM,OAAO,UACjB,yBAA0B,aAAsC,UCpC1E,AAsBO,IAAM,cAA4B,CACvC,WAAY,IACZ,cAAe,CAAC,IAChB,SAAU,aACR,OAAY,aAEkB,CAAC,GAAI,GAEnC,MAAO,CAAC,EAAG,IAAM,OAAO,UAAU,QAAS,WC9B/C,AAyBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,QACF,IAAI,IAAI,IAAI,OAAO,KAAM,EAAI,KAAK,KAAK,KAAK,KACtD,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,MC/B7B,AAsBO,IAAM,cAA4B,CACvC,WAAY,IACZ,cAAe,CAAC,IAChB,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,MC3B7B,AAsBO,IAAM,qBAAmC,CAC9C,WAAY,WACZ,aAAc,CAAC,SACf,SAAU,aACR,YAAgB,MAChB,MAAO,CAAC,MAAO,IAAM,QAAQ,GAAI,OAAM,UC3B3C,AAuBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,OC5BjC,AAsBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,OCzB/B,AA6BO,IAAM,mBAAiC,CAC5C,WAAY,SACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eACE,2BAA2B,EAAE,MAAO,EAAE,YAE1C,KACX,QAAY,IAAI,GAAI,KAAK,EAAG,uBACT,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,UAEI,KACX,QAAU,IAAI,GAAI,KAAK,EAAG,uBACP,iBAAiB,EAAE,MAAO,UAC7C,AAAI,WAAW,OAAS,GACtB,KAAM,QAAQ,KAAI,IAAK,YAAa,EAAE,QAExC,QAAY,OAAO,GACnB,MAAO,KAAI,IAAI,IAAK,KAAK,IAAK,cAEhC,MAAO,CAAC,EAAG,KAAM,EAAG,QCrDxB,AA8BO,IAAM,yBAAuC,CAClD,WAAY,eACZ,aAAc,CAAC,IAAK,OAAQ,WAAY,SACxC,SAAU,mBAER,IAAO,iBAAmB,gCACS,iBAEhB,QAAS,KAAO,OAAO,GAAK,qBACzB,iBAAiB,MAAK,MAAO,EAAE,iBACzB,GAC5B,GAAI,MAAK,OAAS,GAChB,UAAa,EAAG,EAAI,EAAE,MAAM,OAAS,EAAG,EAAE,EACxC,UAAU,KAAK,EAAE,MAAM,IAEzB,UAAU,KAAK,GAGjB,eAAmB,IAAI,EAAG,yBACA,IAAI,GAAI,gCACN,MAAM,KAAI,SAAU,OAAO,kCAChC,IACnB,IAAI,IAAI,oBAAqB,qBAAsB,qBACnD,OAAO,WAEE,IACP,MAAK,OAAS,EACT,QACH,IAAI,IAAI,GACA,KACI,QAAQ,oBAAqB,CAAC,EAAG,EAAG,EAAG,MAAK,MAAM,KAClD,YACR,YACJ,EAAE,OAEC,QAAQ,IAAI,IAAI,GAAI,qBAAsB,YAAa,EAAE,eAGpD,KACd,YACI,IAAI,IAAI,oBAAqB,OAAO,KAAM,mBAC9C,MAAI,OAAK,OAAS,GAChB,SAAU,KAAI,QAAS,gBAElB,QAAQ,QAAS,MAAK,oBAEX,KAClB,gBAAkB,IAAI,IAAI,eAAgB,YAAa,mBAEvD,MAAI,OAAK,OAAS,GAChB,aAAc,KAAI,YAAa,gBAE1B,QAAQ,YAAa,MAAK,iBAElB,KACf,0BAA8B,IAAI,WAAY,8BAE/B,IAAI,GAAI,uBACvB,MAAI,OAAK,OAAS,GAChB,UAAW,KAAI,SAAU,gBAEpB,QAAQ,SAAU,MAAK,kBAEd,KAChB,cAAgB,GAChB,MAAI,OAAK,OAAS,GAChB,WAAY,KAAI,UAAW,gBAEtB,QAAQ,UAAW,MAAK,QAGjC,MAAO,CACL,EAAG,KACH,KAAM,QACN,SAAU,YACV,MAAO,SACP,OAAQ,aC1Gd,AA0BO,IAAM,iBAA+B,CAC1C,WAAY,SACZ,aAAc,CAAC,IAAK,WACpB,SAAU,mBACR,eAAqB,OACd,MAAQ,iBAEI,eAAe,KAAM,EAAE,OAAO,QAEpC,KACX,gBAAoB,EAAE,kBACF,QAAQ,gBAET,YAAY,MAAM,EAAG,sBACtB,WAAW,kBACV,YAAY,MAAM,KAAM,YAAY,QAAQ,MAAM,aACnD,WAAW,wBAEJ,WAAW,EAAG,4BAEnC,WAAW,UAAY,EAAG,UAAY,EAAI,uBAE1B,YAAY,CAAC,WAAY,CAAC,aAAc,oBAE7C,QAAQ,GAAI,6BACH,QAAQ,QAAS,CAAC,4BAGtC,YAAY,CAAC,CAAC,WAAY,iBAAkB,mCACxB,UAAU,OAAQ,0BACzB,mBACb,gBAAiB,gBAA6B,EAAE,MAAM,iCAE9B,uBAAuB,eACnD,kBAAa,UAAU,WAAY,qBAE5B,YAET,MAAO,CAAC,EAAG,KAAM,QAAS,IAAM,WAIpC,gCACE,WAAe,GACf,UAAa,MAAO,EAAI,KAAM,EAAE,EAC9B,OAAO,KAAK,GAEd,MAAO,QAGT,6BACE,WAAe,GACf,UAAa,EAAG,EAAI,OAAO,OAAQ,EAAE,EACnC,UAAa,EAAG,EAAI,OAAO,GAAG,OAAQ,EAAE,EACtC,OAAO,KAAK,OAAO,GAAG,IAG1B,MAAO,QCnFT,AAqBO,IAAM,uBAAqC,CAChD,WAAY,aACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,MACf,MAAO,CAAC,EAAG,IAAM,UAAU,GAAI,EAAG,IAAM,UAAU,MC1BtD,AAsBO,IAAM,mBAAiC,CAC5C,WAAY,SACZ,SAAU,IACD,EAAC,EAAG,IAAM,KAAK,GAAI,cCzB9B,AAsBO,IAAM,mBAAiC,CAC5C,WAAY,SACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,OC1B/B,AAsBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,OC5B/B,AAsBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,OC3B/B,AAuBO,IAAM,oBAAkC,CAC7C,WAAY,UACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,OAAS,WACH,QAAQ,EAAG,GAIxB,MAAO,CAAC,EAAG,IAAM,MAAM,KAAM,GAAI,IAAI,GAAI,WCjC7C,AAuBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAI,EAAG,OC5BpC,AAuBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,EAAG,eC5BrC,AAyBO,IAAM,qBAAmC,CAC9C,WAAY,WACZ,aAAc,GACd,cAAe,CAAC,IAChB,SAAU,mBACR,WAAgB,OACT,MAAQ,MACf,MAAO,CACL,OAAQ,KACN,aAAiB,YACD,IAAI,OACpB,MAAO,KAAI,GAAI,IAAI,KAAI,GAAI,KAAM,UAAW,eCpCpD,AAyBA,6CACI,mBAAiC,OAAU,QAAW,OAAU,IAClE,WAA8B,CAAC,EAAG,EAAG,UAET,CAAC,YAAa,KAAM,MAAO,MAEvD,MAAO,QAAO,UACV,QAAS,OAAgC,OAGxC,uCACH,GAAG,CAAC,sCCpCR,AAqBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,SAAe,OACR,YAAa,KAAM,MAAO,MAAQ,MAEzC,MAAO,CACL,EAAG,IAAM,mCACL,EAAG,EAAG,GAAI,YAAa,KAAM,MAAO,SC/B9C,AA2BM,0BACF,qBACF,MAAI,GAAE,KAAO,MAAM,MACjB,GAAI,QAAQ,EAAG,AAAU,qBAAqB,EAAE,MAAO,YAEzD,AAAI,GAAG,KAAO,MAAM,MAClB,IAAK,QAAQ,GAAI,AAAU,qBAAqB,GAAG,MAAO,YAErD,CACL,EAAG,KACD,OAAW,IAAI,GAAI,KAAK,MAAM,MAAO,GAAI,GAAG,QAC5C,MAAO,MCtCb,AAwBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,aAA2B,OACpB,kBAAoB,WACjB,MAAM,KACN,MAAM,YACC,AAAK,eAAe,iBAAkB,EAAE,eACzC,iBAAiB,GAAI,EAAG,EAAG,UAC3C,MAAO,CACL,EAAG,IACM,QAAQ,OCrCvB,AAyBO,IAAM,kBAAgC,CAC3C,WAAY,QACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,WACF,IAAM,IAAI,GAAI,KAAK,aAAa,EAAG,GAAI,iBACvC,IAAM,IAAI,GAAI,KAAK,KAAK,EAAG,GAAI,YAC5C,MAAO,CAAC,EAAG,KAAM,EAAG,QChCxB,AA2DA,wBACI,8CAG6C,CAAC,EAAG,EAAG,0BAEtD,QAAY,gBAAgB,GAAI,KAAM,wBACvB,gBAAgB,OAAO,QAAS,yBAC/B,gBAAgB,OAAQ,SAAU,sBAEvC,YACG,gBACC,qBACI,GAEnB,AAAI,OAAO,OAAS,GAClB,cAAe,GACf,KAAO,QACH,IAAK,CAAC,EAAG,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KACjE,QAAU,QAAQ,OAAQ,CACxB,EAAG,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,GAAI,OAAO,MAAM,KAErE,SAAW,QAAQ,QAAS,CAC1B,EAAG,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,GAAI,QAAQ,MAAM,MAI3E,AAAK,OACD,KAAK,OAAS,EACd,IAAM,0DACC,KAAK,SAChB,AAAK,OACD,QAAQ,OAAS,EACjB,IAAM,6DACC,QAAQ,SACnB,AAAK,OACD,SAAS,OAAS,EAClB,IAAM,8DACC,SAAS,SAEpB,AAAK,OACD,AAAU,+BAA+B,QAAS,WAClD,IAAM,8EACwB,0BAA0B,cAC5D,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,8EACwB,+BAA+B,UAGnE,WAC0B,CAAC,GAAI,KAAM,MAAO,QAAS,OAAQ,gBAGzD,CAAC,WAAY,QAAS,UAAW,UAAK,qBAG9B,OAAO,UACH,cAAe,OACf,OAEhB,MAAI,cACK,QACI,IAAK,CAAC,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,GAAI,IAAI,MAAM,KAIhE,IAGF,kBAAsB,GAAG,CAAC,iBClIjC,AAsBO,IAAM,oBAAkC,CAC7C,WAAY,UACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,SAAe,OACR,WAAY,QAAS,UAAW,UAAK,iBACxC,iBAGA,WAAa,KAAO,CAAC,EAAG,EAAG,GAAiC,UAEhE,MAAO,CACL,EAAG,IAAM,cACL,GAAgB,EAAG,EAAG,WAAY,QAAS,WAAY,MACvD,oBCrCV,AA+CA,sBACI,2DAIF,QAAY,gBAAgB,GAAI,KAAM,sBACvB,gBAAgB,OAAO,QAAS,uBAC/B,gBAAgB,OAAQ,SAAU,eAElD,AAAK,OACD,OAAO,OAAS,IAAI,KACpB,IAAM,kBAAkB,OAAO,oCACvB,IAAI,SAEhB,AAAK,OACD,IAAI,OAAS,EACb,IAAM,wDACC,IAAI,SACf,AAAK,OACD,OAAO,OAAS,EAChB,IAAM,2DACC,OAAO,SAClB,AAAI,iBAAmB,MACrB,AAAK,OACD,AAAK,MAAM,OACX,IAAM,4EACiB,+BAA+B,UAG5D,WAAkC,CAAC,GAAI,IAAK,MAAO,OAAQ,OAAQ,eAEnC,CAAC,WAAY,QAAS,UAAK,iBAG3D,MAAO,QAAO,UACH,YAAa,OACb,OAGN,gBAAoB,GAAG,CAAC,eCtF/B,AAsBO,IAAM,kBAAgC,CAC3C,WAAY,QACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,SAAe,OACR,WAAY,QAAS,WAAO,MAEnC,MAAO,CACL,EAAG,IAAM,YAAY,GAAgB,EAAG,EAAG,WAAY,QAAS,UC/BtE,AA2BO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,MAAQ,WACF,AAAK,eAAe,KAAM,EAAE,cAC1B,0BAA0B,EAAE,MAAO,kBAC9B,OAAO,cACR,AAAK,cAAc,kBAEzB,KACX,oBAAwB,EAAE,MAAM,QAChC,KAAK,QAAQ,QACX,gBAAgB,OAAQ,IAE1B,eAAmB,QAAQ,GAAI,qBACnB,IAAI,IAAI,WAAY,MAAK,EAAE,MAAO,YAAa,YAC3D,MAAO,MAGT,MAAO,CAAC,EAAG,QChDf,AAwBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,cAAe,CAAC,IAChB,SAAU,mBACR,aAA2B,OACpB,MAAQ,eACA,eACE,AAAK,eAAe,KAAM,EAAE,eAC7B,iBAAiB,GAAI,EAAG,EAAG,UAC3C,MAAO,CACL,EAAG,IACM,QAAQ,OCpCvB,AAyBO,IAAM,kBAAgC,CAC3C,WAAY,QACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,WACF,IAAM,IAAI,GAAI,KAAK,UAAU,EAAG,GAAI,iBACpC,IAAM,IAAI,GAAI,KAAK,QAAQ,EAAG,GAAI,YAC/C,MAAO,CAAC,EAAG,KAAM,EAAG,QChCxB,AAsBO,IAAM,oBAAkC,CAC7C,WAAY,UACZ,aAAc,CAAC,KACf,SAAU,mBAGR,MAAU,MAAM,IACT,UAAY,YACL,SAAS,IAAI,IAAK,GAAE,IAClC,MAAO,CAAC,EAAG,IAAM,MAAM,GAAI,MAAO,EAAE,UC/BxC,AA4BO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eACE,2BAA2B,EAAE,MAAO,EAAE,YAE1C,KACX,eAAmB,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,GAAI,YAAa,EAAE,OAEjC,SAEI,KACX,QAAY,IAAI,GAAI,IAAI,MAAM,IAAI,EAAG,iBAClB,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,KAET,MAAO,CAAC,EAAG,KAAM,EAAG,QClDxB,AA0BO,IAAM,mBAAiC,CAC5C,WAAY,SACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eACE,2BAA2B,EAAE,MAAO,EAAE,YAE1C,KACX,QAAY,IAAI,GAAI,KAAK,EAAG,uBACT,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,UAEI,KACX,QAAY,IAAI,GAAI,KAAK,EAAG,uBACT,iBAAiB,EAAE,MAAO,UAC7C,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,KAET,MAAO,CAAC,EAAG,KAAM,EAAG,QCjDxB,AAsBO,IAAM,cAA4B,CACvC,WAAY,IACZ,SAAU,IACD,EAAC,EAAG,IAAM,IAAI,OCzBzB,AAsBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,aAAc,CAAC,WACf,SAAU,aACR,YAAgB,MAAM,GACtB,MAAO,CAAC,QAAS,IAAM,MAAM,QAAQ,MAAO,cC3BhD,AAsBO,IAAM,mBAAiC,CAC5C,WAAY,SACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,OCzB/B,AAsBO,IAAM,eAA6B,CACxC,WAAY,KACZ,cAAe,GACf,SAAU,mBACR,IAAO,MAAQ,iBACI,QAAQ,GAAI,MAC/B,MAAO,YAAW,IAAI,GAAK,IAAM,KC5BrC,AAsBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,mBAGR,MAAU,MAAM,IACT,UAAY,YACL,SAAS,IAAI,IAAK,GAAE,IAClC,MAAO,CAAC,EAAG,IAAM,MAAM,GAAI,MAAO,EAAE,UC/BxC,AAgCO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,IAAK,KACpB,cAAe,CAAC,IAChB,SAAU,aACR,WAAkB,YACL,QACD,WAER,AAAe,2BAA2B,MAAK,MAAO,MAAI,eAE9C,KACd,aAAiB,KAAK,MAAK,eACjB,IAAI,GAAI,IAAI,SAAU,IAAI,MAAM,IAAI,SAAU,OAAO,kBAC5C,AAAe,iBAAiB,MAAK,MAAO,UAC/D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,MAAK,eAEZ,KACb,cAAkB,QAAQ,MAAM,WAChB,MAAM,UAAW,IAAI,OAAO,UAAU,YAC5C,IAAI,GAAI,IAAI,EAAG,qBACN,AAAe,iBAAiB,MAAI,MAAO,UAC9D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,MAAI,QAE1B,MAAO,CAAC,EAAG,QAAS,EAAG,UC9D3B,AA2BO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,IAAK,SACpB,SAAU,aACR,aAAmB,WACN,QAAQ,EAAG,GAExB,MAAO,CACL,EAAG,IAAM,MAAM,KAAM,GAAI,IAAI,GAAI,QACjC,MAAO,KACL,QAAU,MAAM,KAAM,UAAU,IAAK,IAAI,GAAI,eAC1B,iBAAiB,MAAM,MAAO,GAAG,OACpD,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,MAAM,WC1ClC,AA6BO,IAAM,cAA4B,CACvC,WAAY,QACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eAEX,AAAe,2BAA2B,EAAE,MAAO,EAAE,YAC5C,KACX,QAAY,IAAI,GAAI,KAAK,EAAG,uBACT,AAAe,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,EACf,QAAQ,KAAI,IAAK,YAAa,EAAE,OAElC,UAEI,KACX,QAAU,IAAI,GAAI,KAAK,EAAG,uBACP,AAAe,iBAAiB,EAAE,MAAO,UAC5D,AAAI,WAAW,OAAS,GACtB,KAAM,QAAQ,KAAI,IAAK,YAAa,EAAE,QAExC,QAAY,OAAO,GACnB,MAAO,KAAI,IAAI,IAAK,KAAK,IAAK,cAEhC,MAAO,CAAC,EAAG,KAAM,EAAG,QCrDxB,AAwBO,IAAM,qBAAmC,CAC9C,WAAY,WACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,OAAO,QC7BxC,AAwBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,WACC,IAAI,UAAU,EAAG,GAAI,KAAK,IAEvC,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,KAAM,eC/BxC,AAuBO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,KAAK,KAAK,GAAI,eC5B3C,AAqBO,IAAM,kBAAgC,CAC3C,WAAY,QACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,QAAQ,GAAI,EAAE,UC1BnC,AAuBO,IAAM,yBAAuC,CAClD,WAAY,eACZ,aAAc,CAAC,UACf,SAAU,mBACR,YAAiB,aAEwB,CAAC,GAAI,kBAC5B,IAEd,OAAO,UACH,mBAAoB,OAAgC,OAG5D,MAAO,CAAC,OAAQ,aCpCpB,AAuBO,IAAM,gCAA8C,CACzD,WAAY,sBACZ,aAAc,CAAC,UACf,SAAU,mBACR,YAAiB,aAE+B,CAAC,GAAI,kBACnC,IAEd,OAAO,UACH,0BAA2B,OAAgC,OAGnE,MAAO,CAAC,OAAQ,aCpCpB,AAsBO,IAAM,kBAAgC,CAC3C,WAAY,QACZ,SAAU,mBACR,IAAO,MAAQ,WACF,eAAe,KAAM,GAAG,OACrC,MAAO,CAAC,EAAG,IAAM,QAAQ,GAAI,SC3BjC,AAsBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,OC3B/B,AAyBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,IAAI,GAAI,IAAI,IAAI,EAAG,KAAM,QC9BlD,AAyBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,aAAc,CAAC,aACf,SAAU,aACR,eAAoB,MACpB,MAAO,CAGL,UAAW,IAAM,KAAK,UAAU,WAAY,WAC5C,EAAG,IAAM,IAAI,GAAI,KAAK,UAAW,GAAG,QACpC,EAAG,IAAM,IAAI,GAAI,KAAK,WAAW,WAAY,GAAG,WCnCtD,AA2BO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CACL,EAAG,KACD,SAAa,QAAQ,EAAG,OAAO,gBAEZ,OAAO,wBACZ,OAAO,+BAEM,IAAI,GAAI,yBAE/B,IAAI,IAAI,GAAI,aAAa,IAAI,KAAK,EAAG,aAEzC,MAAO,OAAM,KAAM,mBAAoB,sBC3C/C,AAwBO,IAAM,kBAAgC,CAC3C,WAAY,QACZ,cAAe,CAAC,IAChB,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,EAAG,IAAI,OAAO,GAAI,QC9BnD,AAsBO,IAAM,eAA6B,CACxC,WAAY,KACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,OCzB/B,AAwBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,IAAI,KAAK,EAAG,YAAa,OC7BlD,AAwBO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,KAAK,KAAK,EAAG,YAAa,OC9BnD,AAuBO,IAAM,gBAA8B,CACzC,WAAY,MACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,MAAO,MAAQ,iBAEH,EAAE,qBACG,iBAAiB,EAAG,MAAO,eAQT,GAC1C,UAAa,EAAG,EAAI,GAAG,KAAM,IAC3B,SAAS,KAAK,CAAC,OAAO,GAAI,WAAW,GAAK,OAAO,GAAK,MAAM,KAE9D,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,aC3C7B,AAwBO,IAAM,kBAAgC,CAC3C,WAAY,QACZ,cAAe,CAAC,IAChB,SAAU,mBACR,OAAY,OACL,KAAO,eACG,YAEA,IAAI,GAAI,GACzB,MAAO,CACL,OAAQ,IAAM,IAAI,SAAU,IAAI,KAAI,SAAU,CAAC,KAAM,UAAW,OClCtE,AAuBO,IAAM,mBAAiC,CAC5C,WAAY,SACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,QAAQ,OC7BrC,AAsBO,IAAM,yBAAuC,CAClD,WAAY,eACZ,SAAU,mBACR,IAAO,WAAY,UAAY,MAC/B,MAAO,CAAC,EAAG,IAAM,eAAe,GAAI,WAAY,aC1BpD,AAqBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,SAAU,mBACR,IAAO,MAAQ,MAEf,MAAO,CAAC,EAAG,IAAM,OAAO,GAAI,SC1BhC,AAyBO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,KAAK,KAAK,EAAG,YAAa,OC/B3D,AAuBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MACZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,IAAI,KAAK,EAAG,WAAY,OC5BrD,AAwBO,IAAM,4BAA0C,CACrD,WAAY,kBACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,UACH,OAAO,QACN,IAAM,IAAI,GAAI,IAAI,IAAK,IAAI,EAAG,UAC9B,IAAM,IAAI,GAAI,IAAI,IAAK,IAAI,EAAG,KAC3C,MAAO,CAAC,EAAG,KAAM,EAAG,QChCxB,AAsBO,IAAM,eAA6B,CACxC,WAAY,KACZ,SAAU,IAGD,EAAC,EAAG,IAAM,UAAU,OC3B/B,AAwBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,IAAK,KACpB,SAAU,aACR,SAAe,eAEX,AAAe,2BAA2B,EAAE,MAAO,EAAE,YAE5C,KACX,QAAU,cACS,AAAe,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAK,EAAE,aAEX,KACX,QAAU,cACS,AAAe,iBAAiB,EAAE,MAAO,UAC5D,MAAI,YAAW,OAAS,GACtB,KAAM,KAAI,IAAK,aAEV,QAAQ,IAAI,KAAM,EAAE,QAG7B,MAAO,CAAC,EAAG,KAAM,EAAG,QCjDxB,AAyBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,sBACY,EAAE,MAAM,SACzB,MAAQ,WAEF,eAAe,KAAM,EAAE,OACpC,KAAK,QAAQ,QACX,gBAAgB,OAAQ,IAE1B,eAAmB,QAAQ,GAAI,sBAClB,IAAI,WAAY,MAAK,EAAE,MAAO,YAE3C,MAAO,CAAC,EAAG,IAAM,QCxCrB,AAwBO,IAAM,cAA4B,CACvC,WAAY,IACZ,aAAc,CAAC,KACf,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,GAAI,OAAO,IAAI,QC9BxC,AAyBO,IAAM,eAA6B,CACxC,WAAY,KACZ,cAAe,CAAC,IAChB,SAAU,aACR,OAAY,MAEZ,MAAO,CAAC,EAAG,IAAM,IAAI,IAAI,OAAO,GAAI,OAAO,IAAK,OC/BpD,AAwBO,IAAM,eAA6B,CACxC,WAAY,KACZ,aAAc,CAAC,KACf,SAAU,mBACR,OAAY,OACL,MAAQ,WAEF,KACX,UAAY,UAAU,GAGtB,GAAI,EAAE,OAAS,EACb,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,MAAQ,KAAI,MAAO,MAAM,GAAI,CAAC,EAAI,EAAE,MAAM,IAAK,CAAC,EAAE,MAAM,cAEjD,EAAE,OAAS,EACpB,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,MAAQ,KAAI,MAAO,MAAM,GAAI,CAAC,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,IAAK,CACjD,EAAE,MAAM,GAAI,EAAE,MAAM,cAI7B,EAAE,OAAS,EACpB,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,MACI,KAAI,MACA,MACI,GAAI,CAAC,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,IACjD,CAAC,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,cAI1C,EAAE,OAAS,EACpB,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,UAAa,EAAG,EAAI,KAAK,GAAI,EAAE,EAC7B,MACI,KAAI,MACA,MACI,GACA,CACE,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,GAAI,EAAI,EAAE,MAAM,GAC5C,EAAI,EAAE,MAAM,IAEd,CAAC,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,UAMjE,MAAM,IAAI,OACN,2DACG,EAAE,qBAEX,MAAO,QAET,MAAO,CAAC,EAAG,QCpFf,AAuBO,IAAM,oBAAkC,CAC7C,WAAY,UACZ,SAAU,mBACR,mBAAuC,OAChC,MAAQ,wBACE,AAAU,uBAAuB,MAClD,MAAO,CAAC,EAAG,IAAM,UAAU,GAAI,aC7BnC,AAqBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,SAAU,mBACR,gBAAiC,OAC1B,MAAQ,YACf,MAAO,CAAC,MAAO,IAAM,MAAM,GAAI,SC1BnC,AA8BO,IAAM,6BAA2C,CACtD,WAAY,mBACZ,aAAc,CAAC,cACf,SAAU,aACR,gBAAqB,WAER,IACJ,oBAAoB,GAAI,YAEjC,MAAO,CAAC,EAAG,QAIf,wCAIE,uBAA2B,QAAQ,QAAS,UAAU,mBACrC,OAAO,EAAG,+BACV,aAAa,QAAS,OAAO,EAAG,mBAChC,SAAS,KAAO,WAAW,KAC5C,UAAa,EAAG,EAAI,SAAU,EAAE,EAC9B,WAAa,WAAW,WAAY,EAAI,GAE1C,WAAa,WAAW,WAAY,MAAK,SAAS,MAAO,SACzD,cAAkB,UAAU,UAC5B,MAAO,OAAM,WAAY,SAAU,WCxDrC,AAsBO,IAAM,oBAAkC,CAC7C,WAAY,UACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,OCzB/B,AAwHA,IAAM,YAA4B,CAChC,cACA,eACA,gBACA,cACA,eACA,iBACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,qBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,qBACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,oBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,eACA,cACA,kBACA,oBACA,cACA,mBACA,cACA,iBACA,mBACA,eACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,iBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,qBAGF,yBAA6B,aAC3B,iBAAiB,gBCpOnB,AA4BA,OAAO,UAAU,IAAM,WACrB,YAAK,kBACE,IAAI,OC9Bb,AA4BA,OAAO,UAAU,KAAO,WACtB,YAAK,kBACE,KAAK,OC9Bd,AA4BA,OAAO,UAAU,MAAQ,WACvB,YAAK,kBACE,MAAM,OC9Bf,AA+BA,OAAO,UAAU,UAAY,SAChB,GACX,YAAK,kBACE,UAAU,KAAM,IClCzB,AA0BA,OAAO,UAAU,IAAM,SAA2B,GAChD,YAAK,kBACE,KAAI,KAAM,IC5BnB,AA2BA,OAAO,UAAU,IAAM,SACV,eACX,YAAK,kBACE,IAAI,KAAM,KAAM,WC9BzB,AA2BA,OAAO,UAAU,IAAM,SACV,eACX,YAAK,kBACE,IAAI,KAAM,KAAM,WC9BzB,AA0BA,OAAO,UAAU,OAAS,SAA2B,MACnD,YAAK,kBACE,OAAO,KAAM,OC5BtB,A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GAAK,SAAQ,8BAA8B,IAE1D,OAGF,6BAA+C,CACpD,WAAY,mBACZ,YAAa,MACb,WAAY,qBCrFd,AAgLA,IAAM,cAAgC,CACpC,mBACA,UACA,WACA,YACA,UACA,WACA,UACA,UACA,aACA,aACA,WACA,YACA,WACA,YACA,YACA,cACA,gBACA,qBACA,mBACA,kBACA,gBACA,qBACA,eACA,WACA,WACA,WACA,cACA,iBACA,aACA,2BACA,0BACA,aACA,6BACA,4BACA,aACA,UACA,WACA,oBACA,aACA,oBACA,mBACA,4BACA,0CACA,yCACA,WACA,iBACA,8BACA,+BACA,cACA,UACA,eACA,YACA,UACA,UACA,iBACA,YACA,UACA,WACA,oBACA,YACA,eACA,kBACA,2BACA,eACA,eACA,cACA,mBACA,eACA,WACA,WACA,eACA,YACA,YACA,gBACA,WACA,gBACA,eACA,UACA,YACA,iBACA,iBACA,gBACA,UACA,cACA,cACA,cACA,gBACA,qBACA,mBACA,wBACA,UACA,WACA,UACA,cACA,gBACA,UACA,kBACA,eACA,UACA,0BACA,0BACA,0BACA,eACA,aACA,eACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,iBACA,WACA,YACA,cACA,qBACA,0BACA,4BACA,iCACA,cACA,uBACA,YACA,YACA,gBACA,aACA,WACA,cACA,WACA,UACA,WACA,YACA,cACA,eACA,qBACA,oBACA,aACA,WACA,aACA,wBACA,WACA,mBACA,UACA,UACA,UACA,WACA,WACA,WACA,gBACA,aACA,aACA,yBACA,iBAGF,uBAA2B,eACzB,eAAe,cC7UjB,ACAA,AAiBA,IAAM,SAAmD,oBAER,CAC/C,MAAO,GACP,UAAW,GACX,mBAAoB,GACpB,sBAAuB,GACvB,MAAO,GACP,QAAS,GACT,6BAA8B,ICO1B,yBACF,iBACF,SAAS,cAAgB,GAGrB,uCACJ,GAAI,CAAE,gBAAgB,YACpB,WAAe,yBAAyB,cACxC,GAAI,SAAW,KACb,SAAS,cAAgB,WAEzB,gBAAQ,IAAI,0CAA2C,cAChD,KAGX,OAAW,SAAS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,YAAU,CAAC,OAAQ,CAAC,EAAG,QAAS,iBAAS,MAAO,CAAC,QAG5D,iBAAU,QAAQ,GAAK,SAAQ,8BAA8B,IACtD,OAGF,8BAA+C,CACpD,WAAY,mBACZ,YAAa,QACb,WAAY,qBChHd,AA4KA,IAAM,eAAgC,CACpC,UACA,cACA,oBACA,WACA,YACA,aACA,WACA,YACA,WACA,WACA,cACA,cACA,YACA,aACA,aACA,YACA,aACA,iBACA,eACA,oBACA,mBACA,mBACA,iBACA,sBACA,gBACA,YACA,YACA,kBACA,kBACA,eACA,cACA,4BACA,2BACA,cACA,8BACA,0BACA,cACA,WACA,YACA,qBACA,cACA,qBACA,oBACA,2CACA,0CACA,6BACA,YACA,iBACA,WACA,eACA,aACA,WACA,WACA,kBACA,aACA,WACA,YACA,qBACA,aACA,gBACA,iBACA,mBACA,4BACA,gBACA,gBACA,eACA,oBACA,gBACA,YACA,YACA,gBACA,aACA,aACA,iBACA,YACA,iBACA,gBACA,aACA,WACA,kBACA,kBACA,iBACA,WACA,iBACA,eACA,oBACA,mBACA,yBACA,eACA,YACA,WACA,eACA,iBACA,WACA,mBACA,gBACA,WACA,2BACA,2BACA,2BACA,gBACA,cACA,gBACA,YACA,aACA,WACA,aACA,YACA,aACA,YACA,eACA,kBACA,aACA,YACA,eACA,sBACA,0BACA,6BACA,iCACA,eACA,wBACA,aACA,aACA,iBACA,cACA,YACA,eACA,YACA,WACA,YACA,aACA,eACA,gBACA,sBACA,qBACA,cACA,YACA,cACA,yBACA,YACA,oBACA,WACA,WACA,WACA,YACA,YACA,YACA,iBACA,cACA,cACA,0BACA,kBAGF,uBAA2B,gBACzB,eAAe,cCxUjB,ACAA,AAGA,IAAM,UAAU,QCHhB,ACsCO,IAAM,UAAU,CACrB,YAAa,QACb,mBAAoB,UACpB,qBAAsB,UACtB,YAAa,SACb,cAAe,SACf,iBAAkB,SAClB,KAAQ,WC7CV,AAkBA,IAAY,SAAZ,AAAA,qBACE,UAAA,UAAA,QAAA,GAAA,UACA,UAAA,UAA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", + "sources": ["empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts"], + "sourcesContent": ["", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":167,\"maximum\":167+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":149,\"maximum\":149+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null], + "mappings": "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AC5B,MAAO,OAAM,WAAY,SAAU,WCxDrC,AAsBO,IAAM,oBAAkC,CAC7C,WAAY,UACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,OCzB/B,AAwHA,IAAM,YAA4B,CAChC,cACA,eACA,gBACA,cACA,eACA,iBACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,qBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,qBACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,oBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,eACA,cACA,kBACA,oBACA,cACA,mBACA,cACA,iBACA,mBACA,eACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,iBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,qBAGF,yBAA6B,aAC3B,iBAAiB,gBCpOnB,AA4BA,OAAO,UAAU,IAAM,WACrB,YAAK,kBACE,IAAI,OC9Bb,AA4BA,OAAO,UAAU,KAAO,WACtB,YAAK,kBACE,KAAK,OC9Bd,AA4BA,OAAO,UAAU,MAAQ,WACvB,YAAK,kBACE,MAAM,OC9Bf,AA+BA,OAAO,UAAU,UAAY,SAChB,GACX,YAAK,kBACE,UAAU,KAAM,IClCzB,AA0BA,OAAO,UAAU,IAAM,SAA2B,GAChD,YAAK,kBACE,KAAI,KAAM,IC5BnB,AA2BA,OAAO,UAAU,IAAM,SACV,eACX,YAAK,kBACE,IAAI,KAAM,KAAM,WC9BzB,AA2BA,OAAO,UAAU,IAAM,SACV,eACX,YAAK,kBACE,IAAI,KAAM,KAAM,WC9BzB,AA0BA,OAAO,UAAU,OAAS,SAA2B,MACnD,YAAK,kBACE,OAAO,KAAM,OC5BtB,A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Q,8BAA8B,IAE1D,OAGF,6BAA+C,CACpD,WAAY,mBACZ,YAAa,MACb,WAAY,qBCrFd,AAgLA,IAAM,cAAgC,CACpC,mBACA,UACA,WACA,YACA,UACA,WACA,UACA,UACA,aACA,aACA,WACA,YACA,WACA,YACA,YACA,cACA,gBACA,qBACA,mBACA,kBACA,gBACA,qBACA,eACA,WACA,WACA,WACA,cACA,iBACA,aACA,2BACA,0BACA,aACA,6BACA,4BACA,aACA,UACA,WACA,oBACA,aACA,oBACA,mBACA,4BACA,0CACA,yCACA,WACA,iBACA,8BACA,+BACA,cACA,UACA,eACA,YACA,UACA,UACA,iBACA,YACA,UACA,WACA,oBACA,YACA,eACA,kBACA,2BACA,eACA,eACA,cACA,mBACA,eACA,WACA,WACA,eACA,YACA,YACA,gBACA,WACA,gBACA,eACA,UACA,YACA,iBACA,iBACA,gBACA,UACA,cACA,cACA,cACA,gBACA,qBACA,mBACA,wBACA,UACA,WACA,UACA,cACA,gBACA,UACA,kBACA,eACA,UACA,0BACA,0BACA,0BACA,eACA,aACA,eACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,iBACA,WACA,YACA,cACA,qBACA,0BACA,4BACA,iCACA,cACA,uBACA,YACA,YACA,gBACA,aACA,WACA,cACA,WACA,UACA,WACA,YACA,cACA,eACA,qBACA,oBACA,aACA,WACA,aACA,wBACA,WACA,mBACA,UACA,UACA,UACA,WACA,WACA,WACA,gBACA,aACA,aACA,yBACA,iBAGF,uBAA2B,eACzB,eAAe,cC7UjB,ACAA,AAiBA,IAAM,SAAmD,oBAER,CAC/C,MAAO,GACP,UAAW,GACX,mBAAoB,GACpB,sBAAuB,GACvB,MAAO,GACP,QAAS,GACT,6BAA8B,IAO1B,yBACF,iBACF,SAAS,cAAgB,GAGrB,uCACJ,GAAI,CAAE,gBAAgB,YACpB,WAAe,yBAAyB,cACxC,GAAI,SAAW,KACb,SAAS,cAAgB,WAEzB,gBAAQ,IAAI,0CAA2C,cAChD,KAGX,OAAW,SAAS,cACpB,M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AK,SAAQ,8BAA8B,IACtD,OAGF,8BAA+C,CACpD,WAAY,mBACZ,YAAa,QACb,WAAY,qBChHd,AA4KA,IAAM,eAAgC,CACpC,UACA,cACA,oBACA,WACA,YACA,aACA,WACA,YACA,WACA,WACA,cACA,cACA,YACA,aACA,aACA,YACA,aACA,iBACA,eACA,oBACA,mBACA,mBACA,iBACA,sBACA,gBACA,YACA,YACA,kBACA,kBACA,eACA,cACA,4BACA,2BACA,cACA,8BACA,0BACA,cACA,WACA,YACA,qBACA,cACA,qBACA,oBACA,2CACA,0CACA,6BACA,YACA,iBACA,WACA,eACA,aACA,WACA,WACA,kBACA,aACA,WACA,YACA,qBACA,aACA,gBACA,iBACA,mBACA,4BACA,gBACA,gBACA,eACA,oBACA,gBACA,YACA,YACA,gBACA,aACA,aACA,iBACA,YACA,iBACA,gBACA,aACA,WACA,kBACA,kBACA,iBACA,WACA,iBACA,eACA,oBACA,mBACA,yBACA,eACA,YACA,WACA,eACA,iBACA,WACA,mBACA,gBACA,WACA,2BACA,2BACA,2BACA,gBACA,cACA,gBACA,YACA,aACA,WACA,aACA,YACA,aACA,YACA,eACA,kBACA,aACA,YACA,eACA,sBACA,0BACA,6BACA,iCACA,eACA,wBACA,aACA,aACA,iBACA,cACA,YACA,eACA,YACA,WACA,YACA,aACA,eACA,gBACA,sBACA,qBACA,cACA,YACA,cACA,yBACA,YACA,oBACA,WACA,WACA,WACA,YACA,YACA,YACA,iBACA,cACA,cACA,0BACA,kBAGF,uBAA2B,gBACzB,eAAe,cCxUjB,ACAA,AAGA,IAAM,UAAU,QCHhB,AAsCO,IAAM,UAAU,CACrB,YAAa,QACb,mBAAoB,UACpB,qBAAsB,UACtB,YAAa,SACb,cAAe,SACf,iBAAkB,SAClB,KAAQ,WC7CV,AAkBA,IAAY,SAAZ,AAAA,qBACE,UAAA,UAAA,QAAA,GAAA,UACA,UAAA,UAAA,MAAA,GAAA,QACA,UAAA,UAAA,KAAA,GAAA,OACA,UAAA,UAAA,OAAA,GAAA,SACA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", "names": [] } diff --git a/dist/tfjs.esm.json b/dist/tfjs.esm.json index 0eca6c3..1900b30 100644 --- a/dist/tfjs.esm.json +++ b/dist/tfjs.esm.json @@ -20799,7 +20799,7 @@ ] }, "src/tfjs/tf-browser.js": { - "bytes": 1784, + "bytes": 1888, "imports": [ { "path": "node_modules/@tensorflow/tfjs/dist/index.js" @@ -20814,7 +20814,7 @@ "dist/tfjs.esm.js.map": { "imports": [], "inputs": {}, - "bytes": 1070617 + "bytes": 1063970 }, "dist/tfjs.esm.js": { "imports": [], @@ -23195,7 +23195,7 @@ "bytesInOutput": 29890 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js": { - "bytesInOutput": 9235 + "bytesInOutput": 9196 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/core.js": { "bytesInOutput": 9961 @@ -24070,11 +24070,8 @@ "node_modules/@tensorflow/tfjs-backend-webgl/dist/version.js": { "bytesInOutput": 22 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl.js": { - "bytesInOutput": 67 - }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js": { - "bytesInOutput": 113 + "bytesInOutput": 85 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/index.js": { "bytesInOutput": 0 @@ -25067,7 +25064,7 @@ "bytesInOutput": 0 } }, - "bytes": 1572551 + "bytes": 1572418 } } } diff --git a/package-lock.json b/package-lock.json index 9ddee0f..e5798a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,157 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, "@tensorflow/tfjs": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-2.8.1.tgz", @@ -154,6 +305,18 @@ "integrity": "sha512-QSb9ojDincskc+uKMI0KXp8e1NALFINCrMlp8VGKGcTSxeEyRTTKyjWw75NYrCZHUsVEEEpr1tYHpbtaC++/sQ==", "dev": true }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "@types/node": { "version": "14.14.14", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.14.tgz", @@ -194,6 +357,158 @@ "integrity": "sha512-oGaKsBbxQOY5+aJFV3KECDhGaXt+yZJt2y/OZsnQGLRkH6Fvr7rv4pCt3SRH1somIHfej/c4u7NSpCyd9x+1Ow==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.11.0.tgz", + "integrity": "sha512-x4arJMXBxyD6aBXLm3W7mSDZRiABzy+2PCLJbL7OPqlp53VXhaA1HKK7R2rTee5OlRhnUgnp8lZyVIqjnyPT6g==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.11.0", + "@typescript-eslint/scope-manager": "4.11.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.11.0.tgz", + "integrity": "sha512-1VC6mSbYwl1FguKt8OgPs8xxaJgtqFpjY/UzUYDBKq4pfQ5lBvN2WVeqYkzf7evW42axUHYl2jm9tNyFsb8oLg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.11.0", + "@typescript-eslint/types": "4.11.0", + "@typescript-eslint/typescript-estree": "4.11.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.11.0.tgz", + "integrity": "sha512-NBTtKCC7ZtuxEV5CrHUO4Pg2s784pvavc3cnz6V+oJvVbK4tH9135f/RBP6eUA2KHiFKAollSrgSctQGmHbqJQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.11.0", + "@typescript-eslint/types": "4.11.0", + "@typescript-eslint/typescript-estree": "4.11.0", + "debug": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.0.tgz", + "integrity": "sha512-6VSTm/4vC2dHM3ySDW9Kl48en+yLNfVV6LECU8jodBHQOhO8adAVizaZ1fV0QGZnLQjQ/y0aBj5/KXPp2hBTjA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.11.0", + "@typescript-eslint/visitor-keys": "4.11.0" + } + }, + "@typescript-eslint/types": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.0.tgz", + "integrity": "sha512-XXOdt/NPX++txOQHM1kUMgJUS43KSlXGdR/aDyEwuAEETwuPt02Nc7v+s57PzuSqMbNLclblQdv3YcWOdXhQ7g==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.0.tgz", + "integrity": "sha512-eA6sT5dE5RHAFhtcC+b5WDlUIGwnO9b0yrfGa1mIOIAjqwSQCpXbLiFmKTdRbQN/xH2EZkGqqLDrKUuYOZ0+Hg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.11.0", + "@typescript-eslint/visitor-keys": "4.11.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.0.tgz", + "integrity": "sha512-tRYKyY0i7cMk6v4UIOCjl1LhuepC/pc6adQqJk4Is3YcC6k46HvsV9Wl7vQoLbm9qADgeujiT7KdLrylvFIQ+A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.11.0", + "eslint-visitor-keys": "^2.0.0" + } + }, "@vladmandic/pilogger": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/@vladmandic/pilogger/-/pilogger-0.2.10.tgz", @@ -205,6 +520,18 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, "adm-zip": { "version": "0.4.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", @@ -220,6 +547,24 @@ "es6-promisify": "^5.0.0" } }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -260,6 +605,42 @@ "sprintf-js": "~1.0.2" } }, + "array-includes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", + "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "get-intrinsic": "^1.0.1", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -282,6 +663,31 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -345,12 +751,24 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "confusing-browser-globals": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", + "dev": true + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, "core-js": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz", @@ -363,6 +781,17 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -378,6 +807,21 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -396,12 +840,79 @@ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -418,9 +929,9 @@ } }, "esbuild": { - "version": "0.8.24", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.24.tgz", - "integrity": "sha512-bqgEa2VemAN+YM52SM1626+/pdLp+p9NyqISB06ixcvauKIJk6akia3UTTsGAgn0oHEdReZ97gL+LYX+UjgwKA==", + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.26.tgz", + "integrity": "sha512-u3MMHOOumdWoAKF+073GHPpzvVB2cM+y9VD4ZwYs1FAQ6atRPISya35dbrbOu/mM68mQ42P+nwPzQVBTfQhkvQ==", "dev": true }, "escalade": { @@ -429,6 +940,444 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", + "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "eslint-config-airbnb-base": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", + "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.2" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.2.tgz", + "integrity": "sha512-isM/fsUxS4wN1+nLsWoV5T4gLgBQnsql3nMTr8u+cEls1bL8rRQO5CP5GtxJxaOfbcKqnz401styw+H/P+e78Q==", + "dev": true, + "requires": { + "lodash": "^4.17.19", + "vscode-json-languageservice": "^3.7.0" + } + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", + "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", + "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "dev": true + }, "form-data": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", @@ -455,6 +1404,18 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -514,6 +1475,17 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -528,24 +1500,83 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, "google-protobuf": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.14.0.tgz", "integrity": "sha512-bwa8dBuMpOxg7COyqkW6muQuvNnWgVN8TX/epDRGW5m0jcrmq2QJyCyiV8ZE2/6LaIIqJtiv9bYokFhfpy/o6w==", "dev": true }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, "https-proxy-agent": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", @@ -565,6 +1596,12 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, "ignore-walk": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", @@ -574,6 +1611,22 @@ "minimatch": "^3.0.4" } }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -596,18 +1649,216 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", @@ -672,6 +1923,12 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "needle": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", @@ -728,6 +1985,18 @@ "osenv": "^0.1.4" } }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, "npm-bundled": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", @@ -778,6 +2047,54 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "object.values": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -787,6 +2104,20 @@ "wrappy": "1" } }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -809,12 +2140,105 @@ "os-tmpdir": "^1.0.0" } }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -827,6 +2251,12 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -839,6 +2269,38 @@ "strip-json-comments": "~2.0.1" } }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -860,12 +2322,40 @@ "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -875,6 +2365,12 @@ "glob": "^7.1.3" } }, + "run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "dev": true + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -911,12 +2407,76 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -934,6 +2494,26 @@ "strip-ansi": "^6.0.0" } }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -952,6 +2532,12 @@ "ansi-regex": "^5.0.0" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -967,6 +2553,18 @@ "has-flag": "^4.0.0" } }, + "table": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", + "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + } + }, "tar": { "version": "4.4.13", "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", @@ -982,24 +2580,154 @@ "yallist": "^3.0.3" } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, "tslib": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", "dev": true }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, "typescript": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", "dev": true }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vscode-json-languageservice": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.11.0.tgz", + "integrity": "sha512-QxI+qV97uD7HHOCjh3MrM1TfbdwmTXrMckri5Tus1/FQiG3baDZb2C9Y0y8QThs7PwHYBIQXcAc59ZveCRZKPA==", + "dev": true, + "requires": { + "jsonc-parser": "^3.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "3.16.0-next.2", + "vscode-nls": "^5.0.0", + "vscode-uri": "^2.1.2" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==", + "dev": true + }, + "vscode-languageserver-types": { + "version": "3.16.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz", + "integrity": "sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==", + "dev": true + }, + "vscode-nls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz", + "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==", + "dev": true + }, + "vscode-uri": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -1042,6 +2770,12 @@ } } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index 45c23c9..cbbec1a 100644 --- a/package.json +++ b/package.json @@ -5,13 +5,14 @@ "main": "dist/face-api.node.js", "module": "dist/face-api.esm.js", "browser": "dist/face-api.esm.js", - "typings": "dist/face-api.d.ts", + "types": "types/index.d.ts", "engines": { "node": ">=12.0.0" }, "scripts": { - "start": "node --trace-warnings example/node.js", - "build": "rimraf dist/* && node ./build.js" + "start": "node --trace-warnings example/node-singleprocess.js", + "build": "rimraf dist/* && node ./build.js", + "lint": "eslint src/**/*" }, "keywords": [ "tensorflow", @@ -44,7 +45,15 @@ "@tensorflow/tfjs-node": "^2.8.1", "@tensorflow/tfjs-node-gpu": "^2.8.1", "@types/node": "^14.14.14", - "esbuild": "^0.8.24", + "@typescript-eslint/eslint-plugin": "^4.11.0", + "@typescript-eslint/parser": "^4.11.0", + "esbuild": "^0.8.26", + "eslint": "^7.16.0", + "eslint-config-airbnb-base": "^14.2.1", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-json": "^2.1.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1", "rimraf": "^3.0.2", "tslib": "^2.0.3", "typescript": "^4.1.3" diff --git a/src/ageGenderNet/AgeGenderNet.ts b/src/ageGenderNet/AgeGenderNet.ts index 1cb013e..62de6f8 100644 --- a/src/ageGenderNet/AgeGenderNet.ts +++ b/src/ageGenderNet/AgeGenderNet.ts @@ -5,120 +5,118 @@ import { seperateWeightMaps } from '../faceProcessor/util'; import { TinyXception } from '../xception/TinyXception'; import { extractParams } from './extractParams'; import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; -import { AgeAndGenderPrediction, Gender, NetOutput, NetParams } from './types'; +import { + AgeAndGenderPrediction, Gender, NetOutput, NetParams, +} from './types'; import { NeuralNetwork } from '../NeuralNetwork'; import { NetInput, TNetInput, toNetInput } from '../dom/index'; export class AgeGenderNet extends NeuralNetwork { - private _faceFeatureExtractor: TinyXception constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) { - super('AgeGenderNet') - this._faceFeatureExtractor = faceFeatureExtractor + super('AgeGenderNet'); + this._faceFeatureExtractor = faceFeatureExtractor; } public get faceFeatureExtractor(): TinyXception { - return this._faceFeatureExtractor + return this._faceFeatureExtractor; } public runNet(input: NetInput | tf.Tensor4D): NetOutput { - - const { params } = this + const { params } = this; if (!params) { - throw new Error(`${this._name} - load model before inference`) + throw new Error(`${this._name} - load model before inference`); } return tf.tidy(() => { const bottleneckFeatures = input instanceof NetInput ? this.faceFeatureExtractor.forwardInput(input) - : input + : input; - const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1) - const age = fullyConnectedLayer(pooled, params.fc.age).as1D() - const gender = fullyConnectedLayer(pooled, params.fc.gender) - return { age, gender } - }) + const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1); + const age = fullyConnectedLayer(pooled, params.fc.age).as1D(); + const gender = fullyConnectedLayer(pooled, params.fc.gender); + return { age, gender }; + }); } public forwardInput(input: NetInput | tf.Tensor4D): NetOutput { return tf.tidy(() => { - const { age, gender } = this.runNet(input) - return { age, gender: tf.softmax(gender) } - }) + const { age, gender } = this.runNet(input); + return { age, gender: tf.softmax(gender) }; + }); } public async forward(input: TNetInput): Promise { - return this.forwardInput(await toNetInput(input)) + return this.forwardInput(await toNetInput(input)); } public async predictAgeAndGender(input: TNetInput): Promise { - const netInput = await toNetInput(input) - const out = await this.forwardInput(netInput) + const netInput = await toNetInput(input); + const out = await this.forwardInput(netInput); - const ages = tf.unstack(out.age) - const genders = tf.unstack(out.gender) + const ages = tf.unstack(out.age); + const genders = tf.unstack(out.gender); const ageAndGenderTensors = ages.map((ageTensor, i) => ({ ageTensor, - genderTensor: genders[i] - })) + genderTensor: genders[i], + })); const predictionsByBatch = await Promise.all( ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => { - const age = (await ageTensor.data())[0] - const probMale = (await genderTensor.data())[0] - const isMale = probMale > 0.5 - const gender = isMale ? Gender.MALE : Gender.FEMALE - const genderProbability = isMale ? probMale : (1 - probMale) + const age = (await ageTensor.data())[0]; + const probMale = (await genderTensor.data())[0]; + const isMale = probMale > 0.5; + const gender = isMale ? Gender.MALE : Gender.FEMALE; + const genderProbability = isMale ? probMale : (1 - probMale); - ageTensor.dispose() - genderTensor.dispose() - return { age, gender, genderProbability } - }) - ) - out.age.dispose() - out.gender.dispose() + ageTensor.dispose(); + genderTensor.dispose(); + return { age, gender, genderProbability }; + }), + ); + out.age.dispose(); + out.gender.dispose(); - return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction + return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction; } protected getDefaultModelName(): string { - return 'age_gender_model' + return 'age_gender_model'; } public dispose(throwOnRedispose: boolean = true) { - this.faceFeatureExtractor.dispose(throwOnRedispose) - super.dispose(throwOnRedispose) + this.faceFeatureExtractor.dispose(throwOnRedispose); + super.dispose(throwOnRedispose); } public loadClassifierParams(weights: Float32Array) { - const { params, paramMappings } = this.extractClassifierParams(weights) - this._params = params - this._paramMappings = paramMappings + const { params, paramMappings } = this.extractClassifierParams(weights); + this._params = params; + this._paramMappings = paramMappings; } public extractClassifierParams(weights: Float32Array) { - return extractParams(weights) + return extractParams(weights); } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) { + const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap); - const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap) + this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap); - this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap) - - return extractParamsFromWeigthMap(classifierMap) + return extractParamsFromWeigthMap(classifierMap); } protected extractParams(weights: Float32Array) { + const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2); - const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2) + const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize); + const classifierWeights = weights.slice(weights.length - classifierWeightSize); - const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize) - const classifierWeights = weights.slice(weights.length - classifierWeightSize) - - this.faceFeatureExtractor.extractWeights(featureExtractorWeights) - return this.extractClassifierParams(classifierWeights) + this.faceFeatureExtractor.extractWeights(featureExtractorWeights); + return this.extractClassifierParams(classifierWeights); } -} \ No newline at end of file +} diff --git a/src/ageGenderNet/extractParams.ts b/src/ageGenderNet/extractParams.ts index b09800a..8d6ad93 100644 --- a/src/ageGenderNet/extractParams.ts +++ b/src/ageGenderNet/extractParams.ts @@ -2,25 +2,24 @@ import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../ import { NetParams } from './types'; export function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractWeights, - getRemainingWeights - } = extractWeightsFactory(weights) + getRemainingWeights, + } = extractWeightsFactory(weights); - const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings) + const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings); - const age = extractFCParams(512, 1, 'fc/age') - const gender = extractFCParams(512, 2, 'fc/gender') + const age = extractFCParams(512, 1, 'fc/age'); + const gender = extractFCParams(512, 2, 'fc/gender'); if (getRemainingWeights().length !== 0) { - throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`) + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); } return { paramMappings, - params: { fc: { age, gender } } - } -} \ No newline at end of file + params: { fc: { age, gender } }, + }; +} diff --git a/src/ageGenderNet/extractParamsFromWeigthMap.ts b/src/ageGenderNet/extractParamsFromWeigthMap.ts index 63d87ec..70bcca3 100644 --- a/src/ageGenderNet/extractParamsFromWeigthMap.ts +++ b/src/ageGenderNet/extractParamsFromWeigthMap.ts @@ -1,30 +1,31 @@ import * as tf from '../../dist/tfjs.esm.js'; -import { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index'; +import { + disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping, +} from '../common/index'; import { NetParams } from './types'; export function extractParamsFromWeigthMap( - weightMap: tf.NamedTensorMap + weightMap: tf.NamedTensorMap, ): { params: NetParams, paramMappings: ParamMapping[] } { + const paramMappings: ParamMapping[] = []; - const paramMappings: ParamMapping[] = [] - - const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings) + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); function extractFcParams(prefix: string): FCParams { - const weights = extractWeightEntry(`${prefix}/weights`, 2) - const bias = extractWeightEntry(`${prefix}/bias`, 1) - return { weights, bias } + const weights = extractWeightEntry(`${prefix}/weights`, 2); + const bias = extractWeightEntry(`${prefix}/bias`, 1); + return { weights, bias }; } const params = { fc: { age: extractFcParams('fc/age'), - gender: extractFcParams('fc/gender') - } - } + gender: extractFcParams('fc/gender'), + }, + }; - disposeUnusedWeightTensors(weightMap, paramMappings) + disposeUnusedWeightTensors(weightMap, paramMappings); - return { params, paramMappings } -} \ No newline at end of file + return { params, paramMappings }; +} diff --git a/src/ageGenderNet/index.ts b/src/ageGenderNet/index.ts index c48b664..922b2de 100644 --- a/src/ageGenderNet/index.ts +++ b/src/ageGenderNet/index.ts @@ -1,2 +1,2 @@ export * from './AgeGenderNet'; -export * from './types'; \ No newline at end of file +export * from './types'; diff --git a/src/ageGenderNet/types.ts b/src/ageGenderNet/types.ts index e101820..5012785 100644 --- a/src/ageGenderNet/types.ts +++ b/src/ageGenderNet/types.ts @@ -2,17 +2,20 @@ import * as tf from '../../dist/tfjs.esm.js'; import { FCParams } from '../common/index'; +// eslint-disable-next-line no-shadow +export enum Gender { + // eslint-disable-next-line no-unused-vars + FEMALE = 'female', + // eslint-disable-next-line no-unused-vars + MALE = 'male' +} + export type AgeAndGenderPrediction = { age: number gender: Gender genderProbability: number } -export enum Gender { - FEMALE = 'female', - MALE = 'male' -} - export type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D } export type NetParams = { @@ -20,4 +23,4 @@ export type NetParams = { age: FCParams gender: FCParams } -} \ No newline at end of file +} diff --git a/src/classes/BoundingBox.ts b/src/classes/BoundingBox.ts index 7263b4b..ce2a8a6 100644 --- a/src/classes/BoundingBox.ts +++ b/src/classes/BoundingBox.ts @@ -9,6 +9,8 @@ export interface IBoundingBox { export class BoundingBox extends Box implements IBoundingBox { constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) { - super({ left, top, right, bottom }, allowNegativeDimensions) + super({ + left, top, right, bottom, + }, allowNegativeDimensions); } -} \ No newline at end of file +} diff --git a/src/classes/Box.ts b/src/classes/Box.ts index 4f7362b..c3fa3a0 100644 --- a/src/classes/Box.ts +++ b/src/classes/Box.ts @@ -5,163 +5,197 @@ import { Point } from './Point'; import { IRect } from './Rect'; export class Box implements IBoundingBox, IRect { - public static isRect(rect: any): boolean { - return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber) + return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber); } public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) { if (!Box.isRect(box)) { - throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`) + throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`); } if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) { - throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`) + throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`); } } private _x: number + private _y: number + private _width: number + private _height: number constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) { - const box = (_box || {}) as any + const box = (_box || {}) as any; - const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber) - const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber) + const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber); + const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber); if (!isRect && !isBbox) { - throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`) + throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`); } const [x, y, width, height] = isRect ? [box.x, box.y, box.width, box.height] - : [box.left, box.top, box.right - box.left, box.bottom - box.top] + : [box.left, box.top, box.right - box.left, box.bottom - box.top]; - Box.assertIsValidBox({ x, y, width, height }, 'Box.constructor', allowNegativeDimensions) + Box.assertIsValidBox({ + x, y, width, height, + }, 'Box.constructor', allowNegativeDimensions); - this._x = x - this._y = y - this._width = width - this._height = height + this._x = x; + this._y = y; + this._width = width; + this._height = height; } - public get x(): number { return this._x } - public get y(): number { return this._y } - public get width(): number { return this._width } - public get height(): number { return this._height } - public get left(): number { return this.x } - public get top(): number { return this.y } - public get right(): number { return this.x + this.width } - public get bottom(): number { return this.y + this.height } - public get area(): number { return this.width * this.height } - public get topLeft(): Point { return new Point(this.left, this.top) } - public get topRight(): Point { return new Point(this.right, this.top) } - public get bottomLeft(): Point { return new Point(this.left, this.bottom) } - public get bottomRight(): Point { return new Point(this.right, this.bottom) } + public get x(): number { return this._x; } + + public get y(): number { return this._y; } + + public get width(): number { return this._width; } + + public get height(): number { return this._height; } + + public get left(): number { return this.x; } + + public get top(): number { return this.y; } + + public get right(): number { return this.x + this.width; } + + public get bottom(): number { return this.y + this.height; } + + public get area(): number { return this.width * this.height; } + + public get topLeft(): Point { return new Point(this.left, this.top); } + + public get topRight(): Point { return new Point(this.right, this.top); } + + public get bottomLeft(): Point { return new Point(this.left, this.bottom); } + + public get bottomRight(): Point { return new Point(this.right, this.bottom); } public round(): Box { const [x, y, width, height] = [this.x, this.y, this.width, this.height] - .map(val => Math.round(val)) - return new Box({ x, y, width, height }) + .map((val) => Math.round(val)); + return new Box({ + x, y, width, height, + }); } public floor(): Box { const [x, y, width, height] = [this.x, this.y, this.width, this.height] - .map(val => Math.floor(val)) - return new Box({ x, y, width, height }) + .map((val) => Math.floor(val)); + return new Box({ + x, y, width, height, + }); } public toSquare(): Box { - let { x, y, width, height } = this - const diff = Math.abs(width - height) + let { + x, y, width, height, + } = this; + const diff = Math.abs(width - height); if (width < height) { - x -= (diff / 2) - width += diff + x -= (diff / 2); + width += diff; } if (height < width) { - y -= (diff / 2) - height += diff + y -= (diff / 2); + height += diff; } - return new Box({ x, y, width, height }) + return new Box({ + x, y, width, height, + }); } public rescale(s: IDimensions | number): Box { - const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number - const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number + const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number; + const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number; return new Box({ x: this.x * scaleX, y: this.y * scaleY, width: this.width * scaleX, - height: this.height * scaleY - }) + height: this.height * scaleY, + }); } public pad(padX: number, padY: number): Box { - let [x, y, width, height] = [ + const [x, y, width, height] = [ this.x - (padX / 2), this.y - (padY / 2), this.width + padX, - this.height + padY - ] - return new Box({ x, y, width, height }) + this.height + padY, + ]; + return new Box({ + x, y, width, height, + }); } public clipAtImageBorders(imgWidth: number, imgHeight: number): Box { - const { x, y, right, bottom } = this - const clippedX = Math.max(x, 0) - const clippedY = Math.max(y, 0) + const { + x, y, right, bottom, + } = this; + const clippedX = Math.max(x, 0); + const clippedY = Math.max(y, 0); - const newWidth = right - clippedX - const newHeight = bottom - clippedY - const clippedWidth = Math.min(newWidth, imgWidth - clippedX) - const clippedHeight = Math.min(newHeight, imgHeight - clippedY) + const newWidth = right - clippedX; + const newHeight = bottom - clippedY; + const clippedWidth = Math.min(newWidth, imgWidth - clippedX); + const clippedHeight = Math.min(newHeight, imgHeight - clippedY); - return (new Box({ x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight})).floor() + return (new Box({ + x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight, + })).floor(); } public shift(sx: number, sy: number): Box { - const { width, height } = this - const x = this.x + sx - const y = this.y + sy + const { width, height } = this; + const x = this.x + sx; + const y = this.y + sy; - return new Box({ x, y, width, height }) + return new Box({ + x, y, width, height, + }); } public padAtBorders(imageHeight: number, imageWidth: number) { - const w = this.width + 1 - const h = this.height + 1 + const w = this.width + 1; + const h = this.height + 1; - let dx = 1 - let dy = 1 - let edx = w - let edy = h + const dx = 1; + const dy = 1; + let edx = w; + let edy = h; - let x = this.left - let y = this.top - let ex = this.right - let ey = this.bottom + let x = this.left; + let y = this.top; + let ex = this.right; + let ey = this.bottom; if (ex > imageWidth) { - edx = -ex + imageWidth + w - ex = imageWidth + edx = -ex + imageWidth + w; + ex = imageWidth; } if (ey > imageHeight) { - edy = -ey + imageHeight + h - ey = imageHeight + edy = -ey + imageHeight + h; + ey = imageHeight; } if (x < 1) { - edy = 2 - x - x = 1 + edy = 2 - x; + x = 1; } if (y < 1) { - edy = 2 - y - y = 1 + edy = 2 - y; + y = 1; } - return { dy, edy, dx, edx, y, ey, x, ex, w, h } + return { + dy, edy, dx, edx, y, ey, x, ex, w, h, + }; } public calibrate(region: Box) { @@ -169,7 +203,7 @@ export class Box implements IBoundingBox, IRect { left: this.left + (region.left * this.width), top: this.top + (region.top * this.height), right: this.right + (region.right * this.width), - bottom: this.bottom + (region.bottom * this.height) - }).toSquare().round() + bottom: this.bottom + (region.bottom * this.height), + }).toSquare().round(); } -} \ No newline at end of file +} diff --git a/src/classes/Dimensions.ts b/src/classes/Dimensions.ts index c85fcfd..9709d6c 100644 --- a/src/classes/Dimensions.ts +++ b/src/classes/Dimensions.ts @@ -6,23 +6,24 @@ export interface IDimensions { } export class Dimensions implements IDimensions { - private _width: number + private _height: number constructor(width: number, height: number) { if (!isValidNumber(width) || !isValidNumber(height)) { - throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`) + throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`); } - this._width = width - this._height = height + this._width = width; + this._height = height; } - public get width(): number { return this._width } - public get height(): number { return this._height } + public get width(): number { return this._width; } + + public get height(): number { return this._height; } public reverse(): Dimensions { - return new Dimensions(1 / this.width, 1 / this.height) + return new Dimensions(1 / this.width, 1 / this.height); } -} \ No newline at end of file +} diff --git a/src/classes/FaceDetection.ts b/src/classes/FaceDetection.ts index 1ffe5d6..8c0662a 100644 --- a/src/classes/FaceDetection.ts +++ b/src/classes/FaceDetection.ts @@ -12,13 +12,13 @@ export class FaceDetection extends ObjectDetection implements IFaceDetecion { constructor( score: number, relativeBox: Rect, - imageDims: IDimensions + imageDims: IDimensions, ) { - super(score, score, '', relativeBox, imageDims) + super(score, score, '', relativeBox, imageDims); } public forSize(width: number, height: number): FaceDetection { - const { score, relativeBox, imageDims } = super.forSize(width, height) - return new FaceDetection(score, relativeBox, imageDims) + const { score, relativeBox, imageDims } = super.forSize(width, height); + return new FaceDetection(score, relativeBox, imageDims); } -} \ No newline at end of file +} diff --git a/src/classes/FaceLandmarks.ts b/src/classes/FaceLandmarks.ts index 4ed10f1..dafb278 100644 --- a/src/classes/FaceLandmarks.ts +++ b/src/classes/FaceLandmarks.ts @@ -8,9 +8,9 @@ import { Point } from './Point'; import { IRect, Rect } from './Rect'; // face alignment constants -const relX = 0.5 -const relY = 0.43 -const relScale = 0.45 +const relX = 0.5; +const relY = 0.43; +const relScale = 0.45; export interface IFaceLandmarks { positions: Point[] @@ -19,49 +19,55 @@ export interface IFaceLandmarks { export class FaceLandmarks implements IFaceLandmarks { protected _shift: Point + protected _positions: Point[] + protected _imgDims: Dimensions constructor( relativeFaceLandmarkPositions: Point[], imgDims: IDimensions, - shift: Point = new Point(0, 0) + shift: Point = new Point(0, 0), ) { - const { width, height } = imgDims - this._imgDims = new Dimensions(width, height) - this._shift = shift + const { width, height } = imgDims; + this._imgDims = new Dimensions(width, height); + this._shift = shift; this._positions = relativeFaceLandmarkPositions.map( - pt => pt.mul(new Point(width, height)).add(shift) - ) + (pt) => pt.mul(new Point(width, height)).add(shift), + ); } - public get shift(): Point { return new Point(this._shift.x, this._shift.y) } - public get imageWidth(): number { return this._imgDims.width } - public get imageHeight(): number { return this._imgDims.height } - public get positions(): Point[] { return this._positions } + public get shift(): Point { return new Point(this._shift.x, this._shift.y); } + + public get imageWidth(): number { return this._imgDims.width; } + + public get imageHeight(): number { return this._imgDims.height; } + + public get positions(): Point[] { return this._positions; } + public get relativePositions(): Point[] { return this._positions.map( - pt => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)) - ) + (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)), + ); } public forSize(width: number, height: number): T { return new (this.constructor as any)( this.relativePositions, - { width, height } - ) + { width, height }, + ); } public shiftBy(x: number, y: number): T { return new (this.constructor as any)( this.relativePositions, this._imgDims, - new Point(x, y) - ) + new Point(x, y), + ); } public shiftByPoint(pt: Point): T { - return this.shiftBy(pt.x, pt.y) + return this.shiftBy(pt.x, pt.y); } /** @@ -77,49 +83,48 @@ export class FaceLandmarks implements IFaceLandmarks { */ public align( detection?: FaceDetection | IRect | IBoundingBox | null, - options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { } + options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { }, ): Box { if (detection) { const box = detection instanceof FaceDetection ? detection.box.floor() - : new Box(detection) + : new Box(detection); - return this.shiftBy(box.x, box.y).align(null, options) + return this.shiftBy(box.x, box.y).align(null, options); } - const { useDlibAlignment, minBoxPadding } = Object.assign({}, { useDlibAlignment: false, minBoxPadding: 0.2 }, options) + const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options }; if (useDlibAlignment) { - return this.alignDlib() + return this.alignDlib(); } - return this.alignMinBbox(minBoxPadding) + return this.alignMinBbox(minBoxPadding); } private alignDlib(): Box { + const centers = this.getRefPointsForAlignment(); - const centers = this.getRefPointsForAlignment() + const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers; + const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude(); + const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2; - const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers - const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude() - const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2 + const size = Math.floor(eyeToMouthDist / relScale); - const size = Math.floor(eyeToMouthDist / relScale) - - const refPoint = getCenterPoint(centers) + const refPoint = getCenterPoint(centers); // TODO: pad in case rectangle is out of image bounds - const x = Math.floor(Math.max(0, refPoint.x - (relX * size))) - const y = Math.floor(Math.max(0, refPoint.y - (relY * size))) + const x = Math.floor(Math.max(0, refPoint.x - (relX * size))); + const y = Math.floor(Math.max(0, refPoint.y - (relY * size))); - return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y)) + return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y)); } private alignMinBbox(padding: number): Box { - const box = minBbox(this.positions) - return box.pad(box.width * padding, box.height * padding) + const box = minBbox(this.positions); + return box.pad(box.width * padding, box.height * padding); } protected getRefPointsForAlignment(): Point[] { - throw new Error('getRefPointsForAlignment not implemented by base class') + throw new Error('getRefPointsForAlignment not implemented by base class'); } -} \ No newline at end of file +} diff --git a/src/classes/FaceLandmarks5.ts b/src/classes/FaceLandmarks5.ts index d2f9652..02ab5ec 100644 --- a/src/classes/FaceLandmarks5.ts +++ b/src/classes/FaceLandmarks5.ts @@ -2,15 +2,13 @@ import { getCenterPoint } from '../utils/index'; import { FaceLandmarks } from './FaceLandmarks'; import { Point } from './Point'; - export class FaceLandmarks5 extends FaceLandmarks { - protected getRefPointsForAlignment(): Point[] { - const pts = this.positions + const pts = this.positions; return [ pts[0], pts[1], - getCenterPoint([pts[3], pts[4]]) - ] + getCenterPoint([pts[3], pts[4]]), + ]; } -} \ No newline at end of file +} diff --git a/src/classes/FaceLandmarks68.ts b/src/classes/FaceLandmarks68.ts index 6b552db..c01ce68 100644 --- a/src/classes/FaceLandmarks68.ts +++ b/src/classes/FaceLandmarks68.ts @@ -4,38 +4,38 @@ import { Point } from './Point'; export class FaceLandmarks68 extends FaceLandmarks { public getJawOutline(): Point[] { - return this.positions.slice(0, 17) + return this.positions.slice(0, 17); } public getLeftEyeBrow(): Point[] { - return this.positions.slice(17, 22) + return this.positions.slice(17, 22); } public getRightEyeBrow(): Point[] { - return this.positions.slice(22, 27) + return this.positions.slice(22, 27); } public getNose(): Point[] { - return this.positions.slice(27, 36) + return this.positions.slice(27, 36); } public getLeftEye(): Point[] { - return this.positions.slice(36, 42) + return this.positions.slice(36, 42); } public getRightEye(): Point[] { - return this.positions.slice(42, 48) + return this.positions.slice(42, 48); } public getMouth(): Point[] { - return this.positions.slice(48, 68) + return this.positions.slice(48, 68); } protected getRefPointsForAlignment(): Point[] { return [ this.getLeftEye(), this.getRightEye(), - this.getMouth() - ].map(getCenterPoint) + this.getMouth(), + ].map(getCenterPoint); } -} \ No newline at end of file +} diff --git a/src/classes/FaceMatch.ts b/src/classes/FaceMatch.ts index 995b03a..4285669 100644 --- a/src/classes/FaceMatch.ts +++ b/src/classes/FaceMatch.ts @@ -7,17 +7,19 @@ export interface IFaceMatch { export class FaceMatch implements IFaceMatch { private _label: string + private _distance: number constructor(label: string, distance: number) { - this._label = label - this._distance = distance + this._label = label; + this._distance = distance; } - public get label(): string { return this._label } - public get distance(): number { return this._distance } + public get label(): string { return this._label; } + + public get distance(): number { return this._distance; } public toString(withDistance: boolean = true): string { - return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}` + return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`; } -} \ No newline at end of file +} diff --git a/src/classes/LabeledBox.ts b/src/classes/LabeledBox.ts index f44047a..5071ee2 100644 --- a/src/classes/LabeledBox.ts +++ b/src/classes/LabeledBox.ts @@ -4,22 +4,20 @@ import { Box } from './Box'; import { IRect } from './Rect'; export class LabeledBox extends Box { - public static assertIsValidLabeledBox(box: any, callee: string) { - Box.assertIsValidBox(box, callee) + Box.assertIsValidBox(box, callee); if (!isValidNumber(box.label)) { - throw new Error(`${callee} - expected property label (${box.label}) to be a number`) + throw new Error(`${callee} - expected property label (${box.label}) to be a number`); } } private _label: number constructor(box: IBoundingBox | IRect | any, label: number) { - super(box) - this._label = label + super(box); + this._label = label; } - public get label(): number { return this._label } - -} \ No newline at end of file + public get label(): number { return this._label; } +} diff --git a/src/classes/LabeledFaceDescriptors.ts b/src/classes/LabeledFaceDescriptors.ts index 4009e45..5cb398e 100644 --- a/src/classes/LabeledFaceDescriptors.ts +++ b/src/classes/LabeledFaceDescriptors.ts @@ -1,35 +1,34 @@ export class LabeledFaceDescriptors { private _label: string + private _descriptors: Float32Array[] constructor(label: string, descriptors: Float32Array[]) { if (!(typeof label === 'string')) { - throw new Error('LabeledFaceDescriptors - constructor expected label to be a string') + throw new Error('LabeledFaceDescriptors - constructor expected label to be a string'); } - if (!Array.isArray(descriptors) || descriptors.some(desc => !(desc instanceof Float32Array))) { - throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array') + if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) { + throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array'); } - this._label = label - this._descriptors = descriptors + this._label = label; + this._descriptors = descriptors; } - public get label(): string { return this._label } - public get descriptors(): Float32Array[] { return this._descriptors } + public get label(): string { return this._label; } + + public get descriptors(): Float32Array[] { return this._descriptors; } public toJSON(): any { return { label: this.label, - descriptors: this.descriptors.map((d) => Array.from(d)) + descriptors: this.descriptors.map((d) => Array.from(d)), }; } public static fromJSON(json: any): LabeledFaceDescriptors { - const descriptors = json.descriptors.map((d: any) => { - return new Float32Array(d); - }); + const descriptors = json.descriptors.map((d: any) => new Float32Array(d)); return new LabeledFaceDescriptors(json.label, descriptors); } - -} \ No newline at end of file +} diff --git a/src/classes/ObjectDetection.ts b/src/classes/ObjectDetection.ts index 918b2cd..8707e57 100644 --- a/src/classes/ObjectDetection.ts +++ b/src/classes/ObjectDetection.ts @@ -4,9 +4,13 @@ import { IRect, Rect } from './Rect'; export class ObjectDetection { private _score: number + private _classScore: number + private _className: string + private _box: Rect + private _imageDims: Dimensions constructor( @@ -14,23 +18,30 @@ export class ObjectDetection { classScore: number, className: string, relativeBox: IRect, - imageDims: IDimensions + imageDims: IDimensions, ) { - this._imageDims = new Dimensions(imageDims.width, imageDims.height) - this._score = score - this._classScore = classScore - this._className = className - this._box = new Box(relativeBox).rescale(this._imageDims) + this._imageDims = new Dimensions(imageDims.width, imageDims.height); + this._score = score; + this._classScore = classScore; + this._className = className; + this._box = new Box(relativeBox).rescale(this._imageDims); } - public get score(): number { return this._score } - public get classScore(): number { return this._classScore } - public get className(): string { return this._className } - public get box(): Box { return this._box } - public get imageDims(): Dimensions { return this._imageDims } - public get imageWidth(): number { return this.imageDims.width } - public get imageHeight(): number { return this.imageDims.height } - public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()) } + public get score(): number { return this._score; } + + public get classScore(): number { return this._classScore; } + + public get className(): string { return this._className; } + + public get box(): Box { return this._box; } + + public get imageDims(): Dimensions { return this._imageDims; } + + public get imageWidth(): number { return this.imageDims.width; } + + public get imageHeight(): number { return this.imageDims.height; } + + public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); } public forSize(width: number, height: number): ObjectDetection { return new ObjectDetection( @@ -38,7 +49,7 @@ export class ObjectDetection { this.classScore, this.className, this.relativeBox, - { width, height} - ) + { width, height }, + ); } -} \ No newline at end of file +} diff --git a/src/classes/Point.ts b/src/classes/Point.ts index 8650076..40be933 100644 --- a/src/classes/Point.ts +++ b/src/classes/Point.ts @@ -5,41 +5,43 @@ export interface IPoint { export class Point implements IPoint { private _x: number + private _y: number constructor(x: number, y: number) { - this._x = x - this._y = y + this._x = x; + this._y = y; } - get x(): number { return this._x } - get y(): number { return this._y } + get x(): number { return this._x; } + + get y(): number { return this._y; } public add(pt: IPoint): Point { - return new Point(this.x + pt.x, this.y + pt.y) + return new Point(this.x + pt.x, this.y + pt.y); } public sub(pt: IPoint): Point { - return new Point(this.x - pt.x, this.y - pt.y) + return new Point(this.x - pt.x, this.y - pt.y); } public mul(pt: IPoint): Point { - return new Point(this.x * pt.x, this.y * pt.y) + return new Point(this.x * pt.x, this.y * pt.y); } public div(pt: IPoint): Point { - return new Point(this.x / pt.x, this.y / pt.y) + return new Point(this.x / pt.x, this.y / pt.y); } public abs(): Point { - return new Point(Math.abs(this.x), Math.abs(this.y)) + return new Point(Math.abs(this.x), Math.abs(this.y)); } public magnitude(): number { - return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2)) + return Math.sqrt((this.x ** 2) + (this.y ** 2)); } public floor(): Point { - return new Point(Math.floor(this.x), Math.floor(this.y)) + return new Point(Math.floor(this.x), Math.floor(this.y)); } -} \ No newline at end of file +} diff --git a/src/classes/PredictedBox.ts b/src/classes/PredictedBox.ts index 9de8312..7a1c5e3 100644 --- a/src/classes/PredictedBox.ts +++ b/src/classes/PredictedBox.ts @@ -4,28 +4,28 @@ import { LabeledBox } from './LabeledBox'; import { IRect } from './Rect'; export class PredictedBox extends LabeledBox { - public static assertIsValidPredictedBox(box: any, callee: string) { - LabeledBox.assertIsValidLabeledBox(box, callee) + LabeledBox.assertIsValidLabeledBox(box, callee); if ( !isValidProbablitiy(box.score) || !isValidProbablitiy(box.classScore) ) { - throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`) + throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`); } } private _score: number + private _classScore: number constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) { - super(box, label) - this._score = score - this._classScore = classScore + super(box, label); + this._score = score; + this._classScore = classScore; } - public get score(): number { return this._score } - public get classScore(): number { return this._classScore } + public get score(): number { return this._score; } -} \ No newline at end of file + public get classScore(): number { return this._classScore; } +} diff --git a/src/classes/Rect.ts b/src/classes/Rect.ts index 5506769..2bf6527 100644 --- a/src/classes/Rect.ts +++ b/src/classes/Rect.ts @@ -9,6 +9,8 @@ export interface IRect { export class Rect extends Box implements IRect { constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) { - super({ x, y, width, height }, allowNegativeDimensions) + super({ + x, y, width, height, + }, allowNegativeDimensions); } -} \ No newline at end of file +} diff --git a/src/classes/index.ts b/src/classes/index.ts index 06c5fce..b66b71e 100644 --- a/src/classes/index.ts +++ b/src/classes/index.ts @@ -1,14 +1,14 @@ -export * from './BoundingBox' -export * from './Box' -export * from './Dimensions' +export * from './BoundingBox'; +export * from './Box'; +export * from './Dimensions'; export * from './FaceDetection'; export * from './FaceLandmarks'; export * from './FaceLandmarks5'; export * from './FaceLandmarks68'; export * from './FaceMatch'; -export * from './LabeledBox' +export * from './LabeledBox'; export * from './LabeledFaceDescriptors'; -export * from './ObjectDetection' -export * from './Point' -export * from './PredictedBox' -export * from './Rect' \ No newline at end of file +export * from './ObjectDetection'; +export * from './Point'; +export * from './PredictedBox'; +export * from './Rect'; diff --git a/src/common/convLayer.ts b/src/common/convLayer.ts index 0cd1ba8..222098b 100644 --- a/src/common/convLayer.ts +++ b/src/common/convLayer.ts @@ -6,14 +6,14 @@ export function convLayer( x: tf.Tensor4D, params: ConvParams, padding: 'valid' | 'same' = 'same', - withRelu: boolean = false + withRelu: boolean = false, ): tf.Tensor4D { return tf.tidy(() => { const out = tf.add( tf.conv2d(x, params.filters, [1, 1], padding), - params.bias - ) as tf.Tensor4D + params.bias, + ) as tf.Tensor4D; - return withRelu ? tf.relu(out) : out - }) -} \ No newline at end of file + return withRelu ? tf.relu(out) : out; + }); +} diff --git a/src/common/depthwiseSeparableConv.ts b/src/common/depthwiseSeparableConv.ts index 5cc1a56..664a4de 100644 --- a/src/common/depthwiseSeparableConv.ts +++ b/src/common/depthwiseSeparableConv.ts @@ -5,11 +5,11 @@ import { SeparableConvParams } from './types'; export function depthwiseSeparableConv( x: tf.Tensor4D, params: SeparableConvParams, - stride: [number, number] + stride: [number, number], ): tf.Tensor4D { return tf.tidy(() => { - let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same') - out = tf.add(out, params.bias) - return out - }) -} \ No newline at end of file + let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same'); + out = tf.add(out, params.bias); + return out; + }); +} diff --git a/src/common/disposeUnusedWeightTensors.ts b/src/common/disposeUnusedWeightTensors.ts index 520cc84..8711f77 100644 --- a/src/common/disposeUnusedWeightTensors.ts +++ b/src/common/disposeUnusedWeightTensors.ts @@ -1,9 +1,9 @@ import { ParamMapping } from './types'; export function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) { - Object.keys(weightMap).forEach(path => { - if (!paramMappings.some(pm => pm.originalPath === path)) { - weightMap[path].dispose() + Object.keys(weightMap).forEach((path) => { + if (!paramMappings.some((pm) => pm.originalPath === path)) { + weightMap[path].dispose(); } - }) + }); } diff --git a/src/common/extractConvParamsFactory.ts b/src/common/extractConvParamsFactory.ts index 1507d6d..a971357 100644 --- a/src/common/extractConvParamsFactory.ts +++ b/src/common/extractConvParamsFactory.ts @@ -4,28 +4,25 @@ import { ConvParams, ExtractWeightsFunction, ParamMapping } from './types'; export function extractConvParamsFactory( extractWeights: ExtractWeightsFunction, - paramMappings: ParamMapping[] + paramMappings: ParamMapping[], ) { - - return function( + return ( channelsIn: number, channelsOut: number, filterSize: number, - mappedPrefix: string - ): ConvParams { - + mappedPrefix: string, + ): ConvParams => { const filters = tf.tensor4d( extractWeights(channelsIn * channelsOut * filterSize * filterSize), - [filterSize, filterSize, channelsIn, channelsOut] - ) - const bias = tf.tensor1d(extractWeights(channelsOut)) + [filterSize, filterSize, channelsIn, channelsOut], + ); + const bias = tf.tensor1d(extractWeights(channelsOut)); paramMappings.push( { paramPath: `${mappedPrefix}/filters` }, - { paramPath: `${mappedPrefix}/bias` } - ) - - return { filters, bias } - } + { paramPath: `${mappedPrefix}/bias` }, + ); + return { filters, bias }; + }; } diff --git a/src/common/extractFCParamsFactory.ts b/src/common/extractFCParamsFactory.ts index 55b14d0..ede4e0d 100644 --- a/src/common/extractFCParamsFactory.ts +++ b/src/common/extractFCParamsFactory.ts @@ -2,30 +2,26 @@ import * as tf from '../../dist/tfjs.esm.js'; import { ExtractWeightsFunction, FCParams, ParamMapping } from './types'; - export function extractFCParamsFactory( extractWeights: ExtractWeightsFunction, - paramMappings: ParamMapping[] + paramMappings: ParamMapping[], ) { - - return function( + return ( channelsIn: number, channelsOut: number, - mappedPrefix: string - ): FCParams { - - const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]) - const fc_bias = tf.tensor1d(extractWeights(channelsOut)) + mappedPrefix: string, + ): FCParams => { + const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]); + const fc_bias = tf.tensor1d(extractWeights(channelsOut)); paramMappings.push( { paramPath: `${mappedPrefix}/weights` }, - { paramPath: `${mappedPrefix}/bias` } - ) + { paramPath: `${mappedPrefix}/bias` }, + ); return { weights: fc_weights, - bias: fc_bias - } - } - + bias: fc_bias, + }; + }; } diff --git a/src/common/extractSeparableConvParamsFactory.ts b/src/common/extractSeparableConvParamsFactory.ts index 1513468..2cfe352 100644 --- a/src/common/extractSeparableConvParamsFactory.ts +++ b/src/common/extractSeparableConvParamsFactory.ts @@ -4,43 +4,40 @@ import { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './typ export function extractSeparableConvParamsFactory( extractWeights: ExtractWeightsFunction, - paramMappings: ParamMapping[] + paramMappings: ParamMapping[], ) { - - return function(channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams { - const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]) - const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]) - const bias = tf.tensor1d(extractWeights(channelsOut)) + return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => { + const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]); + const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]); + const bias = tf.tensor1d(extractWeights(channelsOut)); paramMappings.push( { paramPath: `${mappedPrefix}/depthwise_filter` }, { paramPath: `${mappedPrefix}/pointwise_filter` }, - { paramPath: `${mappedPrefix}/bias` } - ) + { paramPath: `${mappedPrefix}/bias` }, + ); return new SeparableConvParams( depthwise_filter, pointwise_filter, - bias - ) - } - + bias, + ); + }; } export function loadSeparableConvParamsFactory( - extractWeightEntry: (originalPath: string, paramRank: number) => T + // eslint-disable-next-line no-unused-vars + extractWeightEntry: (originalPath: string, paramRank: number) => T, ) { - - return function (prefix: string): SeparableConvParams { - const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4) - const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4) - const bias = extractWeightEntry(`${prefix}/bias`, 1) + return (prefix: string): SeparableConvParams => { + const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4); + const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4); + const bias = extractWeightEntry(`${prefix}/bias`, 1); return new SeparableConvParams( depthwise_filter, pointwise_filter, - bias - ) - } - + bias, + ); + }; } diff --git a/src/common/extractWeightEntryFactory.ts b/src/common/extractWeightEntryFactory.ts index 26aba49..15316be 100644 --- a/src/common/extractWeightEntryFactory.ts +++ b/src/common/extractWeightEntryFactory.ts @@ -2,19 +2,17 @@ import { isTensor } from '../utils/index'; import { ParamMapping } from './types'; export function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) { - - return function (originalPath: string, paramRank: number, mappedPath?: string): T { - const tensor = weightMap[originalPath] + return (originalPath: string, paramRank: number, mappedPath?: string) => { + const tensor = weightMap[originalPath]; if (!isTensor(tensor, paramRank)) { - throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`) + throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`); } paramMappings.push( - { originalPath, paramPath: mappedPath || originalPath } - ) - - return tensor - } + { originalPath, paramPath: mappedPath || originalPath }, + ); + return tensor; + }; } diff --git a/src/common/extractWeightsFactory.ts b/src/common/extractWeightsFactory.ts index 8cfcd0c..fd9d397 100644 --- a/src/common/extractWeightsFactory.ts +++ b/src/common/extractWeightsFactory.ts @@ -1,18 +1,18 @@ export function extractWeightsFactory(weights: Float32Array) { - let remainingWeights = weights + let remainingWeights = weights; function extractWeights(numWeights: number): Float32Array { - const ret = remainingWeights.slice(0, numWeights) - remainingWeights = remainingWeights.slice(numWeights) - return ret + const ret = remainingWeights.slice(0, numWeights); + remainingWeights = remainingWeights.slice(numWeights); + return ret; } function getRemainingWeights(): Float32Array { - return remainingWeights + return remainingWeights; } return { extractWeights, - getRemainingWeights - } -} \ No newline at end of file + getRemainingWeights, + }; +} diff --git a/src/common/fullyConnectedLayer.ts b/src/common/fullyConnectedLayer.ts index df3b150..9a0ea63 100644 --- a/src/common/fullyConnectedLayer.ts +++ b/src/common/fullyConnectedLayer.ts @@ -4,12 +4,10 @@ import { FCParams } from './types'; export function fullyConnectedLayer( x: tf.Tensor2D, - params: FCParams + params: FCParams, ): tf.Tensor2D { - return tf.tidy(() => - tf.add( - tf.matMul(x, params.weights), - params.bias - ) - ) -} \ No newline at end of file + return tf.tidy(() => tf.add( + tf.matMul(x, params.weights), + params.bias, + )); +} diff --git a/src/common/getModelUris.ts b/src/common/getModelUris.ts index 55f4745..454cdb2 100644 --- a/src/common/getModelUris.ts +++ b/src/common/getModelUris.ts @@ -1,33 +1,34 @@ export function getModelUris(uri: string | undefined, defaultModelName: string) { - const defaultManifestFilename = `${defaultModelName}-weights_manifest.json` + const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`; if (!uri) { return { modelBaseUri: '', - manifestUri: defaultManifestFilename - } + manifestUri: defaultManifestFilename, + }; } if (uri === '/') { return { modelBaseUri: '/', - manifestUri: `/${defaultManifestFilename}` - } + manifestUri: `/${defaultManifestFilename}`, + }; } + // eslint-disable-next-line no-nested-ternary const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : ''; uri = uri.replace(protocol, ''); - const parts = uri.split('/').filter(s => s) + const parts = uri.split('/').filter((s) => s); const manifestFile = uri.endsWith('.json') ? parts[parts.length - 1] - : defaultManifestFilename + : defaultManifestFilename; - let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/') - modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri + let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/'); + modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri; return { modelBaseUri, - manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}` - } -} \ No newline at end of file + manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`, + }; +} diff --git a/src/common/index.ts b/src/common/index.ts index 9838af9..fc307a0 100644 --- a/src/common/index.ts +++ b/src/common/index.ts @@ -1,10 +1,10 @@ -export * from './convLayer' -export * from './depthwiseSeparableConv' -export * from './disposeUnusedWeightTensors' -export * from './extractConvParamsFactory' -export * from './extractFCParamsFactory' -export * from './extractSeparableConvParamsFactory' -export * from './extractWeightEntryFactory' -export * from './extractWeightsFactory' -export * from './getModelUris' -export * from './types' \ No newline at end of file +export * from './convLayer'; +export * from './depthwiseSeparableConv'; +export * from './disposeUnusedWeightTensors'; +export * from './extractConvParamsFactory'; +export * from './extractFCParamsFactory'; +export * from './extractSeparableConvParamsFactory'; +export * from './extractWeightEntryFactory'; +export * from './extractWeightsFactory'; +export * from './getModelUris'; +export * from './types'; diff --git a/src/common/loadConvParamsFactory.ts b/src/common/loadConvParamsFactory.ts index 8910412..1498fb8 100644 --- a/src/common/loadConvParamsFactory.ts +++ b/src/common/loadConvParamsFactory.ts @@ -2,11 +2,12 @@ import * as tf from '../../dist/tfjs.esm.js'; import { ConvParams } from './types'; +// eslint-disable-next-line no-unused-vars export function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) { - return function(prefix: string): ConvParams { - const filters = extractWeightEntry(`${prefix}/filters`, 4) - const bias = extractWeightEntry(`${prefix}/bias`, 1) + return (prefix: string): ConvParams => { + const filters = extractWeightEntry(`${prefix}/filters`, 4); + const bias = extractWeightEntry(`${prefix}/bias`, 1); - return { filters, bias } - } -} \ No newline at end of file + return { filters, bias }; + }; +} diff --git a/src/common/types.ts b/src/common/types.ts index de6dab4..1ed7a8b 100644 --- a/src/common/types.ts +++ b/src/common/types.ts @@ -1,5 +1,6 @@ import * as tf from '../../dist/tfjs.esm.js'; +// eslint-disable-next-line no-unused-vars export type ExtractWeightsFunction = (numWeights: number) => Float32Array export type ParamMapping = { @@ -18,9 +19,14 @@ export type FCParams = { } export class SeparableConvParams { + // eslint-disable-next-line no-useless-constructor constructor( + // eslint-disable-next-line no-unused-vars public depthwise_filter: tf.Tensor4D, + // eslint-disable-next-line no-unused-vars public pointwise_filter: tf.Tensor4D, - public bias: tf.Tensor1D + // eslint-disable-next-line no-unused-vars + public bias: tf.Tensor1D, + // eslint-disable-next-line no-empty-function ) {} -} \ No newline at end of file +} diff --git a/src/dom/NetInput.ts b/src/dom/NetInput.ts index ac008c2..a457b02 100644 --- a/src/dom/NetInput.ts +++ b/src/dom/NetInput.ts @@ -3,110 +3,115 @@ import * as tf from '../../dist/tfjs.esm.js'; import { Dimensions } from '../classes/Dimensions'; import { env } from '../env/index'; import { padToSquare } from '../ops/padToSquare'; -import { computeReshapedDimensions, isTensor3D, isTensor4D, range } from '../utils/index'; +import { + computeReshapedDimensions, isTensor3D, isTensor4D, range, +} from '../utils/index'; import { createCanvasFromMedia } from './createCanvas'; import { imageToSquare } from './imageToSquare'; import { TResolvedNetInput } from './types'; export class NetInput { private _imageTensors: Array = [] + private _canvases: HTMLCanvasElement[] = [] + private _batchSize: number + private _treatAsBatchInput: boolean = false private _inputDimensions: number[][] = [] + private _inputSize: number constructor( inputs: Array, - treatAsBatchInput: boolean = false + treatAsBatchInput: boolean = false, ) { if (!Array.isArray(inputs)) { - throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`) + throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`); } - this._treatAsBatchInput = treatAsBatchInput - this._batchSize = inputs.length + this._treatAsBatchInput = treatAsBatchInput; + this._batchSize = inputs.length; inputs.forEach((input, idx) => { - if (isTensor3D(input)) { - this._imageTensors[idx] = input - this._inputDimensions[idx] = input.shape - return + this._imageTensors[idx] = input; + this._inputDimensions[idx] = input.shape; + return; } if (isTensor4D(input)) { - const batchSize = (input as any).shape[0] + const batchSize = (input as any).shape[0]; if (batchSize !== 1) { - throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`) + throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`); } - this._imageTensors[idx] = input - this._inputDimensions[idx] = (input as any).shape.slice(1) - return + this._imageTensors[idx] = input; + this._inputDimensions[idx] = (input as any).shape.slice(1); + return; } - const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input) - this._canvases[idx] = canvas - this._inputDimensions[idx] = [canvas.height, canvas.width, 3] - }) + const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input); + this._canvases[idx] = canvas; + this._inputDimensions[idx] = [canvas.height, canvas.width, 3]; + }); } public get imageTensors(): Array { - return this._imageTensors + return this._imageTensors; } public get canvases(): HTMLCanvasElement[] { - return this._canvases + return this._canvases; } public get isBatchInput(): boolean { - return this.batchSize > 1 || this._treatAsBatchInput + return this.batchSize > 1 || this._treatAsBatchInput; } public get batchSize(): number { - return this._batchSize + return this._batchSize; } public get inputDimensions(): number[][] { - return this._inputDimensions + return this._inputDimensions; } public get inputSize(): number | undefined { - return this._inputSize + return this._inputSize; } public get reshapedInputDimensions(): Dimensions[] { return range(this.batchSize, 0, 1).map( - (_, batchIdx) => this.getReshapedInputDimensions(batchIdx) - ) + (_, batchIdx) => this.getReshapedInputDimensions(batchIdx), + ); } - public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement { - return this.canvases[batchIdx] || this.imageTensors[batchIdx] + public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement { + return this.canvases[batchIdx] || this.imageTensors[batchIdx]; } public getInputDimensions(batchIdx: number): number[] { - return this._inputDimensions[batchIdx] + return this._inputDimensions[batchIdx]; } public getInputHeight(batchIdx: number): number { - return this._inputDimensions[batchIdx][0] + return this._inputDimensions[batchIdx][0]; } public getInputWidth(batchIdx: number): number { - return this._inputDimensions[batchIdx][1] + return this._inputDimensions[batchIdx][1]; } public getReshapedInputDimensions(batchIdx: number): Dimensions { if (typeof this.inputSize !== 'number') { - throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet') + throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet'); } - const width = this.getInputWidth(batchIdx) - const height = this.getInputHeight(batchIdx) - return computeReshapedDimensions({ width, height }, this.inputSize) + const width = this.getInputWidth(batchIdx); + const height = this.getInputHeight(batchIdx); + return computeReshapedDimensions({ width, height }, this.inputSize); } /** @@ -119,39 +124,37 @@ export class NetInput { * @returns The batch tensor. */ public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D { - - this._inputSize = inputSize + this._inputSize = inputSize; return tf.tidy(() => { - - const inputTensors = range(this.batchSize, 0, 1).map(batchIdx => { - const input = this.getInput(batchIdx) + const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => { + const input = this.getInput(batchIdx); if (input instanceof tf.Tensor) { // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'. - let imgTensor = isTensor4D(input) ? input : input.expandDims() + let imgTensor = isTensor4D(input) ? input : input.expandDims(); // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'. - imgTensor = padToSquare(imgTensor, isCenterInputs) + imgTensor = padToSquare(imgTensor, isCenterInputs); if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) { - imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]) + imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]); } - return imgTensor.as3D(inputSize, inputSize, 3) + return imgTensor.as3D(inputSize, inputSize, 3); } if (input instanceof env.getEnv().Canvas) { - return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs)) + return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs)); } - throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`) - }) + throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`); + }); // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3) - const batchTensor = tf.stack(inputTensors.map(t => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3) + const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3); // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3); - - return batchTensor - }) + + return batchTensor; + }); } -} \ No newline at end of file +} diff --git a/src/dom/awaitMediaLoaded.ts b/src/dom/awaitMediaLoaded.ts index 7fda8e9..cff820b 100644 --- a/src/dom/awaitMediaLoaded.ts +++ b/src/dom/awaitMediaLoaded.ts @@ -2,27 +2,28 @@ import { env } from '../env/index'; import { isMediaLoaded } from './isMediaLoaded'; export function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) { - + // eslint-disable-next-line consistent-return return new Promise((resolve, reject) => { if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) { - return resolve(null) - } - - function onLoad(e: Event) { - if (!e.currentTarget) return - e.currentTarget.removeEventListener('load', onLoad) - e.currentTarget.removeEventListener('error', onError) - resolve(e) + return resolve(null); } function onError(e: Event) { - if (!e.currentTarget) return - e.currentTarget.removeEventListener('load', onLoad) - e.currentTarget.removeEventListener('error', onError) - reject(e) + if (!e.currentTarget) return; + // eslint-disable-next-line no-use-before-define + e.currentTarget.removeEventListener('load', onLoad); + e.currentTarget.removeEventListener('error', onError); + reject(e); } - media.addEventListener('load', onLoad) - media.addEventListener('error', onError) - }) -} \ No newline at end of file + function onLoad(e: Event) { + if (!e.currentTarget) return; + e.currentTarget.removeEventListener('load', onLoad); + e.currentTarget.removeEventListener('error', onError); + resolve(e); + } + + media.addEventListener('load', onLoad); + media.addEventListener('error', onError); + }); +} diff --git a/src/dom/bufferToImage.ts b/src/dom/bufferToImage.ts index b48e39f..e3b90ef 100644 --- a/src/dom/bufferToImage.ts +++ b/src/dom/bufferToImage.ts @@ -2,22 +2,16 @@ import { env } from '../env/index'; export function bufferToImage(buf: Blob): Promise { return new Promise((resolve, reject) => { - if (!(buf instanceof Blob)) { - return reject('bufferToImage - expected buf to be of type: Blob') - } - - const reader = new FileReader() + if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob')); + const reader = new FileReader(); reader.onload = () => { - if (typeof reader.result !== 'string') { - return reject('bufferToImage - expected reader.result to be a string, in onload') - } - - const img = env.getEnv().createImageElement() - img.onload = () => resolve(img) - img.onerror = reject - img.src = reader.result - } - reader.onerror = reject - reader.readAsDataURL(buf) - }) -} \ No newline at end of file + if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload')); + const img = env.getEnv().createImageElement(); + img.onload = () => resolve(img); + img.onerror = reject; + img.src = reader.result as string; + }; + reader.onerror = reject; + reader.readAsDataURL(buf); + }); +} diff --git a/src/dom/createCanvas.ts b/src/dom/createCanvas.ts index 676e99d..b1e7f9c 100644 --- a/src/dom/createCanvas.ts +++ b/src/dom/createCanvas.ts @@ -5,29 +5,27 @@ import { getMediaDimensions } from './getMediaDimensions'; import { isMediaLoaded } from './isMediaLoaded'; export function createCanvas({ width, height }: IDimensions): HTMLCanvasElement { - - const { createCanvasElement } = env.getEnv() - const canvas = createCanvasElement() - canvas.width = width - canvas.height = height - return canvas + const { createCanvasElement } = env.getEnv(); + const canvas = createCanvasElement(); + canvas.width = width; + canvas.height = height; + return canvas; } export function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement { - - const { ImageData } = env.getEnv() + const { ImageData } = env.getEnv(); if (!(media instanceof ImageData) && !isMediaLoaded(media)) { - throw new Error('createCanvasFromMedia - media has not finished loading yet') + throw new Error('createCanvasFromMedia - media has not finished loading yet'); } - const { width, height } = dims || getMediaDimensions(media) - const canvas = createCanvas({ width, height }) + const { width, height } = dims || getMediaDimensions(media); + const canvas = createCanvas({ width, height }); if (media instanceof ImageData) { - getContext2dOrThrow(canvas).putImageData(media, 0, 0) + getContext2dOrThrow(canvas).putImageData(media, 0, 0); } else { - getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height) + getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height); } - return canvas -} \ No newline at end of file + return canvas; +} diff --git a/src/dom/extractFaceTensors.ts b/src/dom/extractFaceTensors.ts index 1e86450..c45c146 100644 --- a/src/dom/extractFaceTensors.ts +++ b/src/dom/extractFaceTensors.ts @@ -16,31 +16,30 @@ import { isTensor3D, isTensor4D } from '../utils/index'; */ export async function extractFaceTensors( imageTensor: tf.Tensor3D | tf.Tensor4D, - detections: Array + detections: Array, ): Promise { - if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) { - throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D') + throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D'); } if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) { - throw new Error('extractFaceTensors - batchSize > 1 not supported') + throw new Error('extractFaceTensors - batchSize > 1 not supported'); } return tf.tidy(() => { - const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0) + const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0); const boxes = detections.map( - det => det instanceof FaceDetection + (det) => (det instanceof FaceDetection ? det.forSize(imgWidth, imgHeight).box - : det + : det), ) - .map(box => box.clipAtImageBorders(imgWidth, imgHeight)) + .map((box) => box.clipAtImageBorders(imgWidth, imgHeight)); - const faceTensors = boxes.map(({ x, y, width, height }) => - tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]) - ) + const faceTensors = boxes.map(({ + x, y, width, height, + }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels])); - return faceTensors - }) -} \ No newline at end of file + return faceTensors; + }); +} diff --git a/src/dom/extractFaces.ts b/src/dom/extractFaces.ts index 4b58ab9..231e9aa 100644 --- a/src/dom/extractFaces.ts +++ b/src/dom/extractFaces.ts @@ -16,38 +16,39 @@ import { TNetInput } from './types'; */ export async function extractFaces( input: TNetInput, - detections: Array + detections: Array, ): Promise { + const { Canvas } = env.getEnv(); - const { Canvas } = env.getEnv() - - let canvas = input as HTMLCanvasElement + let canvas = input as HTMLCanvasElement; if (!(input instanceof Canvas)) { - const netInput = await toNetInput(input) + const netInput = await toNetInput(input); if (netInput.batchSize > 1) { - throw new Error('extractFaces - batchSize > 1 not supported') + throw new Error('extractFaces - batchSize > 1 not supported'); } - const tensorOrCanvas = netInput.getInput(0) + const tensorOrCanvas = netInput.getInput(0); canvas = tensorOrCanvas instanceof Canvas ? tensorOrCanvas - : await imageTensorToCanvas(tensorOrCanvas) + : await imageTensorToCanvas(tensorOrCanvas); } - const ctx = getContext2dOrThrow(canvas) + const ctx = getContext2dOrThrow(canvas); const boxes = detections.map( - det => det instanceof FaceDetection + (det) => (det instanceof FaceDetection ? det.forSize(canvas.width, canvas.height).box.floor() - : det + : det), ) - .map(box => box.clipAtImageBorders(canvas.width, canvas.height)) + .map((box) => box.clipAtImageBorders(canvas.width, canvas.height)); - return boxes.map(({ x, y, width, height }) => { - const faceImg = createCanvas({ width, height }) + return boxes.map(({ + x, y, width, height, + }) => { + const faceImg = createCanvas({ width, height }); getContext2dOrThrow(faceImg) - .putImageData(ctx.getImageData(x, y, width, height), 0, 0) - return faceImg - }) -} \ No newline at end of file + .putImageData(ctx.getImageData(x, y, width, height), 0, 0); + return faceImg; + }); +} diff --git a/src/dom/fetchImage.ts b/src/dom/fetchImage.ts index bde010f..16d7389 100644 --- a/src/dom/fetchImage.ts +++ b/src/dom/fetchImage.ts @@ -2,11 +2,11 @@ import { bufferToImage } from './bufferToImage'; import { fetchOrThrow } from './fetchOrThrow'; export async function fetchImage(uri: string): Promise { - const res = await fetchOrThrow(uri) - const blob = await (res).blob() + const res = await fetchOrThrow(uri); + const blob = await (res).blob(); if (!blob.type.startsWith('image/')) { - throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`) + throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`); } - return bufferToImage(blob) + return bufferToImage(blob); } diff --git a/src/dom/fetchJson.ts b/src/dom/fetchJson.ts index fceae29..c85ff4e 100644 --- a/src/dom/fetchJson.ts +++ b/src/dom/fetchJson.ts @@ -1,5 +1,5 @@ import { fetchOrThrow } from './fetchOrThrow'; export async function fetchJson(uri: string): Promise { - return (await fetchOrThrow(uri)).json() + return (await fetchOrThrow(uri)).json(); } diff --git a/src/dom/fetchNetWeights.ts b/src/dom/fetchNetWeights.ts index 47e4954..3c5b637 100644 --- a/src/dom/fetchNetWeights.ts +++ b/src/dom/fetchNetWeights.ts @@ -1,5 +1,5 @@ import { fetchOrThrow } from './fetchOrThrow'; export async function fetchNetWeights(uri: string): Promise { - return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer()) + return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer()); } diff --git a/src/dom/fetchOrThrow.ts b/src/dom/fetchOrThrow.ts index a4e250b..832bcc8 100644 --- a/src/dom/fetchOrThrow.ts +++ b/src/dom/fetchOrThrow.ts @@ -2,13 +2,13 @@ import { env } from '../env/index'; export async function fetchOrThrow( url: string, - init?: RequestInit + // eslint-disable-next-line no-undef + init?: RequestInit, ): Promise { - - const fetch = env.getEnv().fetch - const res = await fetch(url, init) + const { fetch } = env.getEnv(); + const res = await fetch(url, init); if (!(res.status < 400)) { - throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`) + throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`); } - return res -} \ No newline at end of file + return res; +} diff --git a/src/dom/getContext2dOrThrow.ts b/src/dom/getContext2dOrThrow.ts index 08083f3..a4dc282 100644 --- a/src/dom/getContext2dOrThrow.ts +++ b/src/dom/getContext2dOrThrow.ts @@ -2,23 +2,22 @@ import { env } from '../env/index'; import { resolveInput } from './resolveInput'; export function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D { - - const { Canvas, CanvasRenderingContext2D } = env.getEnv() + const { Canvas, CanvasRenderingContext2D } = env.getEnv(); if (canvasArg instanceof CanvasRenderingContext2D) { - return canvasArg + return canvasArg; } - const canvas = resolveInput(canvasArg) + const canvas = resolveInput(canvasArg); if (!(canvas instanceof Canvas)) { - throw new Error('resolveContext2d - expected canvas to be of instance of Canvas') + throw new Error('resolveContext2d - expected canvas to be of instance of Canvas'); } - const ctx = canvas.getContext('2d') + const ctx = canvas.getContext('2d'); if (!ctx) { - throw new Error('resolveContext2d - canvas 2d context is null') + throw new Error('resolveContext2d - canvas 2d context is null'); } - return ctx -} \ No newline at end of file + return ctx; +} diff --git a/src/dom/getMediaDimensions.ts b/src/dom/getMediaDimensions.ts index 04db279..f34c1aa 100644 --- a/src/dom/getMediaDimensions.ts +++ b/src/dom/getMediaDimensions.ts @@ -2,14 +2,13 @@ import { Dimensions, IDimensions } from '../classes/Dimensions'; import { env } from '../env/index'; export function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions { - - const { Image, Video } = env.getEnv() + const { Image, Video } = env.getEnv(); if (input instanceof Image) { - return new Dimensions(input.naturalWidth, input.naturalHeight) + return new Dimensions(input.naturalWidth, input.naturalHeight); } if (input instanceof Video) { - return new Dimensions(input.videoWidth, input.videoHeight) + return new Dimensions(input.videoWidth, input.videoHeight); } - return new Dimensions(input.width, input.height) + return new Dimensions(input.width, input.height); } diff --git a/src/dom/imageTensorToCanvas.ts b/src/dom/imageTensorToCanvas.ts index 0fb1ea4..f8975a5 100644 --- a/src/dom/imageTensorToCanvas.ts +++ b/src/dom/imageTensorToCanvas.ts @@ -5,16 +5,15 @@ import { isTensor4D } from '../utils/index'; export async function imageTensorToCanvas( imgTensor: tf.Tensor, - canvas?: HTMLCanvasElement + canvas?: HTMLCanvasElement, ): Promise { + const targetCanvas = canvas || env.getEnv().createCanvasElement(); - const targetCanvas = canvas || env.getEnv().createCanvasElement() + const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0); + const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt()); + await tf.browser.toPixels(imgTensor3D, targetCanvas); - const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0) - const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt()) - await tf.browser.toPixels(imgTensor3D, targetCanvas) + imgTensor3D.dispose(); - imgTensor3D.dispose() - - return targetCanvas -} \ No newline at end of file + return targetCanvas; +} diff --git a/src/dom/imageToSquare.ts b/src/dom/imageToSquare.ts index f81f29b..2d14744 100644 --- a/src/dom/imageToSquare.ts +++ b/src/dom/imageToSquare.ts @@ -4,25 +4,24 @@ import { getContext2dOrThrow } from './getContext2dOrThrow'; import { getMediaDimensions } from './getMediaDimensions'; export function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) { - - const { Image, Canvas } = env.getEnv() + const { Image, Canvas } = env.getEnv(); if (!(input instanceof Image || input instanceof Canvas)) { - throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement') + throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement'); } - const dims = getMediaDimensions(input) - const scale = inputSize / Math.max(dims.height, dims.width) - const width = scale * dims.width - const height = scale * dims.height + const dims = getMediaDimensions(input); + const scale = inputSize / Math.max(dims.height, dims.width); + const width = scale * dims.width; + const height = scale * dims.height; - const targetCanvas = createCanvas({ width: inputSize, height: inputSize }) - const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input) + const targetCanvas = createCanvas({ width: inputSize, height: inputSize }); + const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input); - const offset = Math.abs(width - height) / 2 - const dx = centerImage && width < height ? offset : 0 - const dy = centerImage && height < width ? offset : 0 - getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height) + const offset = Math.abs(width - height) / 2; + const dx = centerImage && width < height ? offset : 0; + const dy = centerImage && height < width ? offset : 0; + getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height); - return targetCanvas -} \ No newline at end of file + return targetCanvas; +} diff --git a/src/dom/index.ts b/src/dom/index.ts index d36f9b4..10e5aff 100644 --- a/src/dom/index.ts +++ b/src/dom/index.ts @@ -1,21 +1,21 @@ -export * from './awaitMediaLoaded' -export * from './bufferToImage' -export * from './createCanvas' -export * from './extractFaces' -export * from './extractFaceTensors' -export * from './fetchImage' -export * from './fetchJson' -export * from './fetchNetWeights' -export * from './fetchOrThrow' -export * from './getContext2dOrThrow' -export * from './getMediaDimensions' -export * from './imageTensorToCanvas' -export * from './imageToSquare' -export * from './isMediaElement' -export * from './isMediaLoaded' -export * from './loadWeightMap' -export * from './matchDimensions' -export * from './NetInput' -export * from './resolveInput' -export * from './toNetInput' -export * from './types' \ No newline at end of file +export * from './awaitMediaLoaded'; +export * from './bufferToImage'; +export * from './createCanvas'; +export * from './extractFaces'; +export * from './extractFaceTensors'; +export * from './fetchImage'; +export * from './fetchJson'; +export * from './fetchNetWeights'; +export * from './fetchOrThrow'; +export * from './getContext2dOrThrow'; +export * from './getMediaDimensions'; +export * from './imageTensorToCanvas'; +export * from './imageToSquare'; +export * from './isMediaElement'; +export * from './isMediaLoaded'; +export * from './loadWeightMap'; +export * from './matchDimensions'; +export * from './NetInput'; +export * from './resolveInput'; +export * from './toNetInput'; +export * from './types'; diff --git a/src/dom/isMediaElement.ts b/src/dom/isMediaElement.ts index b13f688..29abb38 100644 --- a/src/dom/isMediaElement.ts +++ b/src/dom/isMediaElement.ts @@ -1,10 +1,9 @@ import { env } from '../env/index'; export function isMediaElement(input: any) { - - const { Image, Canvas, Video } = env.getEnv() + const { Image, Canvas, Video } = env.getEnv(); return input instanceof Image || input instanceof Canvas - || input instanceof Video -} \ No newline at end of file + || input instanceof Video; +} diff --git a/src/dom/isMediaLoaded.ts b/src/dom/isMediaLoaded.ts index 8e1f0aa..00d6e0d 100644 --- a/src/dom/isMediaLoaded.ts +++ b/src/dom/isMediaLoaded.ts @@ -1,9 +1,8 @@ import { env } from '../env/index'; export function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean { - - const { Image, Video } = env.getEnv() + const { Image, Video } = env.getEnv(); return (media instanceof Image && media.complete) - || (media instanceof Video && media.readyState >= 3) + || (media instanceof Video && media.readyState >= 3); } diff --git a/src/dom/loadWeightMap.ts b/src/dom/loadWeightMap.ts index 1245c06..b49cd22 100644 --- a/src/dom/loadWeightMap.ts +++ b/src/dom/loadWeightMap.ts @@ -7,8 +7,8 @@ export async function loadWeightMap( uri: string | undefined, defaultModelName: string, ): Promise { - const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName) - let manifest = await fetchJson(manifestUri) + const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName); + const manifest = await fetchJson(manifestUri); // if (manifest['weightsManifest']) manifest = manifest['weightsManifest']; - return tf.io.loadWeights(manifest, modelBaseUri) -} \ No newline at end of file + return tf.io.loadWeights(manifest, modelBaseUri); +} diff --git a/src/dom/matchDimensions.ts b/src/dom/matchDimensions.ts index e0738a6..17a9c49 100644 --- a/src/dom/matchDimensions.ts +++ b/src/dom/matchDimensions.ts @@ -4,8 +4,8 @@ import { getMediaDimensions } from './getMediaDimensions'; export function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) { const { width, height } = useMediaDimensions ? getMediaDimensions(reference) - : reference - input.width = width - input.height = height - return { width, height } -} \ No newline at end of file + : reference; + input.width = width; + input.height = height; + return { width, height }; +} diff --git a/src/dom/resolveInput.ts b/src/dom/resolveInput.ts index 51af6e2..a6fc611 100644 --- a/src/dom/resolveInput.ts +++ b/src/dom/resolveInput.ts @@ -2,7 +2,7 @@ import { env } from '../env/index'; export function resolveInput(arg: string | any) { if (!env.isNodejs() && typeof arg === 'string') { - return document.getElementById(arg) + return document.getElementById(arg); } - return arg -} \ No newline at end of file + return arg; +} diff --git a/src/dom/toNetInput.ts b/src/dom/toNetInput.ts index c310970..7d8d5bc 100644 --- a/src/dom/toNetInput.ts +++ b/src/dom/toNetInput.ts @@ -14,44 +14,43 @@ import { TNetInput } from './types'; */ export async function toNetInput(inputs: TNetInput): Promise { if (inputs instanceof NetInput) { - return inputs + return inputs; } - let inputArgArray = Array.isArray(inputs) - ? inputs - : [inputs] + const inputArgArray = Array.isArray(inputs) + ? inputs + : [inputs]; if (!inputArgArray.length) { - throw new Error('toNetInput - empty array passed as input') + throw new Error('toNetInput - empty array passed as input'); } - const getIdxHint = (idx: number) => Array.isArray(inputs) ? ` at input index ${idx}:` : '' + const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : ''); - const inputArray = inputArgArray.map(resolveInput) + const inputArray = inputArgArray.map(resolveInput); inputArray.forEach((input, i) => { if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) { - if (typeof inputArgArray[i] === 'string') { - throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`) + throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`); } - throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`) + throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`); } if (isTensor4D(input)) { // if tf.Tensor4D is passed in the input array, the batch size has to be 1 - const batchSize = input.shape[0] + const batchSize = input.shape[0]; if (batchSize !== 1) { - throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`) + throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`); } } - }) + }); // wait for all media elements being loaded await Promise.all( - inputArray.map(input => isMediaElement(input) && awaitMediaLoaded(input)) - ) + inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)), + ); - return new NetInput(inputArray, Array.isArray(inputs)) -} \ No newline at end of file + return new NetInput(inputArray, Array.isArray(inputs)); +} diff --git a/src/dom/types.ts b/src/dom/types.ts index ace427b..a03b484 100644 --- a/src/dom/types.ts +++ b/src/dom/types.ts @@ -8,4 +8,4 @@ export type TResolvedNetInput = TMediaElement | tf.Tensor3D | tf.Tensor4D export type TNetInputArg = string | TResolvedNetInput -export type TNetInput = TNetInputArg | Array | NetInput | tf.Tensor4D \ No newline at end of file +export type TNetInput = TNetInputArg | Array | NetInput | tf.Tensor4D diff --git a/src/draw/DrawBox.ts b/src/draw/DrawBox.ts index cbe3645..72a4166 100644 --- a/src/draw/DrawBox.ts +++ b/src/draw/DrawBox.ts @@ -1,6 +1,9 @@ +/* eslint-disable max-classes-per-file */ import { Box, IBoundingBox, IRect } from '../classes/index'; import { getContext2dOrThrow } from '../dom/getContext2dOrThrow'; -import { AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions } from './DrawTextField'; +import { + AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions, +} from './DrawTextField'; export interface IDrawBoxOptions { boxColor?: string @@ -11,49 +14,57 @@ export interface IDrawBoxOptions { export class DrawBoxOptions { public boxColor: string + public lineWidth: number + public drawLabelOptions: DrawTextFieldOptions + public label?: string constructor(options: IDrawBoxOptions = {}) { - const { boxColor, lineWidth, label, drawLabelOptions } = options - this.boxColor = boxColor || 'rgba(0, 0, 255, 1)' - this.lineWidth = lineWidth || 2 - this.label = label + const { + boxColor, lineWidth, label, drawLabelOptions, + } = options; + this.boxColor = boxColor || 'rgba(0, 0, 255, 1)'; + this.lineWidth = lineWidth || 2; + this.label = label; const defaultDrawLabelOptions = { anchorPosition: AnchorPosition.BOTTOM_LEFT, - backgroundColor: this.boxColor - } - this.drawLabelOptions = new DrawTextFieldOptions(Object.assign({}, defaultDrawLabelOptions, drawLabelOptions)) + backgroundColor: this.boxColor, + }; + this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions }); } } export class DrawBox { public box: Box + public options: DrawBoxOptions constructor( box: IBoundingBox | IRect, - options: IDrawBoxOptions = {} + options: IDrawBoxOptions = {}, ) { - this.box = new Box(box) - this.options = new DrawBoxOptions(options) + this.box = new Box(box); + this.options = new DrawBoxOptions(options); } draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) { - const ctx = getContext2dOrThrow(canvasArg) + const ctx = getContext2dOrThrow(canvasArg); - const { boxColor, lineWidth } = this.options + const { boxColor, lineWidth } = this.options; - const { x, y, width, height } = this.box - ctx.strokeStyle = boxColor - ctx.lineWidth = lineWidth - ctx.strokeRect(x, y, width, height) + const { + x, y, width, height, + } = this.box; + ctx.strokeStyle = boxColor; + ctx.lineWidth = lineWidth; + ctx.strokeRect(x, y, width, height); - const { label } = this.options + const { label } = this.options; if (label) { - new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg) + new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg); } } -} \ No newline at end of file +} diff --git a/src/draw/DrawFaceLandmarks.ts b/src/draw/DrawFaceLandmarks.ts index f411f7d..8941710 100644 --- a/src/draw/DrawFaceLandmarks.ts +++ b/src/draw/DrawFaceLandmarks.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-classes-per-file */ import { IPoint } from '../classes/index'; import { FaceLandmarks } from '../classes/FaceLandmarks'; import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; @@ -17,62 +18,72 @@ export interface IDrawFaceLandmarksOptions { export class DrawFaceLandmarksOptions { public drawLines: boolean + public drawPoints: boolean + public lineWidth: number + public pointSize: number + public lineColor: string + public pointColor: string constructor(options: IDrawFaceLandmarksOptions = {}) { - const { drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor } = options - this.drawLines = drawLines - this.drawPoints = drawPoints - this.lineWidth = lineWidth || 1 - this.pointSize = pointSize || 2 - this.lineColor = lineColor || 'rgba(0, 255, 255, 1)' - this.pointColor = pointColor || 'rgba(255, 0, 255, 1)' + const { + drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor, + } = options; + this.drawLines = drawLines; + this.drawPoints = drawPoints; + this.lineWidth = lineWidth || 1; + this.pointSize = pointSize || 2; + this.lineColor = lineColor || 'rgba(0, 255, 255, 1)'; + this.pointColor = pointColor || 'rgba(255, 0, 255, 1)'; } } export class DrawFaceLandmarks { public faceLandmarks: FaceLandmarks + public options: DrawFaceLandmarksOptions constructor( faceLandmarks: FaceLandmarks, - options: IDrawFaceLandmarksOptions = {} + options: IDrawFaceLandmarksOptions = {}, ) { - this.faceLandmarks = faceLandmarks - this.options = new DrawFaceLandmarksOptions(options) + this.faceLandmarks = faceLandmarks; + this.options = new DrawFaceLandmarksOptions(options); } draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) { - const ctx = getContext2dOrThrow(canvasArg) + const ctx = getContext2dOrThrow(canvasArg); - const { drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor } = this.options + const { + drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor, + } = this.options; if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) { - ctx.strokeStyle = lineColor - ctx.lineWidth = lineWidth - drawContour(ctx, this.faceLandmarks.getJawOutline()) - drawContour(ctx, this.faceLandmarks.getLeftEyeBrow()) - drawContour(ctx, this.faceLandmarks.getRightEyeBrow()) - drawContour(ctx, this.faceLandmarks.getNose()) - drawContour(ctx, this.faceLandmarks.getLeftEye(), true) - drawContour(ctx, this.faceLandmarks.getRightEye(), true) - drawContour(ctx, this.faceLandmarks.getMouth(), true) + ctx.strokeStyle = lineColor; + ctx.lineWidth = lineWidth; + drawContour(ctx, this.faceLandmarks.getJawOutline()); + drawContour(ctx, this.faceLandmarks.getLeftEyeBrow()); + drawContour(ctx, this.faceLandmarks.getRightEyeBrow()); + drawContour(ctx, this.faceLandmarks.getNose()); + drawContour(ctx, this.faceLandmarks.getLeftEye(), true); + drawContour(ctx, this.faceLandmarks.getRightEye(), true); + drawContour(ctx, this.faceLandmarks.getMouth(), true); } if (drawPoints) { - ctx.strokeStyle = pointColor - ctx.fillStyle = pointColor + ctx.strokeStyle = pointColor; + ctx.fillStyle = pointColor; const drawPoint = (pt: IPoint) => { - ctx.beginPath() - ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI) - ctx.fill() - } - this.faceLandmarks.positions.forEach(drawPoint) + ctx.beginPath(); + ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI); + ctx.fill(); + }; + this.faceLandmarks.positions.forEach(drawPoint); } } } @@ -81,17 +92,18 @@ export type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks + faceLandmarks: DrawFaceLandmarksInput | Array, ) { - const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks] - faceLandmarksArray.forEach(f => { + const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks]; + faceLandmarksArray.forEach((f) => { + // eslint-disable-next-line no-nested-ternary const landmarks = f instanceof FaceLandmarks ? f - : (isWithFaceLandmarks(f) ? f.landmarks : undefined) + : (isWithFaceLandmarks(f) ? f.landmarks : undefined); if (!landmarks) { - throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof') + throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof'); } - new DrawFaceLandmarks(landmarks).draw(canvasArg) - }) -} \ No newline at end of file + new DrawFaceLandmarks(landmarks).draw(canvasArg); + }); +} diff --git a/src/draw/DrawTextField.ts b/src/draw/DrawTextField.ts index f3f228d..89c0f47 100644 --- a/src/draw/DrawTextField.ts +++ b/src/draw/DrawTextField.ts @@ -1,11 +1,17 @@ +/* eslint-disable max-classes-per-file */ import { IDimensions, IPoint } from '../classes/index'; import { getContext2dOrThrow } from '../dom/getContext2dOrThrow'; import { resolveInput } from '../dom/resolveInput'; +// eslint-disable-next-line no-shadow export enum AnchorPosition { + // eslint-disable-next-line no-unused-vars TOP_LEFT = 'TOP_LEFT', + // eslint-disable-next-line no-unused-vars TOP_RIGHT = 'TOP_RIGHT', + // eslint-disable-next-line no-unused-vars BOTTOM_LEFT = 'BOTTOM_LEFT', + // eslint-disable-next-line no-unused-vars BOTTOM_RIGHT = 'BOTTOM_RIGHT' } @@ -20,89 +26,101 @@ export interface IDrawTextFieldOptions { export class DrawTextFieldOptions implements IDrawTextFieldOptions { public anchorPosition: AnchorPosition + public backgroundColor: string + public fontColor: string + public fontSize: number + public fontStyle: string + public padding: number constructor(options: IDrawTextFieldOptions = {}) { - const { anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding } = options - this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT - this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)' - this.fontColor = fontColor || 'rgba(255, 255, 255, 1)' - this.fontSize = fontSize || 14 - this.fontStyle = fontStyle || 'Georgia' - this.padding = padding || 4 + const { + anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding, + } = options; + this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT; + this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)'; + this.fontColor = fontColor || 'rgba(255, 255, 255, 1)'; + this.fontSize = fontSize || 14; + this.fontStyle = fontStyle || 'Georgia'; + this.padding = padding || 4; } } export class DrawTextField { public text: string[] + public anchor : IPoint + public options: DrawTextFieldOptions constructor( text: string | string[] | DrawTextField, anchor: IPoint, - options: IDrawTextFieldOptions = {} + options: IDrawTextFieldOptions = {}, ) { + // eslint-disable-next-line no-nested-ternary this.text = typeof text === 'string' ? [text] - : (text instanceof DrawTextField ? text.text : text) - this.anchor = anchor - this.options = new DrawTextFieldOptions(options) + : (text instanceof DrawTextField ? text.text : text); + this.anchor = anchor; + this.options = new DrawTextFieldOptions(options); } measureWidth(ctx: CanvasRenderingContext2D): number { - const { padding } = this.options - return this.text.map(l => ctx.measureText(l).width).reduce((w0, w1) => w0 < w1 ? w1 : w0, 0) + (2 * padding) + const { padding } = this.options; + return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding); } measureHeight(): number { - const { fontSize, padding } = this.options - return this.text.length * fontSize + (2 * padding) + const { fontSize, padding } = this.options; + return this.text.length * fontSize + (2 * padding); } getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint { - const { anchorPosition } = this.options - const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT - const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT + const { anchorPosition } = this.options; + const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT; + const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT; - const textFieldWidth = this.measureWidth(ctx) - const textFieldHeight = this.measureHeight() - const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x) - const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y + const textFieldWidth = this.measureWidth(ctx); + const textFieldHeight = this.measureHeight(); + const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x); + const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y; // adjust anchor if text box exceeds canvas borders if (canvasDims) { - const { width, height } = canvasDims - const newX = Math.max(Math.min(x, width - textFieldWidth), 0) - const newY = Math.max(Math.min(y, height - textFieldHeight), 0) - return { x: newX, y: newY } + const { width, height } = canvasDims; + const newX = Math.max(Math.min(x, width - textFieldWidth), 0); + const newY = Math.max(Math.min(y, height - textFieldHeight), 0); + return { x: newX, y: newY }; } - return { x, y } + return { x, y }; } draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) { - const canvas = resolveInput(canvasArg) - const ctx = getContext2dOrThrow(canvas) + const canvas = resolveInput(canvasArg); + const ctx = getContext2dOrThrow(canvas); - const { backgroundColor, fontColor, fontSize, fontStyle, padding } = this.options + const { + backgroundColor, fontColor, fontSize, fontStyle, padding, + } = this.options; - ctx.font = `${fontSize}px ${fontStyle}` - const maxTextWidth = this.measureWidth(ctx) - const textHeight = this.measureHeight() + ctx.font = `${fontSize}px ${fontStyle}`; + const maxTextWidth = this.measureWidth(ctx); + const textHeight = this.measureHeight(); - ctx.fillStyle = backgroundColor - const upperLeft = this.getUpperLeft(ctx, canvas) - ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight) + ctx.fillStyle = backgroundColor; + const upperLeft = this.getUpperLeft(ctx, canvas); + ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight); ctx.fillStyle = fontColor; this.text.forEach((textLine, i) => { - const x = padding + upperLeft.x - const y = padding + upperLeft.y + ((i + 1) * fontSize) - ctx.fillText(textLine, x, y) - }) + const x = padding + upperLeft.x; + const y = padding + upperLeft.y + ((i + 1) * fontSize); + ctx.fillText(textLine, x, y); + }); } -} \ No newline at end of file +} diff --git a/src/draw/drawContour.ts b/src/draw/drawContour.ts index d55766e..6db9511 100644 --- a/src/draw/drawContour.ts +++ b/src/draw/drawContour.ts @@ -3,26 +3,26 @@ import { Point } from '../classes/index'; export function drawContour( ctx: CanvasRenderingContext2D, points: Point[], - isClosed: boolean = false + isClosed: boolean = false, ) { - ctx.beginPath() + ctx.beginPath(); points.slice(1).forEach(({ x, y }, prevIdx) => { - const from = points[prevIdx] - ctx.moveTo(from.x, from.y) - ctx.lineTo(x, y) - }) + const from = points[prevIdx]; + ctx.moveTo(from.x, from.y); + ctx.lineTo(x, y); + }); if (isClosed) { - const from = points[points.length - 1] - const to = points[0] + const from = points[points.length - 1]; + const to = points[0]; if (!from || !to) { - return + return; } - ctx.moveTo(from.x, from.y) - ctx.lineTo(to.x, to.y) + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); } - ctx.stroke() -} \ No newline at end of file + ctx.stroke(); +} diff --git a/src/draw/drawDetections.ts b/src/draw/drawDetections.ts index 10c3e44..5b22ac9 100644 --- a/src/draw/drawDetections.ts +++ b/src/draw/drawDetections.ts @@ -8,20 +8,22 @@ export type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFa export function drawDetections( canvasArg: string | HTMLCanvasElement, - detections: TDrawDetectionsInput | Array + detections: TDrawDetectionsInput | Array, ) { - const detectionsArray = Array.isArray(detections) ? detections : [detections] + const detectionsArray = Array.isArray(detections) ? detections : [detections]; - detectionsArray.forEach(det => { + detectionsArray.forEach((det) => { + // eslint-disable-next-line no-nested-ternary const score = det instanceof FaceDetection ? det.score - : (isWithFaceDetection(det) ? det.detection.score : undefined) + : (isWithFaceDetection(det) ? det.detection.score : undefined); + // eslint-disable-next-line no-nested-ternary const box = det instanceof FaceDetection ? det.box - : (isWithFaceDetection(det) ? det.detection.box : new Box(det)) + : (isWithFaceDetection(det) ? det.detection.box : new Box(det)); - const label = score ? `${round(score)}` : undefined - new DrawBox(box, { label }).draw(canvasArg) - }) -} \ No newline at end of file + const label = score ? `${round(score)}` : undefined; + new DrawBox(box, { label }).draw(canvasArg); + }); +} diff --git a/src/draw/drawFaceExpressions.ts b/src/draw/drawFaceExpressions.ts index 5bf1631..7cbb2a0 100644 --- a/src/draw/drawFaceExpressions.ts +++ b/src/draw/drawFaceExpressions.ts @@ -11,29 +11,30 @@ export function drawFaceExpressions( canvasArg: string | HTMLCanvasElement, faceExpressions: DrawFaceExpressionsInput | Array, minConfidence = 0.1, - textFieldAnchor?: IPoint + textFieldAnchor?: IPoint, ) { - const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions] + const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions]; - faceExpressionsArray.forEach(e => { + faceExpressionsArray.forEach((e) => { + // eslint-disable-next-line no-nested-ternary const expr = e instanceof FaceExpressions ? e - : (isWithFaceExpressions(e) ? e.expressions : undefined) + : (isWithFaceExpressions(e) ? e.expressions : undefined); if (!expr) { - throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof') + throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof'); } - const sorted = expr.asSortedArray() - const resultsToDisplay = sorted.filter(expr => expr.probability > minConfidence) + const sorted = expr.asSortedArray(); + const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence); const anchor = isWithFaceDetection(e) ? e.detection.box.bottomLeft - : (textFieldAnchor || new Point(0, 0)) + : (textFieldAnchor || new Point(0, 0)); const drawTextField = new DrawTextField( - resultsToDisplay.map(expr => `${expr.expression} (${round(expr.probability)})`), - anchor - ) - drawTextField.draw(canvasArg) - }) -} \ No newline at end of file + resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`), + anchor, + ); + drawTextField.draw(canvasArg); + }); +} diff --git a/src/draw/index.ts b/src/draw/index.ts index 5c75651..520d940 100644 --- a/src/draw/index.ts +++ b/src/draw/index.ts @@ -1,6 +1,6 @@ -export * from './drawContour' -export * from './drawDetections' -export * from './drawFaceExpressions' -export * from './DrawBox' -export * from './DrawFaceLandmarks' -export * from './DrawTextField' \ No newline at end of file +export * from './drawContour'; +export * from './drawDetections'; +export * from './drawFaceExpressions'; +export * from './DrawBox'; +export * from './DrawFaceLandmarks'; +export * from './DrawTextField'; diff --git a/src/env/createBrowserEnv.ts b/src/env/createBrowserEnv.ts index 28cba43..f9d6124 100644 --- a/src/env/createBrowserEnv.ts +++ b/src/env/createBrowserEnv.ts @@ -1,24 +1,22 @@ import { Environment } from './types'; export function createBrowserEnv(): Environment { + const fetch = window.fetch; + if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment'); - const fetch = window['fetch'] || function() { - throw new Error('fetch - missing fetch implementation for browser environment') - } - - const readFile = function() { - throw new Error('readFile - filesystem not available for browser environment') - } + const readFile = () => { + throw new Error('readFile - filesystem not available for browser environment'); + }; return { Canvas: HTMLCanvasElement, - CanvasRenderingContext2D: CanvasRenderingContext2D, + CanvasRenderingContext2D, Image: HTMLImageElement, - ImageData: ImageData, + ImageData, Video: HTMLVideoElement, createCanvasElement: () => document.createElement('canvas'), createImageElement: () => document.createElement('img'), fetch, - readFile - } -} \ No newline at end of file + readFile, + }; +} diff --git a/src/env/createFileSystem.ts b/src/env/createFileSystem.ts index 17344bd..971b3d7 100644 --- a/src/env/createFileSystem.ts +++ b/src/env/createFileSystem.ts @@ -1,30 +1,26 @@ import { FileSystem } from './types'; export function createFileSystem(fs?: any): FileSystem { - - let requireFsError = '' + let requireFsError = ''; if (!fs) { try { - fs = require('fs') + // eslint-disable-next-line global-require + fs = require('fs'); } catch (err) { - requireFsError = err.toString() + requireFsError = err.toString(); } } const readFile = fs - ? function(filePath: string) { - return new Promise((res, rej) => { - fs.readFile(filePath, function(err: any, buffer: Buffer) { - return err ? rej(err) : res(buffer) - }) - }) - } - : function() { - throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`) - } + ? (filePath: string) => new Promise((resolve, reject) => { + fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer))); + }) + : () => { + throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`); + }; return { - readFile - } -} \ No newline at end of file + readFile, + }; +} diff --git a/src/env/createNodejsEnv.ts b/src/env/createNodejsEnv.ts index 4a5e641..3f624a4 100644 --- a/src/env/createNodejsEnv.ts +++ b/src/env/createNodejsEnv.ts @@ -1,40 +1,36 @@ +/* eslint-disable max-classes-per-file */ import { createFileSystem } from './createFileSystem'; import { Environment } from './types'; export function createNodejsEnv(): Environment { + // eslint-disable-next-line dot-notation + const Canvas = global['Canvas'] || global.HTMLCanvasElement; + const Image = global.Image || global.HTMLImageElement; - const Canvas = global['Canvas'] || global['HTMLCanvasElement'] - const Image = global['Image'] || global['HTMLImageElement'] + const createCanvasElement = () => { + if (Canvas) return new Canvas(); + throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment'); + }; - const createCanvasElement = function() { - if (Canvas) { - return new Canvas() - } - throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment') - } + const createImageElement = () => { + if (Image) return new Image(); + throw new Error('createImageElement - missing Image implementation for nodejs environment'); + }; - const createImageElement = function() { - if (Image) { - return new Image() - } - throw new Error('createImageElement - missing Image implementation for nodejs environment') - } + const fetch = global.fetch; + // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment'); - const fetch = global['fetch'] || function() { - throw new Error('fetch - missing fetch implementation for nodejs environment') - } - - const fileSystem = createFileSystem() + const fileSystem = createFileSystem(); return { Canvas: Canvas || class {}, - CanvasRenderingContext2D: global['CanvasRenderingContext2D'] || class {}, + CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {}, Image: Image || class {}, - ImageData: global['ImageData'] || class {}, - Video: global['HTMLVideoElement'] || class {}, + ImageData: global.ImageData || class {}, + Video: global.HTMLVideoElement || class {}, createCanvasElement, createImageElement, fetch, - ...fileSystem - } -} \ No newline at end of file + ...fileSystem, + }; +} diff --git a/src/env/index.ts b/src/env/index.ts index 832f97c..2c84f0b 100644 --- a/src/env/index.ts +++ b/src/env/index.ts @@ -5,49 +5,46 @@ import { isBrowser } from './isBrowser'; import { isNodejs } from './isNodejs'; import { Environment } from './types'; -let environment: Environment | null +let environment: Environment | null; function getEnv(): Environment { if (!environment) { - throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()') + throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()'); } - return environment + return environment; } function setEnv(env: Environment) { - environment = env + environment = env; } function initialize() { // check for isBrowser() first to prevent electron renderer process // to be initialized with wrong environment due to isNodejs() returning true - if (isBrowser()) { - return setEnv(createBrowserEnv()) - } - if (isNodejs()) { - return setEnv(createNodejsEnv()) - } + if (isBrowser()) return setEnv(createBrowserEnv()); + if (isNodejs()) return setEnv(createNodejsEnv()); + return null; } function monkeyPatch(env: Partial) { if (!environment) { - initialize() + initialize(); } if (!environment) { - throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()') + throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()'); } - const { Canvas = environment.Canvas, Image = environment.Image } = env - environment.Canvas = Canvas - environment.Image = Image - environment.createCanvasElement = env.createCanvasElement || (() => new Canvas()) - environment.createImageElement = env.createImageElement || (() => new Image()) + const { Canvas = environment.Canvas, Image = environment.Image } = env; + environment.Canvas = Canvas; + environment.Image = Image; + environment.createCanvasElement = env.createCanvasElement || (() => new Canvas()); + environment.createImageElement = env.createImageElement || (() => new Image()); - environment.ImageData = env.ImageData || environment.ImageData - environment.Video = env.Video || environment.Video - environment.fetch = env.fetch || environment.fetch - environment.readFile = env.readFile || environment.readFile + environment.ImageData = env.ImageData || environment.ImageData; + environment.Video = env.Video || environment.Video; + environment.fetch = env.fetch || environment.fetch; + environment.readFile = env.readFile || environment.readFile; } export const env = { @@ -59,9 +56,9 @@ export const env = { createNodejsEnv, monkeyPatch, isBrowser, - isNodejs -} + isNodejs, +}; -initialize() +initialize(); -export * from './types' +export * from './types'; diff --git a/src/env/isBrowser.ts b/src/env/isBrowser.ts index 9dc5914..6c9bcdd 100644 --- a/src/env/isBrowser.ts +++ b/src/env/isBrowser.ts @@ -5,5 +5,5 @@ export function isBrowser(): boolean { && typeof HTMLCanvasElement !== 'undefined' && typeof HTMLVideoElement !== 'undefined' && typeof ImageData !== 'undefined' - && typeof CanvasRenderingContext2D !== 'undefined' -} \ No newline at end of file + && typeof CanvasRenderingContext2D !== 'undefined'; +} diff --git a/src/env/isNodejs.ts b/src/env/isNodejs.ts index cd43dca..a00c174 100644 --- a/src/env/isNodejs.ts +++ b/src/env/isNodejs.ts @@ -4,5 +4,5 @@ export function isNodejs(): boolean { && typeof module !== 'undefined' // issues with gatsby.js: module.exports is undefined // && !!module.exports - && typeof process !== 'undefined' && !!process.version -} \ No newline at end of file + && typeof process !== 'undefined' && !!process.version; +} diff --git a/src/env/types.ts b/src/env/types.ts index fb767c0..ba02a38 100644 --- a/src/env/types.ts +++ b/src/env/types.ts @@ -1,4 +1,5 @@ export type FileSystem = { + // eslint-disable-next-line no-unused-vars readFile: (filePath: string) => Promise } @@ -10,5 +11,6 @@ export type Environment = FileSystem & { Video: typeof HTMLVideoElement createCanvasElement: () => HTMLCanvasElement createImageElement: () => HTMLImageElement + // eslint-disable-next-line no-undef, no-unused-vars fetch: (url: string, init?: RequestInit) => Promise } diff --git a/src/faceExpressionNet/FaceExpressionNet.ts b/src/faceExpressionNet/FaceExpressionNet.ts index 95fc2b3..9b8f3b3 100644 --- a/src/faceExpressionNet/FaceExpressionNet.ts +++ b/src/faceExpressionNet/FaceExpressionNet.ts @@ -7,46 +7,45 @@ import { FaceProcessor } from '../faceProcessor/FaceProcessor'; import { FaceExpressions } from './FaceExpressions'; export class FaceExpressionNet extends FaceProcessor { - constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) { - super('FaceExpressionNet', faceFeatureExtractor) + super('FaceExpressionNet', faceFeatureExtractor); } public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D { - return tf.tidy(() => tf.softmax(this.runNet(input))) + return tf.tidy(() => tf.softmax(this.runNet(input))); } public async forward(input: TNetInput): Promise { - return this.forwardInput(await toNetInput(input)) + return this.forwardInput(await toNetInput(input)); } public async predictExpressions(input: TNetInput) { - const netInput = await toNetInput(input) - const out = await this.forwardInput(netInput) - const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async t => { - const data = await t.data() - t.dispose() - return data - })) - out.dispose() + const netInput = await toNetInput(input); + const out = await this.forwardInput(netInput); + const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => { + const data = await t.data(); + t.dispose(); + return data; + })); + out.dispose(); const predictionsByBatch = probabilitesByBatch - .map(probabilites => new FaceExpressions(probabilites as Float32Array)) + .map((probabilites) => new FaceExpressions(probabilites as Float32Array)); return netInput.isBatchInput ? predictionsByBatch - : predictionsByBatch[0] + : predictionsByBatch[0]; } protected getDefaultModelName(): string { - return 'face_expression_model' + return 'face_expression_model'; } protected getClassifierChannelsIn(): number { - return 256 + return 256; } protected getClassifierChannelsOut(): number { - return 7 + return 7; } -} \ No newline at end of file +} diff --git a/src/faceExpressionNet/FaceExpressions.ts b/src/faceExpressionNet/FaceExpressions.ts index 93cd2ac..5ce8f0b 100644 --- a/src/faceExpressionNet/FaceExpressions.ts +++ b/src/faceExpressionNet/FaceExpressions.ts @@ -1,27 +1,33 @@ -export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'] +export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised']; export class FaceExpressions { public neutral: number + public happy: number + public sad: number + public angry: number + public fearful: number + public disgusted: number + public surprised: number constructor(probabilities: number[] | Float32Array) { if (probabilities.length !== 7) { - throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`) + throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`); } FACE_EXPRESSION_LABELS.forEach((expression, idx) => { - this[expression] = probabilities[idx] - }) + this[expression] = probabilities[idx]; + }); } asSortedArray() { return FACE_EXPRESSION_LABELS - .map(expression => ({ expression, probability: this[expression] as number })) - .sort((e0, e1) => e1.probability - e0.probability) + .map((expression) => ({ expression, probability: this[expression] as number })) + .sort((e0, e1) => e1.probability - e0.probability); } -} \ No newline at end of file +} diff --git a/src/faceExpressionNet/index.ts b/src/faceExpressionNet/index.ts index 2736349..d79c683 100644 --- a/src/faceExpressionNet/index.ts +++ b/src/faceExpressionNet/index.ts @@ -1,2 +1,2 @@ export * from './FaceExpressionNet'; -export * from './FaceExpressions'; \ No newline at end of file +export * from './FaceExpressions'; diff --git a/src/faceFeatureExtractor/FaceFeatureExtractor.ts b/src/faceFeatureExtractor/FaceFeatureExtractor.ts index 785b976..6015e00 100644 --- a/src/faceFeatureExtractor/FaceFeatureExtractor.ts +++ b/src/faceFeatureExtractor/FaceFeatureExtractor.ts @@ -9,47 +9,45 @@ import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; import { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types'; export class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { - constructor() { - super('FaceFeatureExtractor') + super('FaceFeatureExtractor'); } public forwardInput(input: NetInput): tf.Tensor4D { - - const { params } = this + const { params } = this; if (!params) { - throw new Error('FaceFeatureExtractor - load model before inference') + throw new Error('FaceFeatureExtractor - load model before inference'); } return tf.tidy(() => { const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32'); - const meanRgb = [122.782, 117.001, 104.298] - const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D + const meanRgb = [122.782, 117.001, 104.298]; + const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D; - let out = denseBlock4(normalized, params.dense0, true) - out = denseBlock4(out, params.dense1) - out = denseBlock4(out, params.dense2) - out = denseBlock4(out, params.dense3) - out = tf.avgPool(out, [7, 7], [2, 2], 'valid') + let out = denseBlock4(normalized, params.dense0, true); + out = denseBlock4(out, params.dense1); + out = denseBlock4(out, params.dense2); + out = denseBlock4(out, params.dense3); + out = tf.avgPool(out, [7, 7], [2, 2], 'valid'); - return out - }) + return out; + }); } public async forward(input: TNetInput): Promise { - return this.forwardInput(await toNetInput(input)) + return this.forwardInput(await toNetInput(input)); } protected getDefaultModelName(): string { - return 'face_feature_extractor_model' + return 'face_feature_extractor_model'; } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) { - return extractParamsFromWeigthMap(weightMap) + return extractParamsFromWeigthMap(weightMap); } protected extractParams(weights: Float32Array) { - return extractParams(weights) + return extractParams(weights); } -} \ No newline at end of file +} diff --git a/src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts b/src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts index 251fc47..f6a0e14 100644 --- a/src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts +++ b/src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts @@ -9,46 +9,44 @@ import { extractParamsTiny } from './extractParamsTiny'; import { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types'; export class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { - constructor() { - super('TinyFaceFeatureExtractor') + super('TinyFaceFeatureExtractor'); } public forwardInput(input: NetInput): tf.Tensor4D { - - const { params } = this + const { params } = this; if (!params) { - throw new Error('TinyFaceFeatureExtractor - load model before inference') + throw new Error('TinyFaceFeatureExtractor - load model before inference'); } return tf.tidy(() => { const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32'); - const meanRgb = [122.782, 117.001, 104.298] - const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D + const meanRgb = [122.782, 117.001, 104.298]; + const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D; - let out = denseBlock3(normalized, params.dense0, true) - out = denseBlock3(out, params.dense1) - out = denseBlock3(out, params.dense2) - out = tf.avgPool(out, [14, 14], [2, 2], 'valid') + let out = denseBlock3(normalized, params.dense0, true); + out = denseBlock3(out, params.dense1); + out = denseBlock3(out, params.dense2); + out = tf.avgPool(out, [14, 14], [2, 2], 'valid'); - return out - }) + return out; + }); } public async forward(input: TNetInput): Promise { - return this.forwardInput(await toNetInput(input)) + return this.forwardInput(await toNetInput(input)); } protected getDefaultModelName(): string { - return 'face_feature_extractor_tiny_model' + return 'face_feature_extractor_tiny_model'; } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) { - return extractParamsFromWeigthMapTiny(weightMap) + return extractParamsFromWeigthMapTiny(weightMap); } protected extractParams(weights: Float32Array) { - return extractParamsTiny(weights) + return extractParamsTiny(weights); } -} \ No newline at end of file +} diff --git a/src/faceFeatureExtractor/denseBlock.ts b/src/faceFeatureExtractor/denseBlock.ts index a78e032..f3f7132 100644 --- a/src/faceFeatureExtractor/denseBlock.ts +++ b/src/faceFeatureExtractor/denseBlock.ts @@ -7,49 +7,49 @@ import { DenseBlock3Params, DenseBlock4Params } from './types'; export function denseBlock3( x: tf.Tensor4D, denseBlockParams: DenseBlock3Params, - isFirstLayer: boolean = false + isFirstLayer: boolean = false, ): tf.Tensor4D { return tf.tidy(() => { const out1 = tf.relu( isFirstLayer ? tf.add( tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'), - denseBlockParams.conv0.bias + denseBlockParams.conv0.bias, ) - : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]) - ) as tf.Tensor4D - const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]) + : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]), + ) as tf.Tensor4D; + const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]); - const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D - const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]) + const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D; + const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]); - return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D - }) + return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D; + }); } export function denseBlock4( x: tf.Tensor4D, denseBlockParams: DenseBlock4Params, isFirstLayer: boolean = false, - isScaleDown: boolean = true + isScaleDown: boolean = true, ): tf.Tensor4D { return tf.tidy(() => { const out1 = tf.relu( isFirstLayer ? tf.add( tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'), - denseBlockParams.conv0.bias + denseBlockParams.conv0.bias, ) - : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]) - ) as tf.Tensor4D - const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]) + : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]), + ) as tf.Tensor4D; + const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]); - const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D - const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]) + const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D; + const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]); - const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D - const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]) + const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D; + const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]); - return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D - }) + return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D; + }); } diff --git a/src/faceFeatureExtractor/extractParams.ts b/src/faceFeatureExtractor/extractParams.ts index d00a9c9..754a50c 100644 --- a/src/faceFeatureExtractor/extractParams.ts +++ b/src/faceFeatureExtractor/extractParams.ts @@ -2,31 +2,31 @@ import { extractWeightsFactory, ParamMapping } from '../common/index'; import { extractorsFactory } from './extractorsFactory'; import { FaceFeatureExtractorParams } from './types'; - export function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractWeights, - getRemainingWeights - } = extractWeightsFactory(weights) + getRemainingWeights, + } = extractWeightsFactory(weights); const { - extractDenseBlock4Params - } = extractorsFactory(extractWeights, paramMappings) + extractDenseBlock4Params, + } = extractorsFactory(extractWeights, paramMappings); - const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true) - const dense1 = extractDenseBlock4Params(32, 64, 'dense1') - const dense2 = extractDenseBlock4Params(64, 128, 'dense2') - const dense3 = extractDenseBlock4Params(128, 256, 'dense3') + const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true); + const dense1 = extractDenseBlock4Params(32, 64, 'dense1'); + const dense2 = extractDenseBlock4Params(64, 128, 'dense2'); + const dense3 = extractDenseBlock4Params(128, 256, 'dense3'); if (getRemainingWeights().length !== 0) { - throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`) + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); } return { paramMappings, - params: { dense0, dense1, dense2, dense3 } - } -} \ No newline at end of file + params: { + dense0, dense1, dense2, dense3, + }, + }; +} diff --git a/src/faceFeatureExtractor/extractParamsFromWeigthMap.ts b/src/faceFeatureExtractor/extractParamsFromWeigthMap.ts index 6679a5c..a4e8a24 100644 --- a/src/faceFeatureExtractor/extractParamsFromWeigthMap.ts +++ b/src/faceFeatureExtractor/extractParamsFromWeigthMap.ts @@ -5,23 +5,22 @@ import { loadParamsFactory } from './loadParamsFactory'; import { FaceFeatureExtractorParams } from './types'; export function extractParamsFromWeigthMap( - weightMap: tf.NamedTensorMap + weightMap: tf.NamedTensorMap, ): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { - extractDenseBlock4Params - } = loadParamsFactory(weightMap, paramMappings) + extractDenseBlock4Params, + } = loadParamsFactory(weightMap, paramMappings); const params = { dense0: extractDenseBlock4Params('dense0', true), dense1: extractDenseBlock4Params('dense1'), dense2: extractDenseBlock4Params('dense2'), - dense3: extractDenseBlock4Params('dense3') - } + dense3: extractDenseBlock4Params('dense3'), + }; - disposeUnusedWeightTensors(weightMap, paramMappings) + disposeUnusedWeightTensors(weightMap, paramMappings); - return { params, paramMappings } -} \ No newline at end of file + return { params, paramMappings }; +} diff --git a/src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts b/src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts index 83ce199..94d4eaf 100644 --- a/src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts +++ b/src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts @@ -5,22 +5,21 @@ import { loadParamsFactory } from './loadParamsFactory'; import { TinyFaceFeatureExtractorParams } from './types'; export function extractParamsFromWeigthMapTiny( - weightMap: tf.NamedTensorMap + weightMap: tf.NamedTensorMap, ): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { - extractDenseBlock3Params - } = loadParamsFactory(weightMap, paramMappings) + extractDenseBlock3Params, + } = loadParamsFactory(weightMap, paramMappings); const params = { dense0: extractDenseBlock3Params('dense0', true), dense1: extractDenseBlock3Params('dense1'), - dense2: extractDenseBlock3Params('dense2') - } + dense2: extractDenseBlock3Params('dense2'), + }; - disposeUnusedWeightTensors(weightMap, paramMappings) + disposeUnusedWeightTensors(weightMap, paramMappings); - return { params, paramMappings } -} \ No newline at end of file + return { params, paramMappings }; +} diff --git a/src/faceFeatureExtractor/extractParamsTiny.ts b/src/faceFeatureExtractor/extractParamsTiny.ts index 3d9919b..86a86c8 100644 --- a/src/faceFeatureExtractor/extractParamsTiny.ts +++ b/src/faceFeatureExtractor/extractParamsTiny.ts @@ -2,31 +2,28 @@ import { extractWeightsFactory, ParamMapping } from '../common/index'; import { extractorsFactory } from './extractorsFactory'; import { TinyFaceFeatureExtractorParams } from './types'; - - export function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractWeights, - getRemainingWeights - } = extractWeightsFactory(weights) + getRemainingWeights, + } = extractWeightsFactory(weights); const { - extractDenseBlock3Params - } = extractorsFactory(extractWeights, paramMappings) + extractDenseBlock3Params, + } = extractorsFactory(extractWeights, paramMappings); - const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true) - const dense1 = extractDenseBlock3Params(32, 64, 'dense1') - const dense2 = extractDenseBlock3Params(64, 128, 'dense2') + const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true); + const dense1 = extractDenseBlock3Params(32, 64, 'dense1'); + const dense2 = extractDenseBlock3Params(64, 128, 'dense2'); if (getRemainingWeights().length !== 0) { - throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`) + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); } return { paramMappings, - params: { dense0, dense1, dense2 } - } -} \ No newline at end of file + params: { dense0, dense1, dense2 }, + }; +} diff --git a/src/faceFeatureExtractor/extractorsFactory.ts b/src/faceFeatureExtractor/extractorsFactory.ts index 9b74177..eae3eef 100644 --- a/src/faceFeatureExtractor/extractorsFactory.ts +++ b/src/faceFeatureExtractor/extractorsFactory.ts @@ -7,32 +7,30 @@ import { import { DenseBlock3Params, DenseBlock4Params } from './types'; export function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) { - - const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings) - const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings) + const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings); + const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings); function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params { - const conv0 = isFirstLayer ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`) - : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`) - const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`) - const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`) + : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`); + const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`); + const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`); - return { conv0, conv1, conv2 } + return { conv0, conv1, conv2 }; } function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params { + const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer); + const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`); - const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer) - const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`) - - return { conv0, conv1, conv2, conv3 } + return { + conv0, conv1, conv2, conv3, + }; } return { extractDenseBlock3Params, - extractDenseBlock4Params - } - -} \ No newline at end of file + extractDenseBlock4Params, + }; +} diff --git a/src/faceFeatureExtractor/index.ts b/src/faceFeatureExtractor/index.ts index ef6e1e3..99061f8 100644 --- a/src/faceFeatureExtractor/index.ts +++ b/src/faceFeatureExtractor/index.ts @@ -1,2 +1,2 @@ export * from './FaceFeatureExtractor'; -export * from './TinyFaceFeatureExtractor'; \ No newline at end of file +export * from './TinyFaceFeatureExtractor'; diff --git a/src/faceFeatureExtractor/loadParamsFactory.ts b/src/faceFeatureExtractor/loadParamsFactory.ts index 761201b..034e9ce 100644 --- a/src/faceFeatureExtractor/loadParamsFactory.ts +++ b/src/faceFeatureExtractor/loadParamsFactory.ts @@ -3,35 +3,36 @@ import { loadConvParamsFactory } from '../common/loadConvParamsFactory'; import { DenseBlock3Params, DenseBlock4Params } from './types'; export function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) { + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); - const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings) - - const extractConvParams = loadConvParamsFactory(extractWeightEntry) - const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry) + const extractConvParams = loadConvParamsFactory(extractWeightEntry); + const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry); function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params { const conv0 = isFirstLayer ? extractConvParams(`${prefix}/conv0`) - : extractSeparableConvParams(`${prefix}/conv0`) - const conv1 = extractSeparableConvParams(`${prefix}/conv1`) - const conv2 = extractSeparableConvParams(`${prefix}/conv2`) + : extractSeparableConvParams(`${prefix}/conv0`); + const conv1 = extractSeparableConvParams(`${prefix}/conv1`); + const conv2 = extractSeparableConvParams(`${prefix}/conv2`); - return { conv0, conv1, conv2 } + return { conv0, conv1, conv2 }; } function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params { const conv0 = isFirstLayer ? extractConvParams(`${prefix}/conv0`) - : extractSeparableConvParams(`${prefix}/conv0`) - const conv1 = extractSeparableConvParams(`${prefix}/conv1`) - const conv2 = extractSeparableConvParams(`${prefix}/conv2`) - const conv3 = extractSeparableConvParams(`${prefix}/conv3`) + : extractSeparableConvParams(`${prefix}/conv0`); + const conv1 = extractSeparableConvParams(`${prefix}/conv1`); + const conv2 = extractSeparableConvParams(`${prefix}/conv2`); + const conv3 = extractSeparableConvParams(`${prefix}/conv3`); - return { conv0, conv1, conv2, conv3 } + return { + conv0, conv1, conv2, conv3, + }; } return { extractDenseBlock3Params, - extractDenseBlock4Params - } -} \ No newline at end of file + extractDenseBlock4Params, + }; +} diff --git a/src/faceFeatureExtractor/types.ts b/src/faceFeatureExtractor/types.ts index 3bdd429..ff637e8 100644 --- a/src/faceFeatureExtractor/types.ts +++ b/src/faceFeatureExtractor/types.ts @@ -4,10 +4,6 @@ import { NetInput, TNetInput } from '../index'; import { ConvParams, SeparableConvParams } from '../common/index'; import { NeuralNetwork } from '../NeuralNetwork'; -export type ConvWithBatchNormParams = BatchNormParams & { - filter: tf.Tensor4D -} - export type BatchNormParams = { mean: tf.Tensor1D variance: tf.Tensor1D @@ -15,6 +11,10 @@ export type BatchNormParams = { offset: tf.Tensor1D } +export type ConvWithBatchNormParams = BatchNormParams & { + filter: tf.Tensor4D +} + export type SeparableConvWithBatchNormParams = { depthwise: ConvWithBatchNormParams pointwise: ConvWithBatchNormParams @@ -44,6 +44,8 @@ export type FaceFeatureExtractorParams = { } export interface IFaceFeatureExtractor extends NeuralNetwork { + // eslint-disable-next-line no-unused-vars forwardInput(input: NetInput): tf.Tensor4D + // eslint-disable-next-line no-unused-vars forward(input: TNetInput): Promise -} \ No newline at end of file +} diff --git a/src/faceLandmarkNet/FaceLandmark68Net.ts b/src/faceLandmarkNet/FaceLandmark68Net.ts index 7843388..529239b 100644 --- a/src/faceLandmarkNet/FaceLandmark68Net.ts +++ b/src/faceLandmarkNet/FaceLandmark68Net.ts @@ -3,16 +3,15 @@ import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; export class FaceLandmark68Net extends FaceLandmark68NetBase { - constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) { - super('FaceLandmark68Net', faceFeatureExtractor) + super('FaceLandmark68Net', faceFeatureExtractor); } protected getDefaultModelName(): string { - return 'face_landmark_68_model' + return 'face_landmark_68_model'; } protected getClassifierChannelsIn(): number { - return 256 + return 256; } -} \ No newline at end of file +} diff --git a/src/faceLandmarkNet/FaceLandmark68NetBase.ts b/src/faceLandmarkNet/FaceLandmark68NetBase.ts index 4e6a563..db11e08 100644 --- a/src/faceLandmarkNet/FaceLandmark68NetBase.ts +++ b/src/faceLandmarkNet/FaceLandmark68NetBase.ts @@ -11,92 +11,87 @@ export abstract class FaceLandmark68NetBase< TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams > extends FaceProcessor { - public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D { - const inputDimensions = originalDimensions.map(({ width, height }) => { - const scale = inputSize / Math.max(height, width) + const scale = inputSize / Math.max(height, width); return { width: width * scale, - height: height * scale - } - }) + height: height * scale, + }; + }); - const batchSize = inputDimensions.length + const batchSize = inputDimensions.length; return tf.tidy(() => { - const createInterleavedTensor = (fillX: number, fillY: number) => - tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D() + const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D(); + // eslint-disable-next-line no-unused-vars const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => { - const { width, height } = inputDimensions[batchIdx] - return cond(width, height) ? Math.abs(width - height) / 2 : 0 - } - const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h) - const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w) + const { width, height } = inputDimensions[batchIdx]; + return cond(width, height) ? Math.abs(width - height) / 2 : 0; + }; + + const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h); + const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w); const landmarkTensors = output .mul(tf.fill([batchSize, 136], inputSize, 'float32')) - .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => - createInterleavedTensor( - getPaddingX(batchIdx), - getPaddingY(batchIdx) - ) - ))) - .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => - createInterleavedTensor( - inputDimensions[batchIdx].width, - inputDimensions[batchIdx].height - ) - ))) + .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor( + getPaddingX(batchIdx), + getPaddingY(batchIdx), + )))) + .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor( + inputDimensions[batchIdx].width, + inputDimensions[batchIdx].height, + )))); - return landmarkTensors as tf.Tensor2D - }) + return landmarkTensors as tf.Tensor2D; + }); } public forwardInput(input: NetInput): tf.Tensor2D { return tf.tidy(() => { - const out = this.runNet(input) + const out = this.runNet(input); return this.postProcess( out, input.inputSize as number, - input.inputDimensions.map(([height, width]) => ({ height, width })) - ) - }) + input.inputDimensions.map(([height, width]) => ({ height, width })), + ); + }); } public async forward(input: TNetInput): Promise { - return this.forwardInput(await toNetInput(input)) + return this.forwardInput(await toNetInput(input)); } public async detectLandmarks(input: TNetInput): Promise { - const netInput = await toNetInput(input) + const netInput = await toNetInput(input); const landmarkTensors = tf.tidy( - () => tf.unstack(this.forwardInput(netInput)) - ) + () => tf.unstack(this.forwardInput(netInput)), + ); const landmarksForBatch = await Promise.all(landmarkTensors.map( async (landmarkTensor, batchIdx) => { - const landmarksArray = Array.from(await landmarkTensor.data()) - const xCoords = landmarksArray.filter((_, i) => isEven(i)) - const yCoords = landmarksArray.filter((_, i) => !isEven(i)) + const landmarksArray = Array.from(await landmarkTensor.data()); + const xCoords = landmarksArray.filter((_, i) => isEven(i)); + const yCoords = landmarksArray.filter((_, i) => !isEven(i)); return new FaceLandmarks68( Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)), { height: netInput.getInputHeight(batchIdx), - width : netInput.getInputWidth(batchIdx), - } - ) - } - )) + width: netInput.getInputWidth(batchIdx), + }, + ); + }, + )); - landmarkTensors.forEach(t => t.dispose()) + landmarkTensors.forEach((t) => t.dispose()); return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68; } protected getClassifierChannelsOut(): number { - return 136 + return 136; } -} \ No newline at end of file +} diff --git a/src/faceLandmarkNet/FaceLandmark68TinyNet.ts b/src/faceLandmarkNet/FaceLandmark68TinyNet.ts index b8ef88b..dd53ebe 100644 --- a/src/faceLandmarkNet/FaceLandmark68TinyNet.ts +++ b/src/faceLandmarkNet/FaceLandmark68TinyNet.ts @@ -3,16 +3,15 @@ import { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; export class FaceLandmark68TinyNet extends FaceLandmark68NetBase { - constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) { - super('FaceLandmark68TinyNet', faceFeatureExtractor) + super('FaceLandmark68TinyNet', faceFeatureExtractor); } protected getDefaultModelName(): string { - return 'face_landmark_68_tiny_model' + return 'face_landmark_68_tiny_model'; } protected getClassifierChannelsIn(): number { - return 128 + return 128; } -} \ No newline at end of file +} diff --git a/src/faceLandmarkNet/index.ts b/src/faceLandmarkNet/index.ts index 7343eb5..c1749ca 100644 --- a/src/faceLandmarkNet/index.ts +++ b/src/faceLandmarkNet/index.ts @@ -3,4 +3,4 @@ import { FaceLandmark68Net } from './FaceLandmark68Net'; export * from './FaceLandmark68Net'; export * from './FaceLandmark68TinyNet'; -export class FaceLandmarkNet extends FaceLandmark68Net {} \ No newline at end of file +export class FaceLandmarkNet extends FaceLandmark68Net {} diff --git a/src/faceProcessor/FaceProcessor.ts b/src/faceProcessor/FaceProcessor.ts index 8851a6c..5d5f998 100644 --- a/src/faceProcessor/FaceProcessor.ts +++ b/src/faceProcessor/FaceProcessor.ts @@ -17,72 +17,70 @@ export abstract class FaceProcessor< TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams > extends NeuralNetwork { - protected _faceFeatureExtractor: IFaceFeatureExtractor constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) { - super(_name) - this._faceFeatureExtractor = faceFeatureExtractor + super(_name); + this._faceFeatureExtractor = faceFeatureExtractor; } public get faceFeatureExtractor(): IFaceFeatureExtractor { - return this._faceFeatureExtractor + return this._faceFeatureExtractor; } protected abstract getDefaultModelName(): string + protected abstract getClassifierChannelsIn(): number + protected abstract getClassifierChannelsOut(): number public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D { - - const { params } = this + const { params } = this; if (!params) { - throw new Error(`${this._name} - load model before inference`) + throw new Error(`${this._name} - load model before inference`); } return tf.tidy(() => { const bottleneckFeatures = input instanceof NetInput ? this.faceFeatureExtractor.forwardInput(input) - : input - return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc) - }) + : input; + return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc); + }); } public dispose(throwOnRedispose: boolean = true) { - this.faceFeatureExtractor.dispose(throwOnRedispose) - super.dispose(throwOnRedispose) + this.faceFeatureExtractor.dispose(throwOnRedispose); + super.dispose(throwOnRedispose); } public loadClassifierParams(weights: Float32Array) { - const { params, paramMappings } = this.extractClassifierParams(weights) - this._params = params - this._paramMappings = paramMappings + const { params, paramMappings } = this.extractClassifierParams(weights); + this._params = params; + this._paramMappings = paramMappings; } public extractClassifierParams(weights: Float32Array) { - return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut()) + return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut()); } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) { + const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap); - const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap) + this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap); - this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap) - - return extractParamsFromWeigthMap(classifierMap) + return extractParamsFromWeigthMap(classifierMap); } protected extractParams(weights: Float32Array) { + const cIn = this.getClassifierChannelsIn(); + const cOut = this.getClassifierChannelsOut(); + const classifierWeightSize = (cOut * cIn) + cOut; - const cIn = this.getClassifierChannelsIn() - const cOut = this.getClassifierChannelsOut() - const classifierWeightSize = (cOut * cIn ) + cOut + const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize); + const classifierWeights = weights.slice(weights.length - classifierWeightSize); - const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize) - const classifierWeights = weights.slice(weights.length - classifierWeightSize) - - this.faceFeatureExtractor.extractWeights(featureExtractorWeights) - return this.extractClassifierParams(classifierWeights) + this.faceFeatureExtractor.extractWeights(featureExtractorWeights); + return this.extractClassifierParams(classifierWeights); } -} \ No newline at end of file +} diff --git a/src/faceProcessor/extractParams.ts b/src/faceProcessor/extractParams.ts index 515f838..794bb16 100644 --- a/src/faceProcessor/extractParams.ts +++ b/src/faceProcessor/extractParams.ts @@ -2,24 +2,23 @@ import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../ import { NetParams } from './types'; export function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractWeights, - getRemainingWeights - } = extractWeightsFactory(weights) + getRemainingWeights, + } = extractWeightsFactory(weights); - const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings) + const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings); - const fc = extractFCParams(channelsIn, channelsOut, 'fc') + const fc = extractFCParams(channelsIn, channelsOut, 'fc'); if (getRemainingWeights().length !== 0) { - throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`) + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); } return { paramMappings, - params: { fc } - } -} \ No newline at end of file + params: { fc }, + }; +} diff --git a/src/faceProcessor/extractParamsFromWeigthMap.ts b/src/faceProcessor/extractParamsFromWeigthMap.ts index 959ec0c..0b31221 100644 --- a/src/faceProcessor/extractParamsFromWeigthMap.ts +++ b/src/faceProcessor/extractParamsFromWeigthMap.ts @@ -1,27 +1,28 @@ import * as tf from '../../dist/tfjs.esm.js'; -import { disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping } from '../common/index'; +import { + disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping, +} from '../common/index'; import { NetParams } from './types'; export function extractParamsFromWeigthMap( - weightMap: tf.NamedTensorMap + weightMap: tf.NamedTensorMap, ): { params: NetParams, paramMappings: ParamMapping[] } { + const paramMappings: ParamMapping[] = []; - const paramMappings: ParamMapping[] = [] - - const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings) + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); function extractFcParams(prefix: string): FCParams { - const weights = extractWeightEntry(`${prefix}/weights`, 2) - const bias = extractWeightEntry(`${prefix}/bias`, 1) - return { weights, bias } + const weights = extractWeightEntry(`${prefix}/weights`, 2); + const bias = extractWeightEntry(`${prefix}/bias`, 1); + return { weights, bias }; } const params = { - fc: extractFcParams('fc') - } + fc: extractFcParams('fc'), + }; - disposeUnusedWeightTensors(weightMap, paramMappings) + disposeUnusedWeightTensors(weightMap, paramMappings); - return { params, paramMappings } -} \ No newline at end of file + return { params, paramMappings }; +} diff --git a/src/faceProcessor/index.ts b/src/faceProcessor/index.ts index 943ea08..9e98e7d 100644 --- a/src/faceProcessor/index.ts +++ b/src/faceProcessor/index.ts @@ -1 +1 @@ -export * from './FaceProcessor'; \ No newline at end of file +export * from './FaceProcessor'; diff --git a/src/faceProcessor/types.ts b/src/faceProcessor/types.ts index a1a941a..a800f4b 100644 --- a/src/faceProcessor/types.ts +++ b/src/faceProcessor/types.ts @@ -3,4 +3,3 @@ import { FCParams } from '../common/index'; export type NetParams = { fc: FCParams } - diff --git a/src/faceProcessor/util.ts b/src/faceProcessor/util.ts index 2f47ac2..0bb179d 100644 --- a/src/faceProcessor/util.ts +++ b/src/faceProcessor/util.ts @@ -1,15 +1,13 @@ import * as tf from '../../dist/tfjs.esm.js'; export function seperateWeightMaps(weightMap: tf.NamedTensorMap) { + const featureExtractorMap: tf.NamedTensorMap = {}; + const classifierMap: tf.NamedTensorMap = {}; - const featureExtractorMap: tf.NamedTensorMap = {} - const classifierMap: tf.NamedTensorMap = {} + Object.keys(weightMap).forEach((key) => { + const map = key.startsWith('fc') ? classifierMap : featureExtractorMap; + map[key] = weightMap[key]; + }); - Object.keys(weightMap).forEach(key => { - const map = key.startsWith('fc') ? classifierMap : featureExtractorMap - map[key] = weightMap[key] - }) - - return { featureExtractorMap, classifierMap } - -} \ No newline at end of file + return { featureExtractorMap, classifierMap }; +} diff --git a/src/faceRecognitionNet/FaceRecognitionNet.ts b/src/faceRecognitionNet/FaceRecognitionNet.ts index 23913ca..13fafc6 100644 --- a/src/faceRecognitionNet/FaceRecognitionNet.ts +++ b/src/faceRecognitionNet/FaceRecognitionNet.ts @@ -9,87 +9,84 @@ import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; import { residual, residualDown } from './residualLayer'; import { NetParams } from './types'; - export class FaceRecognitionNet extends NeuralNetwork { - constructor() { - super('FaceRecognitionNet') + super('FaceRecognitionNet'); } public forwardInput(input: NetInput): tf.Tensor2D { - - const { params } = this + const { params } = this; if (!params) { - throw new Error('FaceRecognitionNet - load model before inference') + throw new Error('FaceRecognitionNet - load model before inference'); } return tf.tidy(() => { // const batchTensor = input.toBatchTensor(150, true).toFloat() const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32'); - const meanRgb = [122.782, 117.001, 104.298] - const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D + const meanRgb = [122.782, 117.001, 104.298]; + const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D; - let out = convDown(normalized, params.conv32_down) - out = tf.maxPool(out, 3, 2, 'valid') + let out = convDown(normalized, params.conv32_down); + out = tf.maxPool(out, 3, 2, 'valid'); - out = residual(out, params.conv32_1) - out = residual(out, params.conv32_2) - out = residual(out, params.conv32_3) + out = residual(out, params.conv32_1); + out = residual(out, params.conv32_2); + out = residual(out, params.conv32_3); - out = residualDown(out, params.conv64_down) - out = residual(out, params.conv64_1) - out = residual(out, params.conv64_2) - out = residual(out, params.conv64_3) + out = residualDown(out, params.conv64_down); + out = residual(out, params.conv64_1); + out = residual(out, params.conv64_2); + out = residual(out, params.conv64_3); - out = residualDown(out, params.conv128_down) - out = residual(out, params.conv128_1) - out = residual(out, params.conv128_2) + out = residualDown(out, params.conv128_down); + out = residual(out, params.conv128_1); + out = residual(out, params.conv128_2); - out = residualDown(out, params.conv256_down) - out = residual(out, params.conv256_1) - out = residual(out, params.conv256_2) - out = residualDown(out, params.conv256_down_out) + out = residualDown(out, params.conv256_down); + out = residual(out, params.conv256_1); + out = residual(out, params.conv256_2); + out = residualDown(out, params.conv256_down_out); - const globalAvg = out.mean([1, 2]) as tf.Tensor2D - const fullyConnected = tf.matMul(globalAvg, params.fc) + const globalAvg = out.mean([1, 2]) as tf.Tensor2D; + const fullyConnected = tf.matMul(globalAvg, params.fc); - return fullyConnected - }) + return fullyConnected; + }); } public async forward(input: TNetInput): Promise { - return this.forwardInput(await toNetInput(input)) + return this.forwardInput(await toNetInput(input)); } public async computeFaceDescriptor(input: TNetInput): Promise { - const netInput = await toNetInput(input) + const netInput = await toNetInput(input); const faceDescriptorTensors = tf.tidy( - () => tf.unstack(this.forwardInput(netInput)) - ) + () => tf.unstack(this.forwardInput(netInput)), + ); const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map( - t => t.data() - )) as Float32Array[] + (t) => t.data(), + )) as Float32Array[]; - faceDescriptorTensors.forEach(t => t.dispose()) + faceDescriptorTensors.forEach((t) => t.dispose()); return netInput.isBatchInput ? faceDescriptorsForBatch - : faceDescriptorsForBatch[0] + : faceDescriptorsForBatch[0]; } protected getDefaultModelName(): string { - return 'face_recognition_model' + return 'face_recognition_model'; } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) { - return extractParamsFromWeigthMap(weightMap) + return extractParamsFromWeigthMap(weightMap); } protected extractParams(weights: Float32Array) { - return extractParams(weights) + return extractParams(weights); } -} \ No newline at end of file +} diff --git a/src/faceRecognitionNet/convLayer.ts b/src/faceRecognitionNet/convLayer.ts index a9934a2..bde3c35 100644 --- a/src/faceRecognitionNet/convLayer.ts +++ b/src/faceRecognitionNet/convLayer.ts @@ -3,30 +3,29 @@ import * as tf from '../../dist/tfjs.esm.js'; import { scale } from './scaleLayer'; import { ConvLayerParams } from './types'; - function convLayer( x: tf.Tensor4D, params: ConvLayerParams, strides: [number, number], withRelu: boolean, - padding: 'valid' | 'same' = 'same' + padding: 'valid' | 'same' = 'same', ): tf.Tensor4D { - const { filters, bias } = params.conv + const { filters, bias } = params.conv; - let out = tf.conv2d(x, filters, strides, padding) - out = tf.add(out, bias) - out = scale(out, params.scale) - return withRelu ? tf.relu(out) : out + let out = tf.conv2d(x, filters, strides, padding); + out = tf.add(out, bias); + out = scale(out, params.scale); + return withRelu ? tf.relu(out) : out; } export function conv(x: tf.Tensor4D, params: ConvLayerParams) { - return convLayer(x, params, [1, 1], true) + return convLayer(x, params, [1, 1], true); } export function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) { - return convLayer(x, params, [1, 1], false) + return convLayer(x, params, [1, 1], false); } export function convDown(x: tf.Tensor4D, params: ConvLayerParams) { - return convLayer(x, params, [2, 2], true, 'valid') -} \ No newline at end of file + return convLayer(x, params, [2, 2], true, 'valid'); +} diff --git a/src/faceRecognitionNet/extractParams.ts b/src/faceRecognitionNet/extractParams.ts index b75aaf8..b579026 100644 --- a/src/faceRecognitionNet/extractParams.ts +++ b/src/faceRecognitionNet/extractParams.ts @@ -1,72 +1,72 @@ import * as tf from '../../dist/tfjs.esm.js'; -import { ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping } from '../common/index'; +import { + ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping, +} from '../common/index'; import { isFloat } from '../utils/index'; -import { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types'; +import { + ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams, +} from './types'; function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) { - function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D { - const weights = extractWeights(numFilterValues) - const depth = weights.length / (numFilters * filterSize * filterSize) + const weights = extractWeights(numFilterValues); + const depth = weights.length / (numFilters * filterSize * filterSize); if (isFloat(depth)) { - throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`) + throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`); } return tf.tidy( () => tf.transpose( tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]), - [2, 3, 1, 0] - ) - ) + [2, 3, 1, 0], + ), + ); } function extractConvParams( numFilterValues: number, numFilters: number, filterSize: number, - mappedPrefix: string + mappedPrefix: string, ): ConvParams { - - const filters = extractFilterValues(numFilterValues, numFilters, filterSize) - const bias = tf.tensor1d(extractWeights(numFilters)) + const filters = extractFilterValues(numFilterValues, numFilters, filterSize); + const bias = tf.tensor1d(extractWeights(numFilters)); paramMappings.push( { paramPath: `${mappedPrefix}/filters` }, - { paramPath: `${mappedPrefix}/bias` } - ) + { paramPath: `${mappedPrefix}/bias` }, + ); - return { filters, bias } + return { filters, bias }; } function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams { - - const weights = tf.tensor1d(extractWeights(numWeights)) - const biases = tf.tensor1d(extractWeights(numWeights)) + const weights = tf.tensor1d(extractWeights(numWeights)); + const biases = tf.tensor1d(extractWeights(numWeights)); paramMappings.push( { paramPath: `${mappedPrefix}/weights` }, - { paramPath: `${mappedPrefix}/biases` } - ) + { paramPath: `${mappedPrefix}/biases` }, + ); return { weights, - biases - } + biases, + }; } function extractConvLayerParams( numFilterValues: number, numFilters: number, filterSize: number, - mappedPrefix: string + mappedPrefix: string, ): ConvLayerParams { + const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`); + const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`); - const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`) - const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`) - - return { conv, scale } + return { conv, scale }; } function extractResidualLayerParams( @@ -74,62 +74,59 @@ function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings numFilters: number, filterSize: number, mappedPrefix: string, - isDown: boolean = false + isDown: boolean = false, ): ResidualLayerParams { + const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`); + const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`); - const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`) - const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`) - - return { conv1, conv2 } + return { conv1, conv2 }; } return { extractConvLayerParams, - extractResidualLayerParams - } - + extractResidualLayerParams, + }; } export function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } { - const { extractWeights, - getRemainingWeights - } = extractWeightsFactory(weights) + getRemainingWeights, + } = extractWeightsFactory(weights); - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractConvLayerParams, - extractResidualLayerParams - } = extractorsFactory(extractWeights, paramMappings) + extractResidualLayerParams, + } = extractorsFactory(extractWeights, paramMappings); - const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down') - const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1') - const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2') - const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3') + const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down'); + const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1'); + const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2'); + const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3'); - const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true) - const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1') - const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2') - const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3') + const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true); + const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1'); + const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2'); + const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3'); - const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true) - const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1') - const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2') + const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true); + const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1'); + const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2'); - const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true) - const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1') - const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2') - const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out') + const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true); + const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1'); + const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2'); + const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out'); const fc = tf.tidy( - () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]) - ) - paramMappings.push({ paramPath: `fc` }) + () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]), + ); + paramMappings.push({ paramPath: 'fc' }); if (getRemainingWeights().length !== 0) { - throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`) + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); } const params = { @@ -148,8 +145,8 @@ export function extractParams(weights: Float32Array): { params: NetParams, param conv256_1, conv256_2, conv256_down_out, - fc - } + fc, + }; - return { params, paramMappings } -} \ No newline at end of file + return { params, paramMappings }; +} diff --git a/src/faceRecognitionNet/extractParamsFromWeigthMap.ts b/src/faceRecognitionNet/extractParamsFromWeigthMap.ts index 936a2e5..03ae418 100644 --- a/src/faceRecognitionNet/extractParamsFromWeigthMap.ts +++ b/src/faceRecognitionNet/extractParamsFromWeigthMap.ts @@ -2,78 +2,75 @@ import * as tf from '../../dist/tfjs.esm.js'; import { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index'; import { isTensor2D } from '../utils/index'; -import { ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams } from './types'; +import { + ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams, +} from './types'; function extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) { - - const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings) + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); function extractScaleLayerParams(prefix: string): ScaleLayerParams { + const weights = extractWeightEntry(`${prefix}/scale/weights`, 1); + const biases = extractWeightEntry(`${prefix}/scale/biases`, 1); - const weights = extractWeightEntry(`${prefix}/scale/weights`, 1) - const biases = extractWeightEntry(`${prefix}/scale/biases`, 1) - - return { weights, biases } + return { weights, biases }; } function extractConvLayerParams(prefix: string): ConvLayerParams { + const filters = extractWeightEntry(`${prefix}/conv/filters`, 4); + const bias = extractWeightEntry(`${prefix}/conv/bias`, 1); + const scale = extractScaleLayerParams(prefix); - const filters = extractWeightEntry(`${prefix}/conv/filters`, 4) - const bias = extractWeightEntry(`${prefix}/conv/bias`, 1) - const scale = extractScaleLayerParams(prefix) - - return { conv: { filters, bias }, scale } + return { conv: { filters, bias }, scale }; } function extractResidualLayerParams(prefix: string): ResidualLayerParams { return { conv1: extractConvLayerParams(`${prefix}/conv1`), - conv2: extractConvLayerParams(`${prefix}/conv2`) - } + conv2: extractConvLayerParams(`${prefix}/conv2`), + }; } return { extractConvLayerParams, - extractResidualLayerParams - } - + extractResidualLayerParams, + }; } export function extractParamsFromWeigthMap( - weightMap: tf.NamedTensorMap + weightMap: tf.NamedTensorMap, ): { params: NetParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractConvLayerParams, - extractResidualLayerParams - } = extractorsFactory(weightMap, paramMappings) + extractResidualLayerParams, + } = extractorsFactory(weightMap, paramMappings); - const conv32_down = extractConvLayerParams('conv32_down') - const conv32_1 = extractResidualLayerParams('conv32_1') - const conv32_2 = extractResidualLayerParams('conv32_2') - const conv32_3 = extractResidualLayerParams('conv32_3') + const conv32_down = extractConvLayerParams('conv32_down'); + const conv32_1 = extractResidualLayerParams('conv32_1'); + const conv32_2 = extractResidualLayerParams('conv32_2'); + const conv32_3 = extractResidualLayerParams('conv32_3'); - const conv64_down = extractResidualLayerParams('conv64_down') - const conv64_1 = extractResidualLayerParams('conv64_1') - const conv64_2 = extractResidualLayerParams('conv64_2') - const conv64_3 = extractResidualLayerParams('conv64_3') + const conv64_down = extractResidualLayerParams('conv64_down'); + const conv64_1 = extractResidualLayerParams('conv64_1'); + const conv64_2 = extractResidualLayerParams('conv64_2'); + const conv64_3 = extractResidualLayerParams('conv64_3'); - const conv128_down = extractResidualLayerParams('conv128_down') - const conv128_1 = extractResidualLayerParams('conv128_1') - const conv128_2 = extractResidualLayerParams('conv128_2') + const conv128_down = extractResidualLayerParams('conv128_down'); + const conv128_1 = extractResidualLayerParams('conv128_1'); + const conv128_2 = extractResidualLayerParams('conv128_2'); - const conv256_down = extractResidualLayerParams('conv256_down') - const conv256_1 = extractResidualLayerParams('conv256_1') - const conv256_2 = extractResidualLayerParams('conv256_2') - const conv256_down_out = extractResidualLayerParams('conv256_down_out') + const conv256_down = extractResidualLayerParams('conv256_down'); + const conv256_1 = extractResidualLayerParams('conv256_1'); + const conv256_2 = extractResidualLayerParams('conv256_2'); + const conv256_down_out = extractResidualLayerParams('conv256_down_out'); - const fc = weightMap['fc'] - paramMappings.push({ originalPath: 'fc', paramPath: 'fc' }) + const { fc } = weightMap; + paramMappings.push({ originalPath: 'fc', paramPath: 'fc' }); if (!isTensor2D(fc)) { - throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`) + throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`); } const params = { @@ -92,10 +89,10 @@ export function extractParamsFromWeigthMap( conv256_1, conv256_2, conv256_down_out, - fc - } + fc, + }; - disposeUnusedWeightTensors(weightMap, paramMappings) + disposeUnusedWeightTensors(weightMap, paramMappings); - return { params, paramMappings } -} \ No newline at end of file + return { params, paramMappings }; +} diff --git a/src/faceRecognitionNet/index.ts b/src/faceRecognitionNet/index.ts index 2e8ce87..7afd1fe 100644 --- a/src/faceRecognitionNet/index.ts +++ b/src/faceRecognitionNet/index.ts @@ -3,7 +3,7 @@ import { FaceRecognitionNet } from './FaceRecognitionNet'; export * from './FaceRecognitionNet'; export function createFaceRecognitionNet(weights: Float32Array) { - const net = new FaceRecognitionNet() - net.extractWeights(weights) - return net -} \ No newline at end of file + const net = new FaceRecognitionNet(); + net.extractWeights(weights); + return net; +} diff --git a/src/faceRecognitionNet/residualLayer.ts b/src/faceRecognitionNet/residualLayer.ts index 1c0f2ca..8db825c 100644 --- a/src/faceRecognitionNet/residualLayer.ts +++ b/src/faceRecognitionNet/residualLayer.ts @@ -4,37 +4,37 @@ import { conv, convDown, convNoRelu } from './convLayer'; import { ResidualLayerParams } from './types'; export function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D { - let out = conv(x, params.conv1) - out = convNoRelu(out, params.conv2) - out = tf.add(out, x) - out = tf.relu(out) - return out + let out = conv(x, params.conv1); + out = convNoRelu(out, params.conv2); + out = tf.add(out, x); + out = tf.relu(out); + return out; } export function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D { - let out = convDown(x, params.conv1) - out = convNoRelu(out, params.conv2) + let out = convDown(x, params.conv1); + out = convNoRelu(out, params.conv2); - let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D - const zeros = tf.zeros(pooled.shape) - const isPad = pooled.shape[3] !== out.shape[3] - const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2] + let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D; + const zeros = tf.zeros(pooled.shape); + const isPad = pooled.shape[3] !== out.shape[3]; + const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]; if (isAdjustShape) { - const padShapeX = [...out.shape] as [number, number, number, number] - padShapeX[1] = 1 - const zerosW = tf.zeros(padShapeX) - out = tf.concat([out, zerosW], 1) + const padShapeX = [...out.shape] as [number, number, number, number]; + padShapeX[1] = 1; + const zerosW = tf.zeros(padShapeX); + out = tf.concat([out, zerosW], 1); - const padShapeY = [...out.shape] as [number, number, number, number] - padShapeY[2] = 1 - const zerosH = tf.zeros(padShapeY) - out = tf.concat([out, zerosH], 2) + const padShapeY = [...out.shape] as [number, number, number, number]; + padShapeY[2] = 1; + const zerosH = tf.zeros(padShapeY); + out = tf.concat([out, zerosH], 2); } - pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled - out = tf.add(pooled, out) as tf.Tensor4D + pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled; + out = tf.add(pooled, out) as tf.Tensor4D; - out = tf.relu(out) - return out -} \ No newline at end of file + out = tf.relu(out); + return out; +} diff --git a/src/faceRecognitionNet/scaleLayer.ts b/src/faceRecognitionNet/scaleLayer.ts index 551d373..2158cab 100644 --- a/src/faceRecognitionNet/scaleLayer.ts +++ b/src/faceRecognitionNet/scaleLayer.ts @@ -3,5 +3,5 @@ import * as tf from '../../dist/tfjs.esm.js'; import { ScaleLayerParams } from './types'; export function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D { - return tf.add(tf.mul(x, params.weights), params.biases) + return tf.add(tf.mul(x, params.weights), params.biases); } diff --git a/src/faceRecognitionNet/types.ts b/src/faceRecognitionNet/types.ts index cfe4dc3..a1af14f 100644 --- a/src/faceRecognitionNet/types.ts +++ b/src/faceRecognitionNet/types.ts @@ -6,16 +6,17 @@ export type ScaleLayerParams = { weights: tf.Tensor1D biases: tf.Tensor1D } -export type ResidualLayerParams = { - conv1: ConvLayerParams - conv2: ConvLayerParams -} export type ConvLayerParams = { conv: ConvParams scale: ScaleLayerParams } +export type ResidualLayerParams = { + conv1: ConvLayerParams + conv2: ConvLayerParams +} + export type NetParams = { conv32_down: ConvLayerParams conv32_1: ResidualLayerParams @@ -33,4 +34,4 @@ export type NetParams = { conv256_2: ResidualLayerParams conv256_down_out: ResidualLayerParams fc: tf.Tensor2D -} \ No newline at end of file +} diff --git a/src/factories/WithAge.ts b/src/factories/WithAge.ts index 3843bf1..67e6d5e 100644 --- a/src/factories/WithAge.ts +++ b/src/factories/WithAge.ts @@ -3,16 +3,15 @@ export type WithAge = TSource & { } export function isWithAge(obj: any): obj is WithAge<{}> { - return typeof obj['age'] === 'number' + return typeof obj.age === 'number'; } export function extendWithAge< TSource -> ( +>( sourceObj: TSource, - age: number + age: number, ): WithAge { - - const extension = { age } - return Object.assign({}, sourceObj, extension) -} \ No newline at end of file + const extension = { age }; + return { ...sourceObj, ...extension }; +} diff --git a/src/factories/WithFaceDescriptor.ts b/src/factories/WithFaceDescriptor.ts index 9b74d53..8653573 100644 --- a/src/factories/WithFaceDescriptor.ts +++ b/src/factories/WithFaceDescriptor.ts @@ -4,12 +4,10 @@ export type WithFaceDescriptor = TSource & { export function extendWithFaceDescriptor< TSource -> ( +>( sourceObj: TSource, - descriptor: Float32Array + descriptor: Float32Array, ): WithFaceDescriptor { - - const extension = { descriptor } - return Object.assign({}, sourceObj, extension) + const extension = { descriptor }; + return { ...sourceObj, ...extension }; } - diff --git a/src/factories/WithFaceDetection.ts b/src/factories/WithFaceDetection.ts index 577ab78..2a5e718 100644 --- a/src/factories/WithFaceDetection.ts +++ b/src/factories/WithFaceDetection.ts @@ -5,16 +5,15 @@ export type WithFaceDetection = TSource & { } export function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> { - return obj['detection'] instanceof FaceDetection + return obj.detection instanceof FaceDetection; } export function extendWithFaceDetection< TSource -> ( +>( sourceObj: TSource, - detection: FaceDetection + detection: FaceDetection, ): WithFaceDetection { - - const extension = { detection } - return Object.assign({}, sourceObj, extension) + const extension = { detection }; + return { ...sourceObj, ...extension }; } diff --git a/src/factories/WithFaceExpressions.ts b/src/factories/WithFaceExpressions.ts index 6df6de3..7f459a0 100644 --- a/src/factories/WithFaceExpressions.ts +++ b/src/factories/WithFaceExpressions.ts @@ -5,16 +5,15 @@ export type WithFaceExpressions = TSource & { } export function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> { - return obj['expressions'] instanceof FaceExpressions + return obj.expressions instanceof FaceExpressions; } export function extendWithFaceExpressions< TSource -> ( +>( sourceObj: TSource, - expressions: FaceExpressions + expressions: FaceExpressions, ): WithFaceExpressions { - - const extension = { expressions } - return Object.assign({}, sourceObj, extension) -} \ No newline at end of file + const extension = { expressions }; + return { ...sourceObj, ...extension }; +} diff --git a/src/factories/WithFaceLandmarks.ts b/src/factories/WithFaceLandmarks.ts index 9f861d4..cf142a1 100644 --- a/src/factories/WithFaceLandmarks.ts +++ b/src/factories/WithFaceLandmarks.ts @@ -5,40 +5,37 @@ import { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection'; export type WithFaceLandmarks< TSource extends WithFaceDetection<{}>, - TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 -> = TSource & { - landmarks: TFaceLandmarks - unshiftedLandmarks: TFaceLandmarks - alignedRect: FaceDetection -} + TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & { + landmarks: TFaceLandmarks + unshiftedLandmarks: TFaceLandmarks + alignedRect: FaceDetection + } export function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> { return isWithFaceDetection(obj) + // eslint-disable-next-line dot-notation && obj['landmarks'] instanceof FaceLandmarks + // eslint-disable-next-line dot-notation && obj['unshiftedLandmarks'] instanceof FaceLandmarks - && obj['alignedRect'] instanceof FaceDetection + // eslint-disable-next-line dot-notation + && obj['alignedRect'] instanceof FaceDetection; } export function extendWithFaceLandmarks< TSource extends WithFaceDetection<{}>, - TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 -> ( - sourceObj: TSource, - unshiftedLandmarks: TFaceLandmarks -): WithFaceLandmarks { + TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks { + const { box: shift } = sourceObj.detection; + const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y); - const { box: shift } = sourceObj.detection - const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y) - - const rect = landmarks.align() - const { imageDims } = sourceObj.detection - const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims) + const rect = landmarks.align(); + const { imageDims } = sourceObj.detection; + const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims); const extension = { landmarks, unshiftedLandmarks, - alignedRect - } + alignedRect, + }; - return Object.assign({}, sourceObj, extension) -} \ No newline at end of file + return { ...sourceObj, ...extension }; +} diff --git a/src/factories/WithGender.ts b/src/factories/WithGender.ts index 87a8cf0..a69e42a 100644 --- a/src/factories/WithGender.ts +++ b/src/factories/WithGender.ts @@ -7,18 +7,17 @@ export type WithGender = TSource & { } export function isWithGender(obj: any): obj is WithGender<{}> { - return (obj['gender'] === Gender.MALE || obj['gender'] === Gender.FEMALE) - && isValidProbablitiy(obj['genderProbability']) + return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE) + && isValidProbablitiy(obj.genderProbability); } export function extendWithGender< TSource -> ( +>( sourceObj: TSource, gender: Gender, - genderProbability: number + genderProbability: number, ): WithGender { - - const extension = { gender, genderProbability } - return Object.assign({}, sourceObj, extension) -} \ No newline at end of file + const extension = { gender, genderProbability }; + return { ...sourceObj, ...extension }; +} diff --git a/src/factories/index.ts b/src/factories/index.ts index 5e59810..c5094ab 100644 --- a/src/factories/index.ts +++ b/src/factories/index.ts @@ -1,6 +1,6 @@ -export * from './WithFaceDescriptor' -export * from './WithFaceDetection' -export * from './WithFaceExpressions' -export * from './WithFaceLandmarks' -export * from './WithAge' -export * from './WithGender' \ No newline at end of file +export * from './WithFaceDescriptor'; +export * from './WithFaceDetection'; +export * from './WithFaceExpressions'; +export * from './WithFaceLandmarks'; +export * from './WithAge'; +export * from './WithGender'; diff --git a/src/globalApi/ComposableTask.ts b/src/globalApi/ComposableTask.ts index e53cde0..d1afd3c 100644 --- a/src/globalApi/ComposableTask.ts +++ b/src/globalApi/ComposableTask.ts @@ -1,12 +1,12 @@ export class ComposableTask { - public async then( - onfulfilled: (value: T) => T | PromiseLike + // eslint-disable-next-line no-unused-vars + onfulfilled: (value: T) => T | PromiseLike, ): Promise { - return onfulfilled(await this.run()) + return onfulfilled(await this.run()); } public async run(): Promise { - throw new Error('ComposableTask - run is not implemented') + throw new Error('ComposableTask - run is not implemented'); } } diff --git a/src/globalApi/ComputeFaceDescriptorsTasks.ts b/src/globalApi/ComputeFaceDescriptorsTasks.ts index c7db329..5b13e5a 100644 --- a/src/globalApi/ComputeFaceDescriptorsTasks.ts +++ b/src/globalApi/ComputeFaceDescriptorsTasks.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-classes-per-file */ import { TNetInput } from '../dom/index'; import { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor'; import { WithFaceDetection } from '../factories/WithFaceDetection'; @@ -16,69 +17,66 @@ import { export class ComputeFaceDescriptorsTaskBase extends ComposableTask { constructor( + // eslint-disable-next-line no-unused-vars protected parentTask: ComposableTask | Promise, - protected input: TNetInput + // eslint-disable-next-line no-unused-vars + protected input: TNetInput, ) { - super() + super(); } } export class ComputeAllFaceDescriptorsTask< TSource extends WithFaceLandmarks> > extends ComputeFaceDescriptorsTaskBase[], TSource[]> { - public async run(): Promise[]> { - - const parentResults = await this.parentTask + const parentResults = await this.parentTask; const descriptors = await extractAllFacesAndComputeResults( parentResults, this.input, - faces => Promise.all(faces.map(face => - nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise - )), + (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)), null, - parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true }) - ) + (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }), + ); - return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor)) + return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor)); } withFaceExpressions() { - return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input) + return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input); } withAgeAndGender() { - return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input) + return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input); } } export class ComputeSingleFaceDescriptorTask< TSource extends WithFaceLandmarks> > extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> { - public async run(): Promise | undefined> { - - const parentResult = await this.parentTask + const parentResult = await this.parentTask; if (!parentResult) { return undefined; } const descriptor = await extractSingleFaceAndComputeResult( parentResult, this.input, - face => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise, + (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise, null, - parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true }) - ) + // eslint-disable-next-line no-shadow + (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }), + ); - return extendWithFaceDescriptor(parentResult, descriptor) + return extendWithFaceDescriptor(parentResult, descriptor); } withFaceExpressions() { - return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input) + return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input); } withAgeAndGender() { - return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input) + return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input); } -} \ No newline at end of file +} diff --git a/src/globalApi/DetectFaceLandmarksTasks.ts b/src/globalApi/DetectFaceLandmarksTasks.ts index 6f9fb37..a683916 100644 --- a/src/globalApi/DetectFaceLandmarksTasks.ts +++ b/src/globalApi/DetectFaceLandmarksTasks.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-classes-per-file */ import * as tf from '../../dist/tfjs.esm.js'; import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; @@ -20,89 +21,86 @@ import { export class DetectFaceLandmarksTaskBase extends ComposableTask { constructor( + // eslint-disable-next-line no-unused-vars protected parentTask: ComposableTask | Promise, + // eslint-disable-next-line no-unused-vars protected input: TNetInput, - protected useTinyLandmarkNet: boolean + // eslint-disable-next-line no-unused-vars + protected useTinyLandmarkNet: boolean, ) { - super() + super(); } protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet { return this.useTinyLandmarkNet ? nets.faceLandmark68TinyNet - : nets.faceLandmark68Net + : nets.faceLandmark68Net; } } export class DetectAllFaceLandmarksTask< TSource extends WithFaceDetection<{}> > extends DetectFaceLandmarksTaskBase[], TSource[]> { - public async run(): Promise[]> { - - const parentResults = await this.parentTask - const detections = parentResults.map(res => res.detection) + const parentResults = await this.parentTask; + const detections = parentResults.map((res) => res.detection); const faces: Array = this.input instanceof tf.Tensor ? await extractFaceTensors(this.input, detections) - : await extractFaces(this.input, detections) + : await extractFaces(this.input, detections); const faceLandmarksByFace = await Promise.all(faces.map( - face => this.landmarkNet.detectLandmarks(face) - )) as FaceLandmarks68[] + (face) => this.landmarkNet.detectLandmarks(face), + )) as FaceLandmarks68[]; - faces.forEach(f => f instanceof tf.Tensor && f.dispose()) + faces.forEach((f) => f instanceof tf.Tensor && f.dispose()); - return parentResults.map((parentResult, i) => - extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]) - ) + return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i])); } withFaceExpressions() { - return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input) + return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input); } withAgeAndGender() { - return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input) + return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input); } withFaceDescriptors() { - return new ComputeAllFaceDescriptorsTask(this, this.input) + return new ComputeAllFaceDescriptorsTask(this, this.input); } } export class DetectSingleFaceLandmarksTask< TSource extends WithFaceDetection<{}> -> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> { - +> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> { public async run(): Promise | undefined> { - - const parentResult = await this.parentTask + const parentResult = await this.parentTask; if (!parentResult) { return undefined; } - const { detection } = parentResult + const { detection } = parentResult; const faces: Array = this.input instanceof tf.Tensor ? await extractFaceTensors(this.input, [detection]) - : await extractFaces(this.input, [detection]) + : await extractFaces(this.input, [detection]); - const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68 + const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68; - faces.forEach(f => f instanceof tf.Tensor && f.dispose()) + faces.forEach((f) => f instanceof tf.Tensor && f.dispose()); - return extendWithFaceLandmarks(parentResult, landmarks) + return extendWithFaceLandmarks(parentResult, landmarks); } withFaceExpressions() { - return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input) + return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input); } withAgeAndGender() { - return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input) + return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input); } withFaceDescriptor() { - return new ComputeSingleFaceDescriptorTask(this, this.input) + return new ComputeSingleFaceDescriptorTask(this, this.input); } -} \ No newline at end of file +} diff --git a/src/globalApi/DetectFacesTasks.ts b/src/globalApi/DetectFacesTasks.ts index 5dd1b8b..dd3c94b 100644 --- a/src/globalApi/DetectFacesTasks.ts +++ b/src/globalApi/DetectFacesTasks.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-classes-per-file */ import { FaceDetection } from '../classes/FaceDetection'; import { TNetInput } from '../dom/index'; import { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection'; @@ -13,74 +14,79 @@ import { FaceDetectionOptions } from './types'; export class DetectFacesTaskBase extends ComposableTask { constructor( + // eslint-disable-next-line no-unused-vars protected input: TNetInput, - protected options: FaceDetectionOptions = new SsdMobilenetv1Options() + // eslint-disable-next-line no-unused-vars + protected options: FaceDetectionOptions = new SsdMobilenetv1Options(), ) { - super() + super(); } } export class DetectAllFacesTask extends DetectFacesTaskBase { - public async run(): Promise { + const { input, options } = this; - const { input, options } = this - + // eslint-disable-next-line no-nested-ternary const faceDetectionFunction = options instanceof TinyFaceDetectorOptions + // eslint-disable-next-line no-shadow ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options) : ( + // eslint-disable-next-line no-nested-ternary options instanceof SsdMobilenetv1Options + // eslint-disable-next-line no-shadow ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options) : ( options instanceof TinyYolov2Options + // eslint-disable-next-line no-shadow ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options) : null ) - ) + ); if (!faceDetectionFunction) { - throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options') + throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options'); } - return faceDetectionFunction(input) + return faceDetectionFunction(input); } private runAndExtendWithFaceDetections(): Promise[]> { - return new Promise[]>(async res => { - const detections = await this.run() - return res(detections.map(detection => extendWithFaceDetection({}, detection))) - }) + // eslint-disable-next-line no-async-promise-executor + return new Promise[]>(async (resolve) => { + const detections = await this.run(); + resolve(detections.map((detection) => extendWithFaceDetection({}, detection))); + }); } withFaceLandmarks(useTinyLandmarkNet: boolean = false) { return new DetectAllFaceLandmarksTask( this.runAndExtendWithFaceDetections(), this.input, - useTinyLandmarkNet - ) + useTinyLandmarkNet, + ); } withFaceExpressions() { - return new PredictAllFaceExpressionsTask ( + return new PredictAllFaceExpressionsTask( this.runAndExtendWithFaceDetections(), - this.input - ) + this.input, + ); } withAgeAndGender() { return new PredictAllAgeAndGenderTask( this.runAndExtendWithFaceDetections(), - this.input - ) + this.input, + ); } } export class DetectSingleFaceTask extends DetectFacesTaskBase { - public async run(): Promise { const faceDetections = await new DetectAllFacesTask(this.input, this.options); let faceDetectionWithHighestScore = faceDetections[0]; - faceDetections.forEach(faceDetection => { + faceDetections.forEach((faceDetection) => { if (faceDetection.score > faceDetectionWithHighestScore.score) { faceDetectionWithHighestScore = faceDetection; } @@ -89,31 +95,32 @@ export class DetectSingleFaceTask extends DetectFacesTaskBase | undefined> { - return new Promise | undefined>(async res => { - const detection = await this.run() - return res(detection ? extendWithFaceDetection<{}>({}, detection) : undefined) - }) + // eslint-disable-next-line no-async-promise-executor + return new Promise | undefined>(async (resolve) => { + const detection = await this.run(); + resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined); + }); } withFaceLandmarks(useTinyLandmarkNet: boolean = false) { return new DetectSingleFaceLandmarksTask( this.runAndExtendWithFaceDetection(), this.input, - useTinyLandmarkNet - ) + useTinyLandmarkNet, + ); } withFaceExpressions() { return new PredictSingleFaceExpressionsTask( this.runAndExtendWithFaceDetection(), - this.input - ) + this.input, + ); } withAgeAndGender() { return new PredictSingleAgeAndGenderTask( this.runAndExtendWithFaceDetection(), - this.input - ) + this.input, + ); } -} \ No newline at end of file +} diff --git a/src/globalApi/FaceMatcher.ts b/src/globalApi/FaceMatcher.ts index 897457d..6047015 100644 --- a/src/globalApi/FaceMatcher.ts +++ b/src/globalApi/FaceMatcher.ts @@ -4,73 +4,73 @@ import { euclideanDistance } from '../euclideanDistance'; import { WithFaceDescriptor } from '../factories/index'; export class FaceMatcher { - private _labeledDescriptors: LabeledFaceDescriptors[] + private _distanceThreshold: number constructor( inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>, - distanceThreshold: number = 0.6 + distanceThreshold: number = 0.6, ) { + this._distanceThreshold = distanceThreshold; - this._distanceThreshold = distanceThreshold - - const inputArray = Array.isArray(inputs) ? inputs : [inputs] + const inputArray = Array.isArray(inputs) ? inputs : [inputs]; if (!inputArray.length) { - throw new Error(`FaceRecognizer.constructor - expected atleast one input`) + throw new Error('FaceRecognizer.constructor - expected atleast one input'); } - let count = 1 - const createUniqueLabel = () => `person ${count++}` + let count = 1; + const createUniqueLabel = () => `person ${count++}`; this._labeledDescriptors = inputArray.map((desc) => { if (desc instanceof LabeledFaceDescriptors) { - return desc + return desc; } if (desc instanceof Float32Array) { - return new LabeledFaceDescriptors(createUniqueLabel(), [desc]) + return new LabeledFaceDescriptors(createUniqueLabel(), [desc]); } if (desc.descriptor && desc.descriptor instanceof Float32Array) { - return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]) + return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]); } - throw new Error(`FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>`) - }) + throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>'); + }); } - public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors } - public get distanceThreshold(): number { return this._distanceThreshold } + public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; } + + public get distanceThreshold(): number { return this._distanceThreshold; } public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number { return descriptors - .map(d => euclideanDistance(d, queryDescriptor)) + .map((d) => euclideanDistance(d, queryDescriptor)) .reduce((d1, d2) => d1 + d2, 0) - / (descriptors.length || 1) + / (descriptors.length || 1); } public matchDescriptor(queryDescriptor: Float32Array): FaceMatch { return this.labeledDescriptors .map(({ descriptors, label }) => new FaceMatch( - label, - this.computeMeanDistance(queryDescriptor, descriptors) + label, + this.computeMeanDistance(queryDescriptor, descriptors), )) - .reduce((best, curr) => best.distance < curr.distance ? best : curr) + .reduce((best, curr) => (best.distance < curr.distance ? best : curr)); } public findBestMatch(queryDescriptor: Float32Array): FaceMatch { - const bestMatch = this.matchDescriptor(queryDescriptor) + const bestMatch = this.matchDescriptor(queryDescriptor); return bestMatch.distance < this.distanceThreshold ? bestMatch - : new FaceMatch('unknown', bestMatch.distance) + : new FaceMatch('unknown', bestMatch.distance); } public toJSON(): any { return { distanceThreshold: this.distanceThreshold, - labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()) + labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()), }; } @@ -79,5 +79,4 @@ export class FaceMatcher { .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld)); return new FaceMatcher(labeledDescriptors, json.distanceThreshold); } - -} \ No newline at end of file +} diff --git a/src/globalApi/PredictAgeAndGenderTask.ts b/src/globalApi/PredictAgeAndGenderTask.ts index 5f159c4..16dae6f 100644 --- a/src/globalApi/PredictAgeAndGenderTask.ts +++ b/src/globalApi/PredictAgeAndGenderTask.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-classes-per-file */ import * as tf from '../../dist/tfjs.esm.js'; import { AgeAndGenderPrediction } from '../ageGenderNet/types'; @@ -19,49 +20,48 @@ import { export class PredictAgeAndGenderTaskBase extends ComposableTask { constructor( + // eslint-disable-next-line no-unused-vars protected parentTask: ComposableTask | Promise, + // eslint-disable-next-line no-unused-vars protected input: TNetInput, - protected extractedFaces?: Array + // eslint-disable-next-line no-unused-vars + protected extractedFaces?: Array, ) { - super() + super(); } } export class PredictAllAgeAndGenderTask< TSource extends WithFaceDetection<{}> > extends PredictAgeAndGenderTaskBase>[], TSource[]> { - public async run(): Promise>[]> { - - const parentResults = await this.parentTask + const parentResults = await this.parentTask; const ageAndGenderByFace = await extractAllFacesAndComputeResults( parentResults, this.input, - async faces => await Promise.all(faces.map( - face => nets.ageGenderNet.predictAgeAndGender(face) as Promise + async (faces) => Promise.all(faces.map( + (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise, )), - this.extractedFaces - ) + this.extractedFaces, + ); return parentResults.map((parentResult, i) => { - const { age, gender, genderProbability } = ageAndGenderByFace[i] - return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age) - }) + const { age, gender, genderProbability } = ageAndGenderByFace[i]; + return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age); + }); } withFaceExpressions() { - return new PredictAllFaceExpressionsTask(this, this.input) + return new PredictAllFaceExpressionsTask(this, this.input); } } export class PredictSingleAgeAndGenderTask< TSource extends WithFaceDetection<{}> -> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> { - +> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> { public async run(): Promise> | undefined> { - - const parentResult = await this.parentTask + const parentResult = await this.parentTask; if (!parentResult) { return undefined; } @@ -69,40 +69,38 @@ export class PredictSingleAgeAndGenderTask< const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult( parentResult, this.input, - face => nets.ageGenderNet.predictAgeAndGender(face) as Promise, - this.extractedFaces - ) + (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise, + this.extractedFaces, + ); - return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age) + return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age); } withFaceExpressions() { - return new PredictSingleFaceExpressionsTask(this, this.input) + return new PredictSingleFaceExpressionsTask(this, this.input); } } export class PredictAllAgeAndGenderWithFaceAlignmentTask< TSource extends WithFaceLandmarks> > extends PredictAllAgeAndGenderTask { - withFaceExpressions() { - return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input) + return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input); } withFaceDescriptors() { - return new ComputeAllFaceDescriptorsTask(this, this.input) + return new ComputeAllFaceDescriptorsTask(this, this.input); } } export class PredictSingleAgeAndGenderWithFaceAlignmentTask< TSource extends WithFaceLandmarks> > extends PredictSingleAgeAndGenderTask { - withFaceExpressions() { - return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input) + return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input); } withFaceDescriptor() { - return new ComputeSingleFaceDescriptorTask(this, this.input) + return new ComputeSingleFaceDescriptorTask(this, this.input); } -} \ No newline at end of file +} diff --git a/src/globalApi/PredictFaceExpressionsTask.ts b/src/globalApi/PredictFaceExpressionsTask.ts index a9a1556..157fcca 100644 --- a/src/globalApi/PredictFaceExpressionsTask.ts +++ b/src/globalApi/PredictFaceExpressionsTask.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-classes-per-file */ import * as tf from '../../dist/tfjs.esm.js'; import { TNetInput } from '../dom/index'; @@ -18,48 +19,47 @@ import { export class PredictFaceExpressionsTaskBase extends ComposableTask { constructor( + // eslint-disable-next-line no-unused-vars protected parentTask: ComposableTask | Promise, + // eslint-disable-next-line no-unused-vars protected input: TNetInput, - protected extractedFaces?: Array + // eslint-disable-next-line no-unused-vars + protected extractedFaces?: Array, ) { - super() + super(); } } export class PredictAllFaceExpressionsTask< TSource extends WithFaceDetection<{}> > extends PredictFaceExpressionsTaskBase[], TSource[]> { - public async run(): Promise[]> { - - const parentResults = await this.parentTask + const parentResults = await this.parentTask; const faceExpressionsByFace = await extractAllFacesAndComputeResults( parentResults, this.input, - async faces => await Promise.all(faces.map( - face => nets.faceExpressionNet.predictExpressions(face) as Promise + async (faces) => Promise.all(faces.map( + (face) => nets.faceExpressionNet.predictExpressions(face) as Promise, )), - this.extractedFaces - ) + this.extractedFaces, + ); return parentResults.map( - (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]) - ) + (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]), + ); } withAgeAndGender() { - return new PredictAllAgeAndGenderTask(this, this.input) + return new PredictAllAgeAndGenderTask(this, this.input); } } export class PredictSingleFaceExpressionsTask< TSource extends WithFaceDetection<{}> -> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> { - +> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> { public async run(): Promise | undefined> { - - const parentResult = await this.parentTask + const parentResult = await this.parentTask; if (!parentResult) { return undefined; } @@ -67,40 +67,38 @@ export class PredictSingleFaceExpressionsTask< const faceExpressions = await extractSingleFaceAndComputeResult( parentResult, this.input, - face => nets.faceExpressionNet.predictExpressions(face) as Promise, - this.extractedFaces - ) + (face) => nets.faceExpressionNet.predictExpressions(face) as Promise, + this.extractedFaces, + ); - return extendWithFaceExpressions(parentResult, faceExpressions) + return extendWithFaceExpressions(parentResult, faceExpressions); } withAgeAndGender() { - return new PredictSingleAgeAndGenderTask(this, this.input) + return new PredictSingleAgeAndGenderTask(this, this.input); } } export class PredictAllFaceExpressionsWithFaceAlignmentTask< TSource extends WithFaceLandmarks> > extends PredictAllFaceExpressionsTask { - withAgeAndGender() { - return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input) + return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input); } withFaceDescriptors() { - return new ComputeAllFaceDescriptorsTask(this, this.input) + return new ComputeAllFaceDescriptorsTask(this, this.input); } } export class PredictSingleFaceExpressionsWithFaceAlignmentTask< TSource extends WithFaceLandmarks> > extends PredictSingleFaceExpressionsTask { - withAgeAndGender() { - return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input) + return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input); } withFaceDescriptor() { - return new ComputeSingleFaceDescriptorTask(this, this.input) + return new ComputeSingleFaceDescriptorTask(this, this.input); } -} \ No newline at end of file +} diff --git a/src/globalApi/allFaces.ts b/src/globalApi/allFaces.ts index 78a8066..1750d2b 100644 --- a/src/globalApi/allFaces.ts +++ b/src/globalApi/allFaces.ts @@ -8,22 +8,20 @@ import { detectAllFaces } from './detectFaces'; export async function allFacesSsdMobilenetv1( input: TNetInput, - minConfidence?: number + minConfidence?: number, ): Promise>>[]> { - console.warn('allFacesSsdMobilenetv1 is deprecated and will be removed soon, use the high level api instead') - return await detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {})) + return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {})) .withFaceLandmarks() - .withFaceDescriptors() + .withFaceDescriptors(); } export async function allFacesTinyYolov2( input: TNetInput, - forwardParams: ITinyYolov2Options = {} + forwardParams: ITinyYolov2Options = {}, ): Promise>>[]> { - console.warn('allFacesTinyYolov2 is deprecated and will be removed soon, use the high level api instead') - return await detectAllFaces(input, new TinyYolov2Options(forwardParams)) + return detectAllFaces(input, new TinyYolov2Options(forwardParams)) .withFaceLandmarks() - .withFaceDescriptors() + .withFaceDescriptors(); } -export const allFaces = allFacesSsdMobilenetv1 +export const allFaces = allFacesSsdMobilenetv1; diff --git a/src/globalApi/detectFaces.ts b/src/globalApi/detectFaces.ts index b03c228..0ac8e43 100644 --- a/src/globalApi/detectFaces.ts +++ b/src/globalApi/detectFaces.ts @@ -5,14 +5,14 @@ import { FaceDetectionOptions } from './types'; export function detectSingleFace( input: TNetInput, - options: FaceDetectionOptions = new SsdMobilenetv1Options() + options: FaceDetectionOptions = new SsdMobilenetv1Options(), ): DetectSingleFaceTask { - return new DetectSingleFaceTask(input, options) + return new DetectSingleFaceTask(input, options); } export function detectAllFaces( input: TNetInput, - options: FaceDetectionOptions = new SsdMobilenetv1Options() + options: FaceDetectionOptions = new SsdMobilenetv1Options(), ): DetectAllFacesTask { - return new DetectAllFacesTask(input, options) -} \ No newline at end of file + return new DetectAllFacesTask(input, options); +} diff --git a/src/globalApi/extractFacesAndComputeResults.ts b/src/globalApi/extractFacesAndComputeResults.ts index 14d8a49..56168bf 100644 --- a/src/globalApi/extractFacesAndComputeResults.ts +++ b/src/globalApi/extractFacesAndComputeResults.ts @@ -8,40 +8,42 @@ import { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLan export async function extractAllFacesAndComputeResults, TResult>( parentResults: TSource[], input: TNetInput, + // eslint-disable-next-line no-unused-vars computeResults: (faces: Array) => Promise, extractedFaces?: Array | null, - getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect + // eslint-disable-next-line no-unused-vars + getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect, ) { - const faceBoxes = parentResults.map(parentResult => - isWithFaceLandmarks(parentResult) - ? getRectForAlignment(parentResult) - : parentResult.detection - ) + const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult) + ? getRectForAlignment(parentResult) + : parentResult.detection)); const faces: Array = extractedFaces || ( input instanceof tf.Tensor ? await extractFaceTensors(input, faceBoxes) : await extractFaces(input, faceBoxes) - ) + ); - const results = await computeResults(faces) + const results = await computeResults(faces); - faces.forEach(f => f instanceof tf.Tensor && f.dispose()) + faces.forEach((f) => f instanceof tf.Tensor && f.dispose()); - return results + return results; } export async function extractSingleFaceAndComputeResult, TResult>( parentResult: TSource, input: TNetInput, + // eslint-disable-next-line no-unused-vars computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise, extractedFaces?: Array | null, - getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection + // eslint-disable-next-line no-unused-vars + getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection, ) { return extractAllFacesAndComputeResults( [parentResult], input, - async faces => computeResult(faces[0]), + async (faces) => computeResult(faces[0]), extractedFaces, - getRectForAlignment - ) -} \ No newline at end of file + getRectForAlignment, + ); +} diff --git a/src/globalApi/index.ts b/src/globalApi/index.ts index 77cfc13..de0e0c0 100644 --- a/src/globalApi/index.ts +++ b/src/globalApi/index.ts @@ -1,10 +1,9 @@ -export * from './allFaces' -export * from './ComposableTask' -export * from './ComputeFaceDescriptorsTasks' -export * from './detectFaces' -export * from './DetectFacesTasks' -export * from './DetectFaceLandmarksTasks' -export * from './FaceMatcher' -export * from './nets' -export * from './types' - +export * from './allFaces'; +export * from './ComposableTask'; +export * from './ComputeFaceDescriptorsTasks'; +export * from './detectFaces'; +export * from './DetectFacesTasks'; +export * from './DetectFaceLandmarksTasks'; +export * from './FaceMatcher'; +export * from './nets'; +export * from './types'; diff --git a/src/globalApi/nets.ts b/src/globalApi/nets.ts index d508b1a..341c5fc 100644 --- a/src/globalApi/nets.ts +++ b/src/globalApi/nets.ts @@ -1,7 +1,6 @@ import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet'; import { AgeAndGenderPrediction } from '../ageGenderNet/types'; import { FaceDetection } from '../classes/FaceDetection'; -import { FaceLandmarks5 } from '../classes/FaceLandmarks5'; import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; import { TNetInput } from '../dom/index'; import { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet'; @@ -9,8 +8,6 @@ import { FaceExpressions } from '../faceExpressionNet/FaceExpressions'; import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1'; import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector'; @@ -25,8 +22,8 @@ export const nets = { faceLandmark68TinyNet: new FaceLandmark68TinyNet(), faceRecognitionNet: new FaceRecognitionNet(), faceExpressionNet: new FaceExpressionNet(), - ageGenderNet: new AgeGenderNet() -} + ageGenderNet: new AgeGenderNet(), +}; /** * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. @@ -35,8 +32,7 @@ export const nets = { * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). * @returns Bounding box of each face with score. */ -export const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => - nets.ssdMobilenetv1.locateFaces(input, options) +export const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options); /** * Attempts to detect all faces in an image using the Tiny Face Detector. @@ -45,8 +41,7 @@ export const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options) * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters). * @returns Bounding box of each face with score. */ -export const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => - nets.tinyFaceDetector.locateFaces(input, options) +export const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options); /** * Attempts to detect all faces in an image using the Tiny Yolov2 Network. @@ -55,8 +50,7 @@ export const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOpti * @param options (optional, default: see TinyYolov2Options constructor for default parameters). * @returns Bounding box of each face with score. */ -export const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => - nets.tinyYolov2.locateFaces(input, options) +export const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options); /** * Detects the 68 point face landmark positions of the face shown in an image. @@ -65,8 +59,7 @@ export const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promi * also be an array of input images, which will be batch processed. * @returns 68 point face landmarks or array thereof in case of batch input. */ -export const detectFaceLandmarks = (input: TNetInput): Promise => - nets.faceLandmark68Net.detectLandmarks(input) +export const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input); /** * Detects the 68 point face landmark positions of the face shown in an image @@ -77,8 +70,7 @@ export const detectFaceLandmarks = (input: TNetInput): Promise => - nets.faceLandmark68TinyNet.detectLandmarks(input) +export const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input); /** * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image, @@ -90,9 +82,7 @@ export const detectFaceLandmarksTiny = (input: TNetInput): Promise => - nets.faceRecognitionNet.computeFaceDescriptor(input) - +export const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input); /** * Recognizes the facial expressions from a face image. @@ -101,8 +91,7 @@ export const computeFaceDescriptor = (input: TNetInput): Promise => - nets.faceExpressionNet.predictExpressions(input) +export const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input); /** * Predicts age and gender from a face image. @@ -111,19 +100,18 @@ export const recognizeFaceExpressions = (input: TNetInput): Promise => - nets.ageGenderNet.predictAgeAndGender(input) +export const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input); -export const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url) -export const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url) -export const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url) -export const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url) -export const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url) -export const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url) -export const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url) -export const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url) +export const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url); +export const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url); +export const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url); +export const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url); +export const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url); +export const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url); +export const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url); +export const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url); // backward compatibility -export const loadFaceDetectionModel = loadSsdMobilenetv1Model -export const locateFaces = ssdMobilenetv1 -export const detectLandmarks = detectFaceLandmarks \ No newline at end of file +export const loadFaceDetectionModel = loadSsdMobilenetv1Model; +export const locateFaces = ssdMobilenetv1; +export const detectLandmarks = detectFaceLandmarks; diff --git a/src/globalApi/types.ts b/src/globalApi/types.ts index 8b06d02..d1f9bab 100644 --- a/src/globalApi/types.ts +++ b/src/globalApi/types.ts @@ -6,4 +6,5 @@ import { TinyYolov2Options } from '../tinyYolov2/index'; export type FaceDetectionOptions = TinyFaceDetectorOptions | SsdMobilenetv1Options | TinyYolov2Options -export type FaceDetectionFunction = (input: TNetInput) => Promise \ No newline at end of file +// eslint-disable-next-line no-unused-vars +export type FaceDetectionFunction = (input: TNetInput) => Promise diff --git a/src/index.ts b/src/index.ts index 647cea6..0d7ef58 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,13 @@ import * as tf from '../dist/tfjs.esm.js'; import * as draw from './draw/index'; import * as utils from './utils/index'; +import * as pkg from '../package.json'; + export { tf, draw, utils }; export * from './ageGenderNet/index'; export * from './classes/index'; -export * from './dom/index' +export * from './dom/index'; export * from './env/index'; export * from './faceExpressionNet/index'; export * from './faceLandmarkNet/index'; @@ -20,7 +22,7 @@ export * from './euclideanDistance'; export * from './NeuralNetwork'; export * from './resizeResults'; -import * as pkg from '../package.json'; const node = (typeof process !== 'undefined'); +// eslint-disable-next-line no-undef const browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined'); export const version = { faceapi: pkg.version as string, node, browser }; diff --git a/src/ops/index.ts b/src/ops/index.ts index 314dc03..04778cc 100644 --- a/src/ops/index.ts +++ b/src/ops/index.ts @@ -1,14 +1,14 @@ -export * from './iou' -export * from './minBbox' -export * from './nonMaxSuppression' -export * from './normalize' -export * from './padToSquare' -export * from './shuffleArray' +export * from './iou'; +export * from './minBbox'; +export * from './nonMaxSuppression'; +export * from './normalize'; +export * from './padToSquare'; +export * from './shuffleArray'; export function sigmoid(x: number) { - return 1 / (1 + Math.exp(-x)) + return 1 / (1 + Math.exp(-x)); } export function inverseSigmoid(x: number) { - return Math.log(x / (1 - x)) -} \ No newline at end of file + return Math.log(x / (1 - x)); +} diff --git a/src/ops/iou.ts b/src/ops/iou.ts index 577e11e..2e485a4 100644 --- a/src/ops/iou.ts +++ b/src/ops/iou.ts @@ -1,11 +1,11 @@ import { Box } from '../classes/Box'; export function iou(box1: Box, box2: Box, isIOU: boolean = true) { - const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left)) - const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top)) - const interSection = width * height + const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left)); + const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top)); + const interSection = width * height; return isIOU ? interSection / (box1.area + box2.area - interSection) - : interSection / Math.min(box1.area, box2.area) -} \ No newline at end of file + : interSection / Math.min(box1.area, box2.area); +} diff --git a/src/ops/minBbox.ts b/src/ops/minBbox.ts index 1a4f408..e719748 100644 --- a/src/ops/minBbox.ts +++ b/src/ops/minBbox.ts @@ -1,12 +1,12 @@ import { BoundingBox, IPoint } from '../classes/index'; export function minBbox(pts: IPoint[]): BoundingBox { - const xs = pts.map(pt => pt.x) - const ys = pts.map(pt => pt.y) - const minX = xs.reduce((min, x) => x < min ? x : min, Infinity) - const minY = ys.reduce((min, y) => y < min ? y : min, Infinity) - const maxX = xs.reduce((max, x) => max < x ? x : max, 0) - const maxY = ys.reduce((max, y) => max < y ? y : max, 0) + const xs = pts.map((pt) => pt.x); + const ys = pts.map((pt) => pt.y); + const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity); + const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity); + const maxX = xs.reduce((max, x) => (max < x ? x : max), 0); + const maxY = ys.reduce((max, y) => (max < y ? y : max), 0); - return new BoundingBox(minX, minY, maxX, maxY) + return new BoundingBox(minX, minY, maxX, maxY); } diff --git a/src/ops/nonMaxSuppression.ts b/src/ops/nonMaxSuppression.ts index 500e518..01b92bb 100644 --- a/src/ops/nonMaxSuppression.ts +++ b/src/ops/nonMaxSuppression.ts @@ -5,37 +5,35 @@ export function nonMaxSuppression( boxes: Box[], scores: number[], iouThreshold: number, - isIOU: boolean = true + isIOU: boolean = true, ): number[] { - let indicesSortedByScore = scores .map((score, boxIndex) => ({ score, boxIndex })) .sort((c1, c2) => c1.score - c2.score) - .map(c => c.boxIndex) + .map((c) => c.boxIndex); - const pick: number[] = [] + const pick: number[] = []; - while(indicesSortedByScore.length > 0) { - const curr = indicesSortedByScore.pop() as number - pick.push(curr) + while (indicesSortedByScore.length > 0) { + const curr = indicesSortedByScore.pop() as number; + pick.push(curr); - const indices = indicesSortedByScore + const indices = indicesSortedByScore; - const outputs: number[] = [] + const outputs: number[] = []; for (let i = 0; i < indices.length; i++) { - const idx = indices[i] + const idx = indices[i]; - const currBox = boxes[curr] - const idxBox = boxes[idx] + const currBox = boxes[curr]; + const idxBox = boxes[idx]; - outputs.push(iou(currBox, idxBox, isIOU)) + outputs.push(iou(currBox, idxBox, isIOU)); } indicesSortedByScore = indicesSortedByScore.filter( - (_, j) => outputs[j] <= iouThreshold - ) + (_, j) => outputs[j] <= iouThreshold, + ); } - return pick - -} \ No newline at end of file + return pick; +} diff --git a/src/ops/normalize.ts b/src/ops/normalize.ts index 85e0658..65db74d 100644 --- a/src/ops/normalize.ts +++ b/src/ops/normalize.ts @@ -2,12 +2,12 @@ import * as tf from '../../dist/tfjs.esm.js'; export function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D { return tf.tidy(() => { - const [r, g, b] = meanRgb - const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32') - const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32') - const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32') - const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3) + const [r, g, b] = meanRgb; + const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32'); + const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32'); + const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32'); + const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3); - return tf.sub(x, avg_rgb) - }) -} \ No newline at end of file + return tf.sub(x, avg_rgb); + }); +} diff --git a/src/ops/padToSquare.ts b/src/ops/padToSquare.ts index e8b4717..9b818d8 100644 --- a/src/ops/padToSquare.ts +++ b/src/ops/padToSquare.ts @@ -10,41 +10,39 @@ import * as tf from '../../dist/tfjs.esm.js'; */ export function padToSquare( imgTensor: tf.Tensor4D, - isCenterImage: boolean = false + isCenterImage: boolean = false, ): tf.Tensor4D { return tf.tidy(() => { - - const [height, width] = imgTensor.shape.slice(1) + const [height, width] = imgTensor.shape.slice(1); if (height === width) { - return imgTensor + return imgTensor; } - const dimDiff = Math.abs(height - width) - const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1)) - const paddingAxis = height > width ? 2 : 1 + const dimDiff = Math.abs(height - width); + const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1)); + const paddingAxis = height > width ? 2 : 1; - const createPaddingTensor = (paddingAmount: number): tf.Tensor => { - const paddingTensorShape = imgTensor.shape.slice() - paddingTensorShape[paddingAxis] = paddingAmount - return tf.fill(paddingTensorShape, 0, 'float32') - } + const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => { + const paddingTensorShape = imgTensor.shape.slice(); + paddingTensorShape[paddingAxis] = paddingAmountLocal; + return tf.fill(paddingTensorShape, 0, 'float32'); + }; - const paddingTensorAppend = createPaddingTensor(paddingAmount) - const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number) + const paddingTensorAppend = createPaddingTensor(paddingAmount); + const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number); const paddingTensorPrepend = isCenterImage && remainingPaddingAmount ? createPaddingTensor(remainingPaddingAmount) - : null + : null; const tensorsToStack = [ paddingTensorPrepend, imgTensor, - paddingTensorAppend + paddingTensorAppend, ] - .filter(t => !!t) + .filter((t) => !!t) // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[] - .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[] - return tf.concat(tensorsToStack, paddingAxis) - - }) -} \ No newline at end of file + .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[]; + return tf.concat(tensorsToStack, paddingAxis); + }); +} diff --git a/src/ops/shuffleArray.ts b/src/ops/shuffleArray.ts index 76fd13c..ddc89ec 100644 --- a/src/ops/shuffleArray.ts +++ b/src/ops/shuffleArray.ts @@ -1,10 +1,10 @@ export function shuffleArray(inputArray: any[]) { - const array = inputArray.slice() + const array = inputArray.slice(); for (let i = array.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)) - const x = array[i] - array[i] = array[j] - array[j] = x + const j = Math.floor(Math.random() * (i + 1)); + const x = array[i]; + array[i] = array[j]; + array[j] = x; } - return array -} \ No newline at end of file + return array; +} diff --git a/src/ssdMobilenetv1/SsdMobilenetv1.ts b/src/ssdMobilenetv1/SsdMobilenetv1.ts index fe29866..856b798 100644 --- a/src/ssdMobilenetv1/SsdMobilenetv1.ts +++ b/src/ssdMobilenetv1/SsdMobilenetv1.ts @@ -13,122 +13,117 @@ import { predictionLayer } from './predictionLayer'; import { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options'; import { NetParams } from './types'; - export class SsdMobilenetv1 extends NeuralNetwork { - constructor() { - super('SsdMobilenetv1') + super('SsdMobilenetv1'); } public forwardInput(input: NetInput) { - - const { params } = this + const { params } = this; if (!params) { - throw new Error('SsdMobilenetv1 - load model before inference') + throw new Error('SsdMobilenetv1 - load model before inference'); } return tf.tidy(() => { // const batchTensor = input.toBatchTensor(512, false).toFloat() const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32'); - const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D - const features = mobileNetV1(x, params.mobilenetv1) + const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D; + const features = mobileNetV1(x, params.mobilenetv1); const { boxPredictions, - classPredictions - } = predictionLayer(features.out, features.conv11, params.prediction_layer) + classPredictions, + } = predictionLayer(features.out, features.conv11, params.prediction_layer); - return outputLayer(boxPredictions, classPredictions, params.output_layer) - }) + return outputLayer(boxPredictions, classPredictions, params.output_layer); + }); } public async forward(input: TNetInput) { - return this.forwardInput(await toNetInput(input)) + return this.forwardInput(await toNetInput(input)); } public async locateFaces( input: TNetInput, - options: ISsdMobilenetv1Options = {} + options: ISsdMobilenetv1Options = {}, ): Promise { + const { maxResults, minConfidence } = new SsdMobilenetv1Options(options); - const { maxResults, minConfidence } = new SsdMobilenetv1Options(options) - - const netInput = await toNetInput(input) + const netInput = await toNetInput(input); const { boxes: _boxes, - scores: _scores - } = this.forwardInput(netInput) - + scores: _scores, + } = this.forwardInput(netInput); // TODO batches - const boxes = _boxes[0] - const scores = _scores[0] + const boxes = _boxes[0]; + const scores = _scores[0]; for (let i = 1; i < _boxes.length; i++) { - _boxes[i].dispose() - _scores[i].dispose() + _boxes[i].dispose(); + _scores[i].dispose(); } // TODO find a better way to filter by minConfidence - const scoresData = Array.from(await scores.data()) + const scoresData = Array.from(await scores.data()); - const iouThreshold = 0.5 + const iouThreshold = 0.5; const indices = nonMaxSuppression( boxes, scoresData as number[], maxResults, iouThreshold, - minConfidence - ) + minConfidence, + ); - const reshapedDims = netInput.getReshapedInputDimensions(0) - const inputSize = netInput.inputSize as number - const padX = inputSize / reshapedDims.width - const padY = inputSize / reshapedDims.height + const reshapedDims = netInput.getReshapedInputDimensions(0); + const inputSize = netInput.inputSize as number; + const padX = inputSize / reshapedDims.width; + const padY = inputSize / reshapedDims.height; - const boxesData = boxes.arraySync() + const boxesData = boxes.arraySync(); const results = indices - .map(idx => { + .map((idx) => { const [top, bottom] = [ Math.max(0, boxesData[idx][0]), - Math.min(1.0, boxesData[idx][2]) - ].map(val => val * padY) + Math.min(1.0, boxesData[idx][2]), + ].map((val) => val * padY); const [left, right] = [ Math.max(0, boxesData[idx][1]), - Math.min(1.0, boxesData[idx][3]) - ].map(val => val * padX) + Math.min(1.0, boxesData[idx][3]), + ].map((val) => val * padX); return new FaceDetection( scoresData[idx] as number, new Rect( left, top, right - left, - bottom - top + bottom - top, ), { height: netInput.getInputHeight(0), - width: netInput.getInputWidth(0) - } - ) - }) + width: netInput.getInputWidth(0), + }, + ); + }); - boxes.dispose() - scores.dispose() + boxes.dispose(); + scores.dispose(); - return results + return results; } protected getDefaultModelName(): string { - return 'ssd_mobilenetv1_model' + return 'ssd_mobilenetv1_model'; } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) { - return extractParamsFromWeigthMap(weightMap) + return extractParamsFromWeigthMap(weightMap); } protected extractParams(weights: Float32Array) { - return extractParams(weights) + return extractParams(weights); } -} \ No newline at end of file +} diff --git a/src/ssdMobilenetv1/SsdMobilenetv1Options.ts b/src/ssdMobilenetv1/SsdMobilenetv1Options.ts index 99ae93c..8e43c7d 100644 --- a/src/ssdMobilenetv1/SsdMobilenetv1Options.ts +++ b/src/ssdMobilenetv1/SsdMobilenetv1Options.ts @@ -7,21 +7,23 @@ export class SsdMobilenetv1Options { protected _name: string = 'SsdMobilenetv1Options' private _minConfidence: number + private _maxResults: number constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) { - this._minConfidence = minConfidence || 0.5 - this._maxResults = maxResults || 100 + this._minConfidence = minConfidence || 0.5; + this._maxResults = maxResults || 100; if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) { - throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`) + throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`); } if (typeof this._maxResults !== 'number') { - throw new Error(`${this._name} - expected maxResults to be a number`) + throw new Error(`${this._name} - expected maxResults to be a number`); } } - get minConfidence(): number { return this._minConfidence } - get maxResults(): number { return this._maxResults } -} \ No newline at end of file + get minConfidence(): number { return this._minConfidence; } + + get maxResults(): number { return this._maxResults; } +} diff --git a/src/ssdMobilenetv1/boxPredictionLayer.ts b/src/ssdMobilenetv1/boxPredictionLayer.ts index 0d50d9d..3784822 100644 --- a/src/ssdMobilenetv1/boxPredictionLayer.ts +++ b/src/ssdMobilenetv1/boxPredictionLayer.ts @@ -3,27 +3,25 @@ import * as tf from '../../dist/tfjs.esm.js'; import { convLayer } from '../common/index'; import { BoxPredictionParams } from './types'; - export function boxPredictionLayer( x: tf.Tensor4D, - params: BoxPredictionParams + params: BoxPredictionParams, ) { return tf.tidy(() => { - - const batchSize = x.shape[0] + const batchSize = x.shape[0]; const boxPredictionEncoding = tf.reshape( convLayer(x, params.box_encoding_predictor), - [batchSize, -1, 1, 4] - ) + [batchSize, -1, 1, 4], + ); const classPrediction = tf.reshape( convLayer(x, params.class_predictor), - [batchSize, -1, 3] - ) + [batchSize, -1, 3], + ); return { boxPredictionEncoding, - classPrediction - } - }) -} \ No newline at end of file + classPrediction, + }; + }); +} diff --git a/src/ssdMobilenetv1/extractParams.ts b/src/ssdMobilenetv1/extractParams.ts index 11f009a..ba9687b 100644 --- a/src/ssdMobilenetv1/extractParams.ts +++ b/src/ssdMobilenetv1/extractParams.ts @@ -1,33 +1,35 @@ import * as tf from '../../dist/tfjs.esm.js'; -import { ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory } from '../common/index'; -import { MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types'; +import { + ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory, +} from '../common/index'; +import { + MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams, +} from './types'; function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) { - function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams { - - const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]) - const batch_norm_scale = tf.tensor1d(extractWeights(numChannels)) - const batch_norm_offset = tf.tensor1d(extractWeights(numChannels)) - const batch_norm_mean = tf.tensor1d(extractWeights(numChannels)) - const batch_norm_variance = tf.tensor1d(extractWeights(numChannels)) + const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]); + const batch_norm_scale = tf.tensor1d(extractWeights(numChannels)); + const batch_norm_offset = tf.tensor1d(extractWeights(numChannels)); + const batch_norm_mean = tf.tensor1d(extractWeights(numChannels)); + const batch_norm_variance = tf.tensor1d(extractWeights(numChannels)); paramMappings.push( { paramPath: `${mappedPrefix}/filters` }, { paramPath: `${mappedPrefix}/batch_norm_scale` }, { paramPath: `${mappedPrefix}/batch_norm_offset` }, { paramPath: `${mappedPrefix}/batch_norm_mean` }, - { paramPath: `${mappedPrefix}/batch_norm_variance` } - ) + { paramPath: `${mappedPrefix}/batch_norm_variance` }, + ); return { filters, batch_norm_scale, batch_norm_offset, batch_norm_mean, - batch_norm_variance - } + batch_norm_variance, + }; } function extractConvParams( @@ -35,70 +37,66 @@ function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings channelsOut: number, filterSize: number, mappedPrefix: string, - isPointwiseConv?: boolean + isPointwiseConv?: boolean, ): ConvParams { - const filters = tf.tensor4d( extractWeights(channelsIn * channelsOut * filterSize * filterSize), - [filterSize, filterSize, channelsIn, channelsOut] - ) - const bias = tf.tensor1d(extractWeights(channelsOut)) + [filterSize, filterSize, channelsIn, channelsOut], + ); + const bias = tf.tensor1d(extractWeights(channelsOut)); paramMappings.push( { paramPath: `${mappedPrefix}/filters` }, - { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` } - ) + { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` }, + ); - return { filters, bias } + return { filters, bias }; } function extractPointwiseConvParams( channelsIn: number, channelsOut: number, filterSize: number, - mappedPrefix: string + mappedPrefix: string, ): PointwiseConvParams { - const { filters, - bias - } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true) + bias, + } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true); return { filters, - batch_norm_offset: bias - } + batch_norm_offset: bias, + }; } function extractConvPairParams( channelsIn: number, channelsOut: number, - mappedPrefix: string + mappedPrefix: string, ): MobileNetV1.ConvPairParams { + const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`); + const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`); - const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`) - const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`) - - return { depthwise_conv, pointwise_conv } + return { depthwise_conv, pointwise_conv }; } function extractMobilenetV1Params(): MobileNetV1.Params { + const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0'); - const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0') - - const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1') - const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2') - const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3') - const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4') - const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5') - const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6') - const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7') - const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8') - const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9') - const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10') - const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11') - const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12') - const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13') + const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1'); + const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2'); + const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3'); + const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4'); + const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5'); + const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6'); + const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7'); + const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8'); + const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9'); + const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10'); + const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11'); + const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12'); + const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13'); return { conv_0, @@ -114,57 +112,57 @@ function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings conv_10, conv_11, conv_12, - conv_13 - } + conv_13, + }; } function extractPredictionLayerParams(): PredictionLayerParams { - const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0') - const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1') - const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2') - const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3') - const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4') - const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5') - const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6') - const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7') + const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0'); + const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1'); + const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2'); + const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3'); + const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4'); + const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5'); + const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6'); + const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7'); - const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor') - const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor') - const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor') - const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor') - const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor') - const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor') - const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor') - const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor') - const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor') - const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor') - const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor') - const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor') + const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor'); + const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor'); + const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor'); + const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor'); + const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor'); + const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor'); + const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor'); + const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor'); + const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor'); + const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor'); + const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor'); + const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor'); const box_predictor_0 = { box_encoding_predictor: box_encoding_0_predictor, - class_predictor: class_predictor_0 - } + class_predictor: class_predictor_0, + }; const box_predictor_1 = { box_encoding_predictor: box_encoding_1_predictor, - class_predictor: class_predictor_1 - } + class_predictor: class_predictor_1, + }; const box_predictor_2 = { box_encoding_predictor: box_encoding_2_predictor, - class_predictor: class_predictor_2 - } + class_predictor: class_predictor_2, + }; const box_predictor_3 = { box_encoding_predictor: box_encoding_3_predictor, - class_predictor: class_predictor_3 - } + class_predictor: class_predictor_3, + }; const box_predictor_4 = { box_encoding_predictor: box_encoding_4_predictor, - class_predictor: class_predictor_4 - } + class_predictor: class_predictor_4, + }; const box_predictor_5 = { box_encoding_predictor: box_encoding_5_predictor, - class_predictor: class_predictor_5 - } + class_predictor: class_predictor_5, + }; return { conv_0, @@ -180,53 +178,51 @@ function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings box_predictor_2, box_predictor_3, box_predictor_4, - box_predictor_5 - } + box_predictor_5, + }; } return { extractMobilenetV1Params, - extractPredictionLayerParams - } - + extractPredictionLayerParams, + }; } export function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractWeights, - getRemainingWeights - } = extractWeightsFactory(weights) + getRemainingWeights, + } = extractWeightsFactory(weights); const { extractMobilenetV1Params, - extractPredictionLayerParams - } = extractorsFactory(extractWeights, paramMappings) + extractPredictionLayerParams, + } = extractorsFactory(extractWeights, paramMappings); - const mobilenetv1 = extractMobilenetV1Params() - const prediction_layer = extractPredictionLayerParams() + const mobilenetv1 = extractMobilenetV1Params(); + const prediction_layer = extractPredictionLayerParams(); const extra_dim = tf.tensor3d( extractWeights(5118 * 4), - [1, 5118, 4] - ) + [1, 5118, 4], + ); const output_layer = { - extra_dim - } + extra_dim, + }; - paramMappings.push({ paramPath: 'output_layer/extra_dim' }) + paramMappings.push({ paramPath: 'output_layer/extra_dim' }); if (getRemainingWeights().length !== 0) { - throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`) + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); } return { params: { mobilenetv1, prediction_layer, - output_layer + output_layer, }, - paramMappings - } -} \ No newline at end of file + paramMappings, + }; +} diff --git a/src/ssdMobilenetv1/extractParamsFromWeigthMap.ts b/src/ssdMobilenetv1/extractParamsFromWeigthMap.ts index c1bacd7..d2da6a4 100644 --- a/src/ssdMobilenetv1/extractParamsFromWeigthMap.ts +++ b/src/ssdMobilenetv1/extractParamsFromWeigthMap.ts @@ -1,33 +1,34 @@ import * as tf from '../../dist/tfjs.esm.js'; -import { ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index'; +import { + ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping, +} from '../common/index'; import { isTensor3D } from '../utils/index'; -import { BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams } from './types'; +import { + BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams, +} from './types'; function extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) { - - const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings) + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams { + const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`); + const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`); - const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`) - const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`) - - return { filters, batch_norm_offset } + return { filters, batch_norm_offset }; } function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams { + const mappedPrefix = `mobilenetv1/conv_${idx}`; + const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`; + const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`; + const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`; - const mappedPrefix = `mobilenetv1/conv_${idx}` - const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise` - const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv` - const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv` - - const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`) - const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`) - const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`) - const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`) - const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`) + const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`); + const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`); + const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`); + const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`); + const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`); return { depthwise_conv: { @@ -35,10 +36,10 @@ function extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) { batch_norm_scale, batch_norm_offset, batch_norm_mean, - batch_norm_variance + batch_norm_variance, }, - pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv) - } + pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv), + }; } function extractMobilenetV1Params(): MobileNetV1.Params { @@ -56,29 +57,28 @@ function extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) { conv_10: extractConvPairParams(10), conv_11: extractConvPairParams(11), conv_12: extractConvPairParams(12), - conv_13: extractConvPairParams(13) - } + conv_13: extractConvPairParams(13), + }; } function extractConvParams(prefix: string, mappedPrefix: string): ConvParams { - const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`) - const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`) + const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`); + const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`); - return { filters, bias } + return { filters, bias }; } function extractBoxPredictorParams(idx: number): BoxPredictionParams { - const box_encoding_predictor = extractConvParams( `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`, - `prediction_layer/box_predictor_${idx}/box_encoding_predictor` - ) + `prediction_layer/box_predictor_${idx}/box_encoding_predictor`, + ); const class_predictor = extractConvParams( `Prediction/BoxPredictor_${idx}/ClassPredictor`, - `prediction_layer/box_predictor_${idx}/class_predictor` - ) + `prediction_layer/box_predictor_${idx}/class_predictor`, + ); - return { box_encoding_predictor, class_predictor } + return { box_encoding_predictor, class_predictor }; } function extractPredictionLayerParams(): PredictionLayerParams { @@ -96,43 +96,42 @@ function extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) { box_predictor_2: extractBoxPredictorParams(2), box_predictor_3: extractBoxPredictorParams(3), box_predictor_4: extractBoxPredictorParams(4), - box_predictor_5: extractBoxPredictorParams(5) - } + box_predictor_5: extractBoxPredictorParams(5), + }; } return { extractMobilenetV1Params, - extractPredictionLayerParams - } + extractPredictionLayerParams, + }; } export function extractParamsFromWeigthMap( - weightMap: tf.NamedTensorMap + weightMap: tf.NamedTensorMap, ): { params: NetParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractMobilenetV1Params, - extractPredictionLayerParams - } = extractorsFactory(weightMap, paramMappings) + extractPredictionLayerParams, + } = extractorsFactory(weightMap, paramMappings); - const extra_dim = weightMap['Output/extra_dim'] - paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' }) + const extra_dim = weightMap['Output/extra_dim']; + paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' }); if (!isTensor3D(extra_dim)) { - throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`) + throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`); } const params = { mobilenetv1: extractMobilenetV1Params(), prediction_layer: extractPredictionLayerParams(), output_layer: { - extra_dim - } - } + extra_dim, + }, + }; - disposeUnusedWeightTensors(weightMap, paramMappings) + disposeUnusedWeightTensors(weightMap, paramMappings); - return { params, paramMappings } -} \ No newline at end of file + return { params, paramMappings }; +} diff --git a/src/ssdMobilenetv1/index.ts b/src/ssdMobilenetv1/index.ts index 5edf58d..f7ec6fa 100644 --- a/src/ssdMobilenetv1/index.ts +++ b/src/ssdMobilenetv1/index.ts @@ -4,14 +4,14 @@ export * from './SsdMobilenetv1'; export * from './SsdMobilenetv1Options'; export function createSsdMobilenetv1(weights: Float32Array) { - const net = new SsdMobilenetv1() - net.extractWeights(weights) - return net + const net = new SsdMobilenetv1(); + net.extractWeights(weights); + return net; } export function createFaceDetectionNet(weights: Float32Array) { - return createSsdMobilenetv1(weights) + return createSsdMobilenetv1(weights); } // alias for backward compatibily -export class FaceDetectionNet extends SsdMobilenetv1 {} \ No newline at end of file +export class FaceDetectionNet extends SsdMobilenetv1 {} diff --git a/src/ssdMobilenetv1/mobileNetV1.ts b/src/ssdMobilenetv1/mobileNetV1.ts index 29ea9fa..4db1521 100644 --- a/src/ssdMobilenetv1/mobileNetV1.ts +++ b/src/ssdMobilenetv1/mobileNetV1.ts @@ -3,38 +3,35 @@ import * as tf from '../../dist/tfjs.esm.js'; import { pointwiseConvLayer } from './pointwiseConvLayer'; import { MobileNetV1 } from './types'; -const epsilon = 0.0010000000474974513 +const epsilon = 0.0010000000474974513; function depthwiseConvLayer( x: tf.Tensor4D, params: MobileNetV1.DepthwiseConvParams, - strides: [number, number] + strides: [number, number], ) { return tf.tidy(() => { - - let out = tf.depthwiseConv2d(x, params.filters, strides, 'same') + let out = tf.depthwiseConv2d(x, params.filters, strides, 'same'); out = tf.batchNorm( out, params.batch_norm_mean, params.batch_norm_variance, params.batch_norm_offset, params.batch_norm_scale, - epsilon - ) - return tf.clipByValue(out, 0, 6) - - }) + epsilon, + ); + return tf.clipByValue(out, 0, 6); + }); } function getStridesForLayerIdx(layerIdx: number): [number, number] { - return [2, 4, 6, 12].some(idx => idx === layerIdx) ? [2, 2] : [1, 1] + return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1]; } export function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) { return tf.tidy(() => { - let conv11; - let out = pointwiseConvLayer(x, params.conv_0, [2, 2]) + let out = pointwiseConvLayer(x, params.conv_0, [2, 2]); const convPairParams = [ params.conv_1, @@ -49,27 +46,26 @@ export function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) { params.conv_10, params.conv_11, params.conv_12, - params.conv_13 - ] + params.conv_13, + ]; convPairParams.forEach((param, i) => { - const layerIdx = i + 1 - const depthwiseConvStrides = getStridesForLayerIdx(layerIdx) - out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides) - out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]) + const layerIdx = i + 1; + const depthwiseConvStrides = getStridesForLayerIdx(layerIdx); + out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides); + out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]); if (layerIdx === 11) { - conv11 = out + conv11 = out; } - }) + }); if (conv11 === null) { - throw new Error('mobileNetV1 - output of conv layer 11 is null') + throw new Error('mobileNetV1 - output of conv layer 11 is null'); } return { out, - conv11: conv11 as any - } - - }) -} \ No newline at end of file + conv11: conv11 as any, + }; + }); +} diff --git a/src/ssdMobilenetv1/nonMaxSuppression.ts b/src/ssdMobilenetv1/nonMaxSuppression.ts index 9d1deaa..22c72a7 100644 --- a/src/ssdMobilenetv1/nonMaxSuppression.ts +++ b/src/ssdMobilenetv1/nonMaxSuppression.ts @@ -1,74 +1,67 @@ import * as tf from '../../dist/tfjs.esm.js'; +function IOU(boxes: tf.Tensor2D, i: number, j: number) { + const boxesData = boxes.arraySync(); + const yminI = Math.min(boxesData[i][0], boxesData[i][2]); + const xminI = Math.min(boxesData[i][1], boxesData[i][3]); + const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]); + const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]); + const yminJ = Math.min(boxesData[j][0], boxesData[j][2]); + const xminJ = Math.min(boxesData[j][1], boxesData[j][3]); + const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]); + const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]); + const areaI = (ymaxI - yminI) * (xmaxI - xminI); + const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ); + if (areaI <= 0 || areaJ <= 0) { + return 0.0; + } + const intersectionYmin = Math.max(yminI, yminJ); + const intersectionXmin = Math.max(xminI, xminJ); + const intersectionYmax = Math.min(ymaxI, ymaxJ); + const intersectionXmax = Math.min(xmaxI, xmaxJ); + const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0) + * Math.max(intersectionXmax - intersectionXmin, 0.0); + return intersectionArea / (areaI + areaJ - intersectionArea); +} + export function nonMaxSuppression( boxes: tf.Tensor2D, scores: number[], maxOutputSize: number, iouThreshold: number, - scoreThreshold: number + scoreThreshold: number, ): number[] { - - const numBoxes = boxes.shape[0] + const numBoxes = boxes.shape[0]; const outputSize = Math.min( maxOutputSize, - numBoxes - ) + numBoxes, + ); const candidates = scores .map((score, boxIndex) => ({ score, boxIndex })) - .filter(c => c.score > scoreThreshold) - .sort((c1, c2) => c2.score - c1.score) + .filter((c) => c.score > scoreThreshold) + .sort((c1, c2) => c2.score - c1.score); - const suppressFunc = (x: number) => x <= iouThreshold ? 1 : 0 + const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0); - const selected: number[] = [] + const selected: number[] = []; - candidates.forEach(c => { + candidates.forEach((c) => { if (selected.length >= outputSize) { - return + return; } - const originalScore = c.score + const originalScore = c.score; for (let j = selected.length - 1; j >= 0; --j) { - const iou = IOU(boxes, c.boxIndex, selected[j]) - if (iou === 0.0) { - continue - } - c.score *= suppressFunc(iou) - if (c.score <= scoreThreshold) { - break - } + const iou = IOU(boxes, c.boxIndex, selected[j]); + if (iou === 0.0) continue; + c.score *= suppressFunc(iou); + if (c.score <= scoreThreshold) break; } - if (originalScore === c.score) { - selected.push(c.boxIndex) + selected.push(c.boxIndex); } - }) + }); - return selected + return selected; } - -function IOU(boxes: tf.Tensor2D, i: number, j: number) { - const boxesData = boxes.arraySync() - const yminI = Math.min(boxesData[i][0], boxesData[i][2]) - const xminI = Math.min(boxesData[i][1], boxesData[i][3]) - const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]) - const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]) - const yminJ = Math.min(boxesData[j][0], boxesData[j][2]) - const xminJ = Math.min(boxesData[j][1], boxesData[j][3]) - const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]) - const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]) - const areaI = (ymaxI - yminI) * (xmaxI - xminI) - const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ) - if (areaI <= 0 || areaJ <= 0) { - return 0.0 - } - const intersectionYmin = Math.max(yminI, yminJ) - const intersectionXmin = Math.max(xminI, xminJ) - const intersectionYmax = Math.min(ymaxI, ymaxJ) - const intersectionXmax = Math.min(xmaxI, xmaxJ) - const intersectionArea = - Math.max(intersectionYmax - intersectionYmin, 0.0) * - Math.max(intersectionXmax - intersectionXmin, 0.0) - return intersectionArea / (areaI + areaJ - intersectionArea) -} \ No newline at end of file diff --git a/src/ssdMobilenetv1/outputLayer.ts b/src/ssdMobilenetv1/outputLayer.ts index bcbdbb1..20f1a91 100644 --- a/src/ssdMobilenetv1/outputLayer.ts +++ b/src/ssdMobilenetv1/outputLayer.ts @@ -2,84 +2,81 @@ import * as tf from '../../dist/tfjs.esm.js'; import { OutputLayerParams } from './types'; - function getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) { - const vec = tf.unstack(tf.transpose(x, [1, 0])) + const vec = tf.unstack(tf.transpose(x, [1, 0])); const sizes = [ tf.sub(vec[2], vec[0]), - tf.sub(vec[3], vec[1]) - ] + tf.sub(vec[3], vec[1]), + ]; const centers = [ tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))), - tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))) - ] + tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))), + ]; return { sizes, - centers - } + centers, + }; } function decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) { const { sizes, - centers - } = getCenterCoordinatesAndSizesLayer(x0) + centers, + } = getCenterCoordinatesAndSizesLayer(x0); - const vec = tf.unstack(tf.transpose(x1, [1, 0])) + const vec = tf.unstack(tf.transpose(x1, [1, 0])); - const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2)) - const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]) + const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2)); + const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]); - const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2)) - const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]) + const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2)); + const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]); return tf.transpose( tf.stack([ tf.sub(add0_out, div0_out), tf.sub(add1_out, div1_out), tf.add(add0_out, div0_out), - tf.add(add1_out, div1_out) + tf.add(add1_out, div1_out), ]), - [1, 0] - ) + [1, 0], + ); } export function outputLayer( boxPredictions: tf.Tensor4D, classPredictions: tf.Tensor4D, - params: OutputLayerParams + params: OutputLayerParams, ) { return tf.tidy(() => { - - const batchSize = boxPredictions.shape[0] + const batchSize = boxPredictions.shape[0]; let boxes = decodeBoxesLayer( tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D, - tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D - ) + tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D, + ); boxes = tf.reshape( boxes, - [batchSize, (boxes.shape[0] / batchSize), 4] - ) + [batchSize, (boxes.shape[0] / batchSize), 4], + ); - const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1])) - let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor + const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1])); + let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor; scores = tf.reshape( scores, - [batchSize, scores.shape[1] as number] - ) + [batchSize, scores.shape[1] as number], + ); - const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[] - const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[] + const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[]; + const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[]; return { boxes: boxesByBatch, - scores: scoresByBatch - } - - }) -} \ No newline at end of file + scores: scoresByBatch, + }; + }); +} diff --git a/src/ssdMobilenetv1/pointwiseConvLayer.ts b/src/ssdMobilenetv1/pointwiseConvLayer.ts index e6e8de1..659e8e9 100644 --- a/src/ssdMobilenetv1/pointwiseConvLayer.ts +++ b/src/ssdMobilenetv1/pointwiseConvLayer.ts @@ -5,13 +5,11 @@ import { PointwiseConvParams } from './types'; export function pointwiseConvLayer( x: tf.Tensor4D, params: PointwiseConvParams, - strides: [number, number] + strides: [number, number], ) { return tf.tidy(() => { - - let out = tf.conv2d(x, params.filters, strides, 'same') - out = tf.add(out, params.batch_norm_offset) - return tf.clipByValue(out, 0, 6) - - }) -} \ No newline at end of file + let out = tf.conv2d(x, params.filters, strides, 'same'); + out = tf.add(out, params.batch_norm_offset); + return tf.clipByValue(out, 0, 6); + }); +} diff --git a/src/ssdMobilenetv1/predictionLayer.ts b/src/ssdMobilenetv1/predictionLayer.ts index 0582585..5964bdc 100644 --- a/src/ssdMobilenetv1/predictionLayer.ts +++ b/src/ssdMobilenetv1/predictionLayer.ts @@ -7,25 +7,24 @@ import { PredictionLayerParams } from './types'; export function predictionLayer( x: tf.Tensor4D, conv11: tf.Tensor4D, - params: PredictionLayerParams + params: PredictionLayerParams, ) { return tf.tidy(() => { + const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]); + const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]); + const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]); + const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]); + const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]); + const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]); + const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]); + const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]); - const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]) - const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]) - const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]) - const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]) - const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]) - const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]) - const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]) - const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]) - - const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0) - const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1) - const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2) - const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3) - const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4) - const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5) + const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0); + const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1); + const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2); + const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3); + const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4); + const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5); const boxPredictions = tf.concat([ boxPrediction0.boxPredictionEncoding, @@ -33,8 +32,8 @@ export function predictionLayer( boxPrediction2.boxPredictionEncoding, boxPrediction3.boxPredictionEncoding, boxPrediction4.boxPredictionEncoding, - boxPrediction5.boxPredictionEncoding - ], 1) as tf.Tensor4D + boxPrediction5.boxPredictionEncoding, + ], 1) as tf.Tensor4D; const classPredictions = tf.concat([ boxPrediction0.classPrediction, @@ -42,12 +41,12 @@ export function predictionLayer( boxPrediction2.classPrediction, boxPrediction3.classPrediction, boxPrediction4.classPrediction, - boxPrediction5.classPrediction - ], 1) as tf.Tensor4D + boxPrediction5.classPrediction, + ], 1) as tf.Tensor4D; return { boxPredictions, - classPredictions - } - }) -} \ No newline at end of file + classPredictions, + }; + }); +} diff --git a/src/ssdMobilenetv1/types.ts b/src/ssdMobilenetv1/types.ts index 241c6c0..f73b6cc 100644 --- a/src/ssdMobilenetv1/types.ts +++ b/src/ssdMobilenetv1/types.ts @@ -71,4 +71,4 @@ export type NetParams = { mobilenetv1: MobileNetV1.Params, prediction_layer: PredictionLayerParams, output_layer: OutputLayerParams -} \ No newline at end of file +} diff --git a/src/tfjs/tf-browser.js b/src/tfjs/tf-browser.js index b3672ce..e77521c 100644 --- a/src/tfjs/tf-browser.js +++ b/src/tfjs/tf-browser.js @@ -1,3 +1,6 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* eslint-disable node/no-unpublished-import */ + // wrapper to load tfjs in a single place so version can be changed quickly // simplified diff --git a/src/tfjs/tf-node-gpu.js b/src/tfjs/tf-node-gpu.js index 68781c3..407d486 100644 --- a/src/tfjs/tf-node-gpu.js +++ b/src/tfjs/tf-node-gpu.js @@ -1 +1,4 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* eslint-disable node/no-unpublished-import */ + export * from '@tensorflow/tfjs-node-gpu'; diff --git a/src/tfjs/tf-node.js b/src/tfjs/tf-node.js index c752d1b..1df0c5d 100644 --- a/src/tfjs/tf-node.js +++ b/src/tfjs/tf-node.js @@ -1 +1,4 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* eslint-disable node/no-unpublished-import */ + export * from '@tensorflow/tfjs-node'; diff --git a/src/tinyFaceDetector/TinyFaceDetector.ts b/src/tinyFaceDetector/TinyFaceDetector.ts index 4d452bd..6b74790 100644 --- a/src/tinyFaceDetector/TinyFaceDetector.ts +++ b/src/tinyFaceDetector/TinyFaceDetector.ts @@ -9,7 +9,6 @@ import { TinyYolov2NetParams } from '../tinyYolov2/types'; import { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const'; export class TinyFaceDetector extends TinyYolov2Base { - constructor() { const config = { withSeparableConvs: true, @@ -18,26 +17,26 @@ export class TinyFaceDetector extends TinyYolov2Base { anchors: BOX_ANCHORS, meanRgb: MEAN_RGB, isFirstLayerConv2d: true, - filterSizes: [3, 16, 32, 64, 128, 256, 512] - } + filterSizes: [3, 16, 32, 64, 128, 256, 512], + }; - super(config) + super(config); } public get anchors(): Point[] { - return this.config.anchors + return this.config.anchors; } public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise { - const objectDetections = await this.detect(input, forwardParams) - return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight })) + const objectDetections = await this.detect(input, forwardParams); + return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight })); } protected getDefaultModelName(): string { - return 'tiny_face_detector_model' + return 'tiny_face_detector_model'; } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } { - return super.extractParamsFromWeigthMap(weightMap) + return super.extractParamsFromWeigthMap(weightMap); } -} \ No newline at end of file +} diff --git a/src/tinyFaceDetector/TinyFaceDetectorOptions.ts b/src/tinyFaceDetector/TinyFaceDetectorOptions.ts index 556c9e3..447e6b3 100644 --- a/src/tinyFaceDetector/TinyFaceDetectorOptions.ts +++ b/src/tinyFaceDetector/TinyFaceDetectorOptions.ts @@ -4,4 +4,4 @@ export interface ITinyFaceDetectorOptions extends ITinyYolov2Options {} export class TinyFaceDetectorOptions extends TinyYolov2Options { protected _name: string = 'TinyFaceDetectorOptions' -} \ No newline at end of file +} diff --git a/src/tinyFaceDetector/const.ts b/src/tinyFaceDetector/const.ts index 8993878..c9b2e88 100644 --- a/src/tinyFaceDetector/const.ts +++ b/src/tinyFaceDetector/const.ts @@ -1,13 +1,13 @@ import { Point } from '../classes/index'; -export const IOU_THRESHOLD = 0.4 +export const IOU_THRESHOLD = 0.4; export const BOX_ANCHORS = [ new Point(1.603231, 2.094468), new Point(6.041143, 7.080126), new Point(2.882459, 3.518061), new Point(4.266906, 5.178857), - new Point(9.041765, 10.66308) -] + new Point(9.041765, 10.66308), +]; -export const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404] \ No newline at end of file +export const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404]; diff --git a/src/tinyFaceDetector/index.ts b/src/tinyFaceDetector/index.ts index f28abf6..80a1353 100644 --- a/src/tinyFaceDetector/index.ts +++ b/src/tinyFaceDetector/index.ts @@ -4,7 +4,7 @@ export * from './TinyFaceDetector'; export * from './TinyFaceDetectorOptions'; export function createTinyFaceDetector(weights: Float32Array) { - const net = new TinyFaceDetector() - net.extractWeights(weights) - return net -} \ No newline at end of file + const net = new TinyFaceDetector(); + net.extractWeights(weights); + return net; +} diff --git a/src/tinyYolov2/TinyYolov2.ts b/src/tinyYolov2/TinyYolov2.ts index eb1270e..931df16 100644 --- a/src/tinyYolov2/TinyYolov2.ts +++ b/src/tinyYolov2/TinyYolov2.ts @@ -16,45 +16,43 @@ import { ITinyYolov2Options } from './TinyYolov2Options'; import { TinyYolov2NetParams } from './types'; export class TinyYolov2 extends TinyYolov2Base { - constructor(withSeparableConvs: boolean = true) { - const config = Object.assign({}, { + const config = { withSeparableConvs, iouThreshold: IOU_THRESHOLD, - classes: ['face'] - }, - withSeparableConvs - ? { - anchors: BOX_ANCHORS_SEPARABLE, - meanRgb: MEAN_RGB_SEPARABLE - } - : { - anchors: BOX_ANCHORS, - withClassScores: true - } - ) + classes: ['face'], + ...(withSeparableConvs + ? { + anchors: BOX_ANCHORS_SEPARABLE, + meanRgb: MEAN_RGB_SEPARABLE, + } + : { + anchors: BOX_ANCHORS, + withClassScores: true, + }), + }; - super(config) + super(config); } public get withSeparableConvs(): boolean { - return this.config.withSeparableConvs + return this.config.withSeparableConvs; } public get anchors(): Point[] { - return this.config.anchors + return this.config.anchors; } public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise { - const objectDetections = await this.detect(input, forwardParams) - return objectDetections.map(det => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight })) + const objectDetections = await this.detect(input, forwardParams); + return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight })); } protected getDefaultModelName(): string { - return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME + return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME; } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } { - return super.extractParamsFromWeigthMap(weightMap) + return super.extractParamsFromWeigthMap(weightMap); } -} \ No newline at end of file +} diff --git a/src/tinyYolov2/TinyYolov2Base.ts b/src/tinyYolov2/TinyYolov2Base.ts index c55b728..43d8c24 100644 --- a/src/tinyYolov2/TinyYolov2Base.ts +++ b/src/tinyYolov2/TinyYolov2Base.ts @@ -22,236 +22,226 @@ import { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options'; import { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types'; export class TinyYolov2Base extends NeuralNetwork { - public static DEFAULT_FILTER_SIZES = [ - 3, 16, 32, 64, 128, 256, 512, 1024, 1024 + 3, 16, 32, 64, 128, 256, 512, 1024, 1024, ] private _config: TinyYolov2Config constructor(config: TinyYolov2Config) { - super('TinyYolov2') - validateConfig(config) - this._config = config + super('TinyYolov2'); + validateConfig(config); + this._config = config; } public get config(): TinyYolov2Config { - return this._config + return this._config; } public get withClassScores(): boolean { - return this.config.withClassScores || this.config.classes.length > 1 + return this.config.withClassScores || this.config.classes.length > 1; } public get boxEncodingSize(): number { - return 5 + (this.withClassScores ? this.config.classes.length : 0) + return 5 + (this.withClassScores ? this.config.classes.length : 0); } public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D { + let out = convWithBatchNorm(x, params.conv0); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = convWithBatchNorm(out, params.conv1); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = convWithBatchNorm(out, params.conv2); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = convWithBatchNorm(out, params.conv3); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = convWithBatchNorm(out, params.conv4); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = convWithBatchNorm(out, params.conv5); + out = tf.maxPool(out, [2, 2], [1, 1], 'same'); + out = convWithBatchNorm(out, params.conv6); + out = convWithBatchNorm(out, params.conv7); - let out = convWithBatchNorm(x, params.conv0) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = convWithBatchNorm(out, params.conv1) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = convWithBatchNorm(out, params.conv2) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = convWithBatchNorm(out, params.conv3) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = convWithBatchNorm(out, params.conv4) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = convWithBatchNorm(out, params.conv5) - out = tf.maxPool(out, [2, 2], [1, 1], 'same') - out = convWithBatchNorm(out, params.conv6) - out = convWithBatchNorm(out, params.conv7) - - return convLayer(out, params.conv8, 'valid', false) + return convLayer(out, params.conv8, 'valid', false); } public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D { - let out = this.config.isFirstLayerConv2d ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false)) - : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = depthwiseSeparableConv(out, params.conv1) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = depthwiseSeparableConv(out, params.conv2) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = depthwiseSeparableConv(out, params.conv3) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = depthwiseSeparableConv(out, params.conv4) - out = tf.maxPool(out, [2, 2], [2, 2], 'same') - out = depthwiseSeparableConv(out, params.conv5) - out = tf.maxPool(out, [2, 2], [1, 1], 'same') - out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out - out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out + : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = depthwiseSeparableConv(out, params.conv1); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = depthwiseSeparableConv(out, params.conv2); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = depthwiseSeparableConv(out, params.conv3); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = depthwiseSeparableConv(out, params.conv4); + out = tf.maxPool(out, [2, 2], [2, 2], 'same'); + out = depthwiseSeparableConv(out, params.conv5); + out = tf.maxPool(out, [2, 2], [1, 1], 'same'); + out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out; + out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out; - return convLayer(out, params.conv8, 'valid', false) + return convLayer(out, params.conv8, 'valid', false); } public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D { - - const { params } = this + const { params } = this; if (!params) { - throw new Error('TinyYolov2 - load model before inference') + throw new Error('TinyYolov2 - load model before inference'); } return tf.tidy(() => { - // let batchTensor = input.toBatchTensor(inputSize, false).toFloat() let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32'); batchTensor = this.config.meanRgb ? normalize(batchTensor, this.config.meanRgb) - : batchTensor - batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D + : batchTensor; + batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D; return this.config.withSeparableConvs ? this.runMobilenet(batchTensor, params as MobilenetParams) - : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams) - }) + : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams); + }); } public async forward(input: TNetInput, inputSize: number): Promise { - return await this.forwardInput(await toNetInput(input), inputSize) + return this.forwardInput(await toNetInput(input), inputSize); } public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise { + const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams); - const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams) - - const netInput = await toNetInput(input) - const out = await this.forwardInput(netInput, inputSize) - const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D + const netInput = await toNetInput(input); + const out = await this.forwardInput(netInput, inputSize); + const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D; const inputDimensions = { width: netInput.getInputWidth(0), - height: netInput.getInputHeight(0) - } + height: netInput.getInputHeight(0), + }; - const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold) - out.dispose() - out0.dispose() + const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold); + out.dispose(); + out0.dispose(); - const boxes = results.map(res => res.box) - const scores = results.map(res => res.score) - const classScores = results.map(res => res.classScore) - const classNames = results.map(res => this.config.classes[res.label]) + const boxes = results.map((res) => res.box); + const scores = results.map((res) => res.score); + const classScores = results.map((res) => res.classScore); + const classNames = results.map((res) => this.config.classes[res.label]); const indices = nonMaxSuppression( - boxes.map(box => box.rescale(inputSize)), + boxes.map((box) => box.rescale(inputSize)), scores, this.config.iouThreshold, - true - ) + true, + ); - const detections = indices.map(idx => - new ObjectDetection( - scores[idx], - classScores[idx], - classNames[idx], - boxes[idx], - inputDimensions - ) - ) + const detections = indices.map((idx) => new ObjectDetection( + scores[idx], + classScores[idx], + classNames[idx], + boxes[idx], + inputDimensions, + )); - return detections + return detections; } protected getDefaultModelName(): string { - return '' + return ''; } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) { - return extractParamsFromWeigthMap(weightMap, this.config) + return extractParamsFromWeigthMap(weightMap, this.config); } protected extractParams(weights: Float32Array) { - const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES + const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES; - const numFilters = filterSizes ? filterSizes.length : undefined + const numFilters = filterSizes ? filterSizes.length : undefined; if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) { - throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`) + throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`); } - return extractParams(weights, this.config, this.boxEncodingSize, filterSizes) + return extractParams(weights, this.config, this.boxEncodingSize, filterSizes); } protected async extractBoxes( outputTensor: tf.Tensor4D, inputBlobDimensions: Dimensions, - scoreThreshold?: number + scoreThreshold?: number, ) { + const { width, height } = inputBlobDimensions; + const inputSize = Math.max(width, height); + const correctionFactorX = inputSize / width; + const correctionFactorY = inputSize / height; - const { width, height } = inputBlobDimensions - const inputSize = Math.max(width, height) - const correctionFactorX = inputSize / width - const correctionFactorY = inputSize / height - - const numCells = outputTensor.shape[1] - const numBoxes = this.config.anchors.length + const numCells = outputTensor.shape[1]; + const numBoxes = this.config.anchors.length; const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => { - const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]) + const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]); - const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]) - const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]) + const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]); + const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]); const classScores = this.withClassScores ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3) - : tf.scalar(0) - return [boxes, scores, classScores] - }) + : tf.scalar(0); + return [boxes, scores, classScores]; + }); const results = [] as any; - const scoresData = await scoresTensor.array() - const boxesData = await boxesTensor.array() - for (let row = 0; row < numCells; row ++) { - for (let col = 0; col < numCells; col ++) { - for (let anchor = 0; anchor < numBoxes; anchor ++) { - + const scoresData = await scoresTensor.array(); + const boxesData = await boxesTensor.array(); + for (let row = 0; row < numCells; row++) { + for (let col = 0; col < numCells; col++) { + for (let anchor = 0; anchor < numBoxes; anchor++) { const score = sigmoid(scoresData[row][col][anchor][0]); if (!scoreThreshold || score > scoreThreshold) { - const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX - const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY - const width = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX - const height = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY + const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX; + const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY; + const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX; + const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY; - const x = (ctX - (width / 2)) - const y = (ctY - (height / 2)) + const x = (ctX - (widthLocal / 2)); + const y = (ctY - (heightLocal / 2)); - const pos = { row, col, anchor } + const pos = { row, col, anchor }; const { classScore, label } = this.withClassScores ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos) - : { classScore: 1, label: 0 } + : { classScore: 1, label: 0 }; results.push({ - box: new BoundingBox(x, y, x + width, y + height), - score: score, + box: new BoundingBox(x, y, x + widthLocal, y + heightLocal), + score, classScore: score * classScore, label, - ...pos - }) + ...pos, + }); } } } } - boxesTensor.dispose() - scoresTensor.dispose() - classScoresTensor.dispose() + boxesTensor.dispose(); + scoresTensor.dispose(); + classScoresTensor.dispose(); - return results + return results; } - private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number },) { - const { row, col, anchor } = pos - const classesData = await classesTensor.array() + private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) { + const { row, col, anchor } = pos; + const classesData = await classesTensor.array(); return Array(this.config.classes.length).fill(0) .map((_, i) => classesData[row][col][anchor][i]) .map((classScore, label) => ({ classScore, - label + label, })) - .reduce((max, curr) => max.classScore > curr.classScore ? max : curr) + .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr)); } -} \ No newline at end of file +} diff --git a/src/tinyYolov2/TinyYolov2Options.ts b/src/tinyYolov2/TinyYolov2Options.ts index 6b425e3..890e4db 100644 --- a/src/tinyYolov2/TinyYolov2Options.ts +++ b/src/tinyYolov2/TinyYolov2Options.ts @@ -1,10 +1,3 @@ -export enum TinyYolov2SizeType { - XS = 224, - SM = 320, - MD = 416, - LG = 608 -} - export interface ITinyYolov2Options { inputSize?: number scoreThreshold?: number @@ -14,21 +7,23 @@ export class TinyYolov2Options { protected _name: string = 'TinyYolov2Options' private _inputSize: number + private _scoreThreshold: number constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) { - this._inputSize = inputSize || 416 - this._scoreThreshold = scoreThreshold || 0.5 + this._inputSize = inputSize || 416; + this._scoreThreshold = scoreThreshold || 0.5; if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) { - throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`) + throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`); } if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) { - throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`) + throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`); } } - get inputSize(): number { return this._inputSize } - get scoreThreshold(): number { return this._scoreThreshold } -} \ No newline at end of file + get inputSize(): number { return this._inputSize; } + + get scoreThreshold(): number { return this._scoreThreshold; } +} diff --git a/src/tinyYolov2/config.ts b/src/tinyYolov2/config.ts index 3d7c0a2..0260a26 100644 --- a/src/tinyYolov2/config.ts +++ b/src/tinyYolov2/config.ts @@ -11,19 +11,19 @@ export type TinyYolov2Config = { isFirstLayerConv2d?: boolean } -const isNumber = (arg: any) => typeof arg === 'number' +const isNumber = (arg: any) => typeof arg === 'number'; export function validateConfig(config: any) { if (!config) { - throw new Error(`invalid config: ${config}`) + throw new Error(`invalid config: ${config}`); } if (typeof config.withSeparableConvs !== 'boolean') { - throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`) + throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`); } if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) { - throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`) + throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`); } if ( @@ -31,8 +31,7 @@ export function validateConfig(config: any) { || !config.classes.length || !config.classes.every((c: any) => typeof c === 'string') ) { - - throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`) + throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`); } if ( @@ -40,8 +39,7 @@ export function validateConfig(config: any) { || !config.anchors.length || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y)) ) { - - throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`) + throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`); } if (config.meanRgb && ( @@ -49,7 +47,6 @@ export function validateConfig(config: any) { || config.meanRgb.length !== 3 || !config.meanRgb.every(isNumber) )) { - - throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`) + throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`); } -} \ No newline at end of file +} diff --git a/src/tinyYolov2/const.ts b/src/tinyYolov2/const.ts index 58e8e8b..012bb4a 100644 --- a/src/tinyYolov2/const.ts +++ b/src/tinyYolov2/const.ts @@ -1,24 +1,24 @@ import { Point } from '../classes/index'; -export const IOU_THRESHOLD = 0.4 +export const IOU_THRESHOLD = 0.4; export const BOX_ANCHORS = [ new Point(0.738768, 0.874946), new Point(2.42204, 2.65704), new Point(4.30971, 7.04493), new Point(10.246, 4.59428), - new Point(12.6868, 11.8741) -] + new Point(12.6868, 11.8741), +]; export const BOX_ANCHORS_SEPARABLE = [ new Point(1.603231, 2.094468), new Point(6.041143, 7.080126), new Point(2.882459, 3.518061), new Point(4.266906, 5.178857), - new Point(9.041765, 10.66308) -] + new Point(9.041765, 10.66308), +]; -export const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404] +export const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404]; -export const DEFAULT_MODEL_NAME = 'tiny_yolov2_model' -export const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model' \ No newline at end of file +export const DEFAULT_MODEL_NAME = 'tiny_yolov2_model'; +export const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model'; diff --git a/src/tinyYolov2/convWithBatchNorm.ts b/src/tinyYolov2/convWithBatchNorm.ts index bada40f..5d80a31 100644 --- a/src/tinyYolov2/convWithBatchNorm.ts +++ b/src/tinyYolov2/convWithBatchNorm.ts @@ -3,15 +3,15 @@ import * as tf from '../../dist/tfjs.esm.js'; import { leaky } from './leaky'; import { ConvWithBatchNorm } from './types'; -export function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D { +export function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D { return tf.tidy(() => { - let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D + let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D; - out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid') - out = tf.sub(out, params.bn.sub) - out = tf.mul(out, params.bn.truediv) - out = tf.add(out, params.conv.bias) + out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid'); + out = tf.sub(out, params.bn.sub); + out = tf.mul(out, params.bn.truediv); + out = tf.add(out, params.conv.bias); - return leaky(out) - }) -} \ No newline at end of file + return leaky(out); + }); +} diff --git a/src/tinyYolov2/depthwiseSeparableConv.ts b/src/tinyYolov2/depthwiseSeparableConv.ts index 0bc2a3d..5fb01ad 100644 --- a/src/tinyYolov2/depthwiseSeparableConv.ts +++ b/src/tinyYolov2/depthwiseSeparableConv.ts @@ -3,13 +3,13 @@ import * as tf from '../../dist/tfjs.esm.js'; import { SeparableConvParams } from '../common/types'; import { leaky } from './leaky'; -export function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D { +export function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D { return tf.tidy(() => { - let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D + let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D; - out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid') - out = tf.add(out, params.bias) + out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid'); + out = tf.add(out, params.bias); - return leaky(out) - }) -} \ No newline at end of file + return leaky(out); + }); +} diff --git a/src/tinyYolov2/extractParams.ts b/src/tinyYolov2/extractParams.ts index 22542ae..494c686 100644 --- a/src/tinyYolov2/extractParams.ts +++ b/src/tinyYolov2/extractParams.ts @@ -8,94 +8,92 @@ import { TinyYolov2Config } from './config'; import { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types'; function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) { - - const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings) + const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings); function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm { - - const sub = tf.tensor1d(extractWeights(size)) - const truediv = tf.tensor1d(extractWeights(size)) + const sub = tf.tensor1d(extractWeights(size)); + const truediv = tf.tensor1d(extractWeights(size)); paramMappings.push( { paramPath: `${mappedPrefix}/sub` }, - { paramPath: `${mappedPrefix}/truediv` } - ) + { paramPath: `${mappedPrefix}/truediv` }, + ); - return { sub, truediv } + return { sub, truediv }; } function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm { + const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`); + const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`); - const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`) - const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`) - - return { conv, bn } + return { conv, bn }; } - const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings) + const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings); return { extractConvParams, extractConvWithBatchNormParams, - extractSeparableConvParams - } - + extractSeparableConvParams, + }; } export function extractParams( weights: Float32Array, config: TinyYolov2Config, boxEncodingSize: number, - filterSizes: number[] + filterSizes: number[], ): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } { - const { extractWeights, - getRemainingWeights - } = extractWeightsFactory(weights) + getRemainingWeights, + } = extractWeightsFactory(weights); - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractConvParams, extractConvWithBatchNormParams, - extractSeparableConvParams - } = extractorsFactory(extractWeights, paramMappings) + extractSeparableConvParams, + } = extractorsFactory(extractWeights, paramMappings); - let params: TinyYolov2NetParams + let params: TinyYolov2NetParams; if (config.withSeparableConvs) { - const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes + const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes; const conv0 = config.isFirstLayerConv2d ? extractConvParams(s0, s1, 3, 'conv0') - : extractSeparableConvParams(s0, s1, 'conv0') - const conv1 = extractSeparableConvParams(s1, s2, 'conv1') - const conv2 = extractSeparableConvParams(s2, s3, 'conv2') - const conv3 = extractSeparableConvParams(s3, s4, 'conv3') - const conv4 = extractSeparableConvParams(s4, s5, 'conv4') - const conv5 = extractSeparableConvParams(s5, s6, 'conv5') - const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined - const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined - const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8') - params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 } + : extractSeparableConvParams(s0, s1, 'conv0'); + const conv1 = extractSeparableConvParams(s1, s2, 'conv1'); + const conv2 = extractSeparableConvParams(s2, s3, 'conv2'); + const conv3 = extractSeparableConvParams(s3, s4, 'conv3'); + const conv4 = extractSeparableConvParams(s4, s5, 'conv4'); + const conv5 = extractSeparableConvParams(s5, s6, 'conv5'); + const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined; + const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined; + const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8'); + params = { + conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, + }; } else { - const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes - const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0',) - const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1') - const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2') - const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3') - const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4') - const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5') - const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6') - const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7') - const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8') - params = { conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8 } + const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes; + const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0'); + const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1'); + const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2'); + const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3'); + const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4'); + const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5'); + const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6'); + const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7'); + const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8'); + params = { + conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, + }; } if (getRemainingWeights().length !== 0) { - throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`) + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); } - - return { params, paramMappings } -} \ No newline at end of file + return { params, paramMappings }; +} diff --git a/src/tinyYolov2/extractParamsFromWeigthMap.ts b/src/tinyYolov2/extractParamsFromWeigthMap.ts index 1b74d95..25427c8 100644 --- a/src/tinyYolov2/extractParamsFromWeigthMap.ts +++ b/src/tinyYolov2/extractParamsFromWeigthMap.ts @@ -9,54 +9,52 @@ import { TinyYolov2Config } from './config'; import { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types'; function extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) { - - const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings) + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); function extractBatchNormParams(prefix: string): BatchNorm { - const sub = extractWeightEntry(`${prefix}/sub`, 1) - const truediv = extractWeightEntry(`${prefix}/truediv`, 1) - return { sub, truediv } + const sub = extractWeightEntry(`${prefix}/sub`, 1); + const truediv = extractWeightEntry(`${prefix}/truediv`, 1); + return { sub, truediv }; } function extractConvParams(prefix: string): ConvParams { - const filters = extractWeightEntry(`${prefix}/filters`, 4) - const bias = extractWeightEntry(`${prefix}/bias`, 1) - return { filters, bias } + const filters = extractWeightEntry(`${prefix}/filters`, 4); + const bias = extractWeightEntry(`${prefix}/bias`, 1); + return { filters, bias }; } function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm { - const conv = extractConvParams(`${prefix}/conv`) - const bn = extractBatchNormParams(`${prefix}/bn`) - return { conv, bn } + const conv = extractConvParams(`${prefix}/conv`); + const bn = extractBatchNormParams(`${prefix}/bn`); + return { conv, bn }; } - const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry) + const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry); return { extractConvParams, extractConvWithBatchNormParams, - extractSeparableConvParams - } - + extractSeparableConvParams, + }; } export function extractParamsFromWeigthMap( weightMap: tf.NamedTensorMap, - config: TinyYolov2Config + config: TinyYolov2Config, ): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractConvParams, extractConvWithBatchNormParams, - extractSeparableConvParams - } = extractorsFactory(weightMap, paramMappings) + extractSeparableConvParams, + } = extractorsFactory(weightMap, paramMappings); - let params: TinyYolov2NetParams + let params: TinyYolov2NetParams; if (config.withSeparableConvs) { - const numFilters = (config.filterSizes && config.filterSizes.length || 9) + // eslint-disable-next-line no-mixed-operators + const numFilters = (config.filterSizes && config.filterSizes.length || 9); params = { conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'), conv1: extractSeparableConvParams('conv1'), @@ -66,8 +64,8 @@ export function extractParamsFromWeigthMap( conv5: extractSeparableConvParams('conv5'), conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined, conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined, - conv8: extractConvParams('conv8') - } + conv8: extractConvParams('conv8'), + }; } else { params = { conv0: extractConvWithBatchNormParams('conv0'), @@ -78,11 +76,11 @@ export function extractParamsFromWeigthMap( conv5: extractConvWithBatchNormParams('conv5'), conv6: extractConvWithBatchNormParams('conv6'), conv7: extractConvWithBatchNormParams('conv7'), - conv8: extractConvParams('conv8') - } + conv8: extractConvParams('conv8'), + }; } - disposeUnusedWeightTensors(weightMap, paramMappings) + disposeUnusedWeightTensors(weightMap, paramMappings); - return { params, paramMappings } -} \ No newline at end of file + return { params, paramMappings }; +} diff --git a/src/tinyYolov2/index.ts b/src/tinyYolov2/index.ts index b2b3bc4..9b847a1 100644 --- a/src/tinyYolov2/index.ts +++ b/src/tinyYolov2/index.ts @@ -2,13 +2,13 @@ import { TinyYolov2 } from './TinyYolov2'; export * from './TinyYolov2Options'; -export * from './config' -export * from './types' +export * from './config'; +export * from './types'; -export { TinyYolov2 } +export { TinyYolov2 }; export function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) { - const net = new TinyYolov2(withSeparableConvs) - net.extractWeights(weights) - return net -} \ No newline at end of file + const net = new TinyYolov2(withSeparableConvs); + net.extractWeights(weights); + return net; +} diff --git a/src/tinyYolov2/leaky.ts b/src/tinyYolov2/leaky.ts index c05e675..56f4d15 100644 --- a/src/tinyYolov2/leaky.ts +++ b/src/tinyYolov2/leaky.ts @@ -2,8 +2,8 @@ import * as tf from '../../dist/tfjs.esm.js'; export function leaky(x: tf.Tensor4D): tf.Tensor4D { return tf.tidy(() => { - const min = tf.mul(x, tf.scalar(0.10000000149011612)) - return tf.add(tf.relu(tf.sub(x, min)), min) - //return tf.maximum(x, min) - }) -} \ No newline at end of file + const min = tf.mul(x, tf.scalar(0.10000000149011612)); + return tf.add(tf.relu(tf.sub(x, min)), min); + // return tf.maximum(x, min) + }); +} diff --git a/src/tinyYolov2/types.ts b/src/tinyYolov2/types.ts index 206356d..5a5fcd1 100644 --- a/src/tinyYolov2/types.ts +++ b/src/tinyYolov2/types.ts @@ -37,4 +37,4 @@ export type DefaultTinyYolov2NetParams = { conv8: ConvParams } -export type TinyYolov2NetParams = DefaultTinyYolov2NetParams | MobilenetParams \ No newline at end of file +export type TinyYolov2NetParams = DefaultTinyYolov2NetParams | MobilenetParams diff --git a/src/utils/index.ts b/src/utils/index.ts index 4dc8f00..7ff8761 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -4,60 +4,61 @@ import { Point } from '../classes/index'; import { Dimensions, IDimensions } from '../classes/Dimensions'; export function isTensor(tensor: any, dim: number) { - return tensor instanceof tf.Tensor && tensor.shape.length === dim + return tensor instanceof tf.Tensor && tensor.shape.length === dim; } export function isTensor1D(tensor: any): tensor is tf.Tensor1D { - return isTensor(tensor, 1) + return isTensor(tensor, 1); } export function isTensor2D(tensor: any): tensor is tf.Tensor2D { - return isTensor(tensor, 2) + return isTensor(tensor, 2); } export function isTensor3D(tensor: any): tensor is tf.Tensor3D { - return isTensor(tensor, 3) + return isTensor(tensor, 3); } export function isTensor4D(tensor: any): tensor is tf.Tensor4D { - return isTensor(tensor, 4) + return isTensor(tensor, 4); } export function isFloat(num: number) { - return num % 1 !== 0 + return num % 1 !== 0; } export function isEven(num: number) { - return num % 2 === 0 + return num % 2 === 0; } export function round(num: number, prec: number = 2) { - const f = Math.pow(10, prec) - return Math.floor(num * f) / f + const f = 10 ** prec; + return Math.floor(num * f) / f; } export function isDimensions(obj: any): boolean { - return obj && obj.width && obj.height + return obj && obj.width && obj.height; } export function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) { - const scale = inputSize / Math.max(height, width) - return new Dimensions(Math.round(width * scale), Math.round(height * scale)) + const scale = inputSize / Math.max(height, width); + return new Dimensions(Math.round(width * scale), Math.round(height * scale)); } export function getCenterPoint(pts: Point[]): Point { return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0)) - .div(new Point(pts.length, pts.length)) + .div(new Point(pts.length, pts.length)); } export function range(num: number, start: number, step: number): number[] { - return Array(num).fill(0).map((_, i) => start + (i * step)) + return Array(num).fill(0).map((_, i) => start + (i * step)); } export function isValidNumber(num: any) { - return !!num && num !== Infinity && num !== -Infinity && !isNaN(num) || num === 0 + // eslint-disable-next-line no-mixed-operators + return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0; } export function isValidProbablitiy(num: any) { - return isValidNumber(num) && 0 <= num && num <= 1.0 -} \ No newline at end of file + return isValidNumber(num) && num >= 0 && num <= 1.0; +} diff --git a/src/xception/TinyXception.ts b/src/xception/TinyXception.ts index c701b6b..f96b86f 100644 --- a/src/xception/TinyXception.ts +++ b/src/xception/TinyXception.ts @@ -10,75 +10,73 @@ import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; import { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types'; function conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D { - return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias) + return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias); } function reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D { - let out = isActivateInput ? tf.relu(x) : x - out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]) - out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]) - out = tf.maxPool(out, [3, 3], [2, 2], 'same') - out = tf.add(out, conv(x, params.expansion_conv, [2, 2])) - return out + let out = isActivateInput ? tf.relu(x) : x; + out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]); + out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]); + out = tf.maxPool(out, [3, 3], [2, 2], 'same'); + out = tf.add(out, conv(x, params.expansion_conv, [2, 2])); + return out; } function mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D { - let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]) - out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]) - out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]) - out = tf.add(out, x) - return out + let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]); + out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]); + out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]); + out = tf.add(out, x); + return out; } export class TinyXception extends NeuralNetwork { - private _numMainBlocks: number constructor(numMainBlocks: number) { - super('TinyXception') - this._numMainBlocks = numMainBlocks + super('TinyXception'); + this._numMainBlocks = numMainBlocks; } public forwardInput(input: NetInput): tf.Tensor4D { - - const { params } = this + const { params } = this; if (!params) { - throw new Error('TinyXception - load model before inference') + throw new Error('TinyXception - load model before inference'); } return tf.tidy(() => { const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32'); - const meanRgb = [122.782, 117.001, 104.298] - const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D + const meanRgb = [122.782, 117.001, 104.298]; + const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D; - let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2])) - out = reductionBlock(out, params.entry_flow.reduction_block_0, false) - out = reductionBlock(out, params.entry_flow.reduction_block_1) + let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2])); + out = reductionBlock(out, params.entry_flow.reduction_block_0, false); + out = reductionBlock(out, params.entry_flow.reduction_block_1); range(this._numMainBlocks, 0, 1).forEach((idx) => { - out = mainBlock(out, params.middle_flow[`main_block_${idx}`]) - }) + out = mainBlock(out, params.middle_flow[`main_block_${idx}`]); + }); - out = reductionBlock(out, params.exit_flow.reduction_block) - out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1])) - return out - }) + out = reductionBlock(out, params.exit_flow.reduction_block); + out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1])); + return out; + }); } public async forward(input: TNetInput): Promise { - return this.forwardInput(await toNetInput(input)) + return this.forwardInput(await toNetInput(input)); } protected getDefaultModelName(): string { - return 'tiny_xception_model' + return 'tiny_xception_model'; } protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) { - return extractParamsFromWeigthMap(weightMap, this._numMainBlocks) + return extractParamsFromWeigthMap(weightMap, this._numMainBlocks); } protected extractParams(weights: Float32Array) { - return extractParams(weights, this._numMainBlocks) + return extractParams(weights, this._numMainBlocks); } -} \ No newline at end of file +} diff --git a/src/xception/extractParams.ts b/src/xception/extractParams.ts index d8c1ec6..5271c3d 100644 --- a/src/xception/extractParams.ts +++ b/src/xception/extractParams.ts @@ -4,82 +4,77 @@ import { range } from '../utils/index'; import { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types'; function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) { - - const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings) - const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings) + const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings); + const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings); function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams { + const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`); + const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`); + const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`); - const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`) - const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`) - const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`) - - return { separable_conv0, separable_conv1, expansion_conv } + return { separable_conv0, separable_conv1, expansion_conv }; } function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams { + const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`); + const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`); + const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`); - const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`) - const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`) - const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`) - - return { separable_conv0, separable_conv1, separable_conv2 } + return { separable_conv0, separable_conv1, separable_conv2 }; } return { extractConvParams, extractSeparableConvParams, extractReductionBlockParams, - extractMainBlockParams - } - + extractMainBlockParams, + }; } export function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractWeights, - getRemainingWeights - } = extractWeightsFactory(weights) + getRemainingWeights, + } = extractWeightsFactory(weights); const { extractConvParams, extractSeparableConvParams, extractReductionBlockParams, - extractMainBlockParams - } = extractorsFactory(extractWeights, paramMappings) + extractMainBlockParams, + } = extractorsFactory(extractWeights, paramMappings); - const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in') - const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0') - const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1') + const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in'); + const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0'); + const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1'); const entry_flow = { conv_in: entry_flow_conv_in, reduction_block_0: entry_flow_reduction_block_0, - reduction_block_1: entry_flow_reduction_block_1 - } + reduction_block_1: entry_flow_reduction_block_1, + }; - const middle_flow = {} + const middle_flow = {}; range(numMainBlocks, 0, 1).forEach((idx) => { - middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`) - }) + middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`); + }); - const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block') - const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv') + const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block'); + const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv'); const exit_flow = { reduction_block: exit_flow_reduction_block, - separable_conv: exit_flow_separable_conv - } + separable_conv: exit_flow_separable_conv, + }; if (getRemainingWeights().length !== 0) { - throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`) + throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`); } return { paramMappings, - params: { entry_flow, middle_flow, exit_flow } - } -} \ No newline at end of file + params: { entry_flow, middle_flow, exit_flow }, + }; +} diff --git a/src/xception/extractParamsFromWeigthMap.ts b/src/xception/extractParamsFromWeigthMap.ts index 1f1c123..4fe1083 100644 --- a/src/xception/extractParamsFromWeigthMap.ts +++ b/src/xception/extractParamsFromWeigthMap.ts @@ -11,76 +11,72 @@ import { range } from '../utils/index'; import { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types'; function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) { + const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); - const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings) - - const extractConvParams = loadConvParamsFactory(extractWeightEntry) - const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry) + const extractConvParams = loadConvParamsFactory(extractWeightEntry); + const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry); function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams { + const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`); + const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`); + const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`); - const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`) - const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`) - const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`) - - return { separable_conv0, separable_conv1, expansion_conv } + return { separable_conv0, separable_conv1, expansion_conv }; } function extractMainBlockParams(mappedPrefix: string): MainBlockParams { + const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`); + const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`); + const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`); - const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`) - const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`) - const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`) - - return { separable_conv0, separable_conv1, separable_conv2 } + return { separable_conv0, separable_conv1, separable_conv2 }; } return { extractConvParams, extractSeparableConvParams, extractReductionBlockParams, - extractMainBlockParams - } + extractMainBlockParams, + }; } export function extractParamsFromWeigthMap( weightMap: tf.NamedTensorMap, - numMainBlocks: number + numMainBlocks: number, ): { params: TinyXceptionParams, paramMappings: ParamMapping[] } { - - const paramMappings: ParamMapping[] = [] + const paramMappings: ParamMapping[] = []; const { extractConvParams, extractSeparableConvParams, extractReductionBlockParams, - extractMainBlockParams - } = loadParamsFactory(weightMap, paramMappings) + extractMainBlockParams, + } = loadParamsFactory(weightMap, paramMappings); - const entry_flow_conv_in = extractConvParams('entry_flow/conv_in') - const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0') - const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1') + const entry_flow_conv_in = extractConvParams('entry_flow/conv_in'); + const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0'); + const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1'); const entry_flow = { conv_in: entry_flow_conv_in, reduction_block_0: entry_flow_reduction_block_0, - reduction_block_1: entry_flow_reduction_block_1 - } + reduction_block_1: entry_flow_reduction_block_1, + }; - const middle_flow = {} + const middle_flow = {}; range(numMainBlocks, 0, 1).forEach((idx) => { - middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`) - }) + middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`); + }); - const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block') - const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv') + const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block'); + const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv'); const exit_flow = { reduction_block: exit_flow_reduction_block, - separable_conv: exit_flow_separable_conv - } + separable_conv: exit_flow_separable_conv, + }; - disposeUnusedWeightTensors(weightMap, paramMappings) + disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: { entry_flow, middle_flow, exit_flow }, paramMappings } -} \ No newline at end of file + return { params: { entry_flow, middle_flow, exit_flow }, paramMappings }; +} diff --git a/src/xception/index.ts b/src/xception/index.ts index a0e072a..021d0de 100644 --- a/src/xception/index.ts +++ b/src/xception/index.ts @@ -1 +1 @@ -export * from './TinyXception'; \ No newline at end of file +export * from './TinyXception'; diff --git a/src/xception/types.ts b/src/xception/types.ts index f6fba41..8136e45 100644 --- a/src/xception/types.ts +++ b/src/xception/types.ts @@ -23,4 +23,4 @@ export type TinyXceptionParams = { reduction_block: ReductionBlockParams separable_conv: SeparableConvParams } -} \ No newline at end of file +} diff --git a/tsconfig.json b/tsconfig.json index a14aad9..db9c091 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,8 +8,7 @@ "typings", "node_modules/@types" ], - "outFile": "dist/face-api.d.ts", - + "outDir": "types", "declaration": true, "emitDeclarationOnly": true, "emitDecoratorMetadata": true, diff --git a/types/NeuralNetwork.d.ts b/types/NeuralNetwork.d.ts new file mode 100644 index 0000000..061a59a --- /dev/null +++ b/types/NeuralNetwork.d.ts @@ -0,0 +1,44 @@ +import * as tf from '../dist/tfjs.esm.js'; +import { ParamMapping } from './common/index'; +export declare abstract class NeuralNetwork { + protected _name: string; + protected _params: TNetParams | undefined; + protected _paramMappings: ParamMapping[]; + constructor(_name: string); + get params(): TNetParams | undefined; + get paramMappings(): ParamMapping[]; + get isLoaded(): boolean; + getParamFromPath(paramPath: string): tf.Tensor; + reassignParamFromPath(paramPath: string, tensor: tf.Tensor): void; + getParamList(): { + path: string; + tensor: any; + }[]; + getTrainableParams(): { + path: string; + tensor: any; + }[]; + getFrozenParams(): { + path: string; + tensor: any; + }[]; + variable(): void; + freeze(): void; + dispose(throwOnRedispose?: boolean): void; + serializeParams(): Float32Array; + load(weightsOrUrl: Float32Array | string | undefined): Promise; + loadFromUri(uri: string | undefined): Promise; + loadFromDisk(filePath: string | undefined): Promise; + loadFromWeightMap(weightMap: tf.NamedTensorMap): void; + extractWeights(weights: Float32Array): void; + private traversePropertyPath; + protected abstract getDefaultModelName(): string; + protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: TNetParams; + paramMappings: ParamMapping[]; + }; + protected abstract extractParams(weights: Float32Array): { + params: TNetParams; + paramMappings: ParamMapping[]; + }; +} diff --git a/types/ageGenderNet/AgeGenderNet.d.ts b/types/ageGenderNet/AgeGenderNet.d.ts new file mode 100644 index 0000000..e5b9f73 --- /dev/null +++ b/types/ageGenderNet/AgeGenderNet.d.ts @@ -0,0 +1,29 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { TinyXception } from '../xception/TinyXception'; +import { AgeAndGenderPrediction, NetOutput, NetParams } from './types'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { NetInput, TNetInput } from '../dom/index'; +export declare class AgeGenderNet extends NeuralNetwork { + private _faceFeatureExtractor; + constructor(faceFeatureExtractor?: TinyXception); + get faceFeatureExtractor(): TinyXception; + runNet(input: NetInput | tf.Tensor4D): NetOutput; + forwardInput(input: NetInput | tf.Tensor4D): NetOutput; + forward(input: TNetInput): Promise; + predictAgeAndGender(input: TNetInput): Promise; + protected getDefaultModelName(): string; + dispose(throwOnRedispose?: boolean): void; + loadClassifierParams(weights: Float32Array): void; + extractClassifierParams(weights: Float32Array): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParams(weights: Float32Array): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; +} diff --git a/types/ageGenderNet/extractParams.d.ts b/types/ageGenderNet/extractParams.d.ts new file mode 100644 index 0000000..bc8f246 --- /dev/null +++ b/types/ageGenderNet/extractParams.d.ts @@ -0,0 +1,6 @@ +import { ParamMapping } from '../common/index'; +import { NetParams } from './types'; +export declare function extractParams(weights: Float32Array): { + params: NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/ageGenderNet/extractParamsFromWeigthMap.d.ts b/types/ageGenderNet/extractParamsFromWeigthMap.d.ts new file mode 100644 index 0000000..e0a1aff --- /dev/null +++ b/types/ageGenderNet/extractParamsFromWeigthMap.d.ts @@ -0,0 +1,7 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ParamMapping } from '../common/index'; +import { NetParams } from './types'; +export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/ageGenderNet/index.d.ts b/types/ageGenderNet/index.d.ts new file mode 100644 index 0000000..922b2de --- /dev/null +++ b/types/ageGenderNet/index.d.ts @@ -0,0 +1,2 @@ +export * from './AgeGenderNet'; +export * from './types'; diff --git a/types/ageGenderNet/types.d.ts b/types/ageGenderNet/types.d.ts new file mode 100644 index 0000000..ba4468f --- /dev/null +++ b/types/ageGenderNet/types.d.ts @@ -0,0 +1,21 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { FCParams } from '../common/index'; +export declare enum Gender { + FEMALE = "female", + MALE = "male" +} +export declare type AgeAndGenderPrediction = { + age: number; + gender: Gender; + genderProbability: number; +}; +export declare type NetOutput = { + age: tf.Tensor1D; + gender: tf.Tensor2D; +}; +export declare type NetParams = { + fc: { + age: FCParams; + gender: FCParams; + }; +}; diff --git a/types/classes/BoundingBox.d.ts b/types/classes/BoundingBox.d.ts new file mode 100644 index 0000000..7c5f096 --- /dev/null +++ b/types/classes/BoundingBox.d.ts @@ -0,0 +1,10 @@ +import { Box } from './Box'; +export interface IBoundingBox { + left: number; + top: number; + right: number; + bottom: number; +} +export declare class BoundingBox extends Box implements IBoundingBox { + constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions?: boolean); +} diff --git a/types/classes/Box.d.ts b/types/classes/Box.d.ts new file mode 100644 index 0000000..950f56a --- /dev/null +++ b/types/classes/Box.d.ts @@ -0,0 +1,46 @@ +import { IBoundingBox } from './BoundingBox'; +import { IDimensions } from './Dimensions'; +import { Point } from './Point'; +import { IRect } from './Rect'; +export declare class Box implements IBoundingBox, IRect { + static isRect(rect: any): boolean; + static assertIsValidBox(box: any, callee: string, allowNegativeDimensions?: boolean): void; + private _x; + private _y; + private _width; + private _height; + constructor(_box: IBoundingBox | IRect, allowNegativeDimensions?: boolean); + get x(): number; + get y(): number; + get width(): number; + get height(): number; + get left(): number; + get top(): number; + get right(): number; + get bottom(): number; + get area(): number; + get topLeft(): Point; + get topRight(): Point; + get bottomLeft(): Point; + get bottomRight(): Point; + round(): Box; + floor(): Box; + toSquare(): Box; + rescale(s: IDimensions | number): Box; + pad(padX: number, padY: number): Box; + clipAtImageBorders(imgWidth: number, imgHeight: number): Box; + shift(sx: number, sy: number): Box; + padAtBorders(imageHeight: number, imageWidth: number): { + dy: number; + edy: number; + dx: number; + edx: number; + y: number; + ey: number; + x: number; + ex: number; + w: number; + h: number; + }; + calibrate(region: Box): Box; +} diff --git a/types/classes/Dimensions.d.ts b/types/classes/Dimensions.d.ts new file mode 100644 index 0000000..fe169cc --- /dev/null +++ b/types/classes/Dimensions.d.ts @@ -0,0 +1,12 @@ +export interface IDimensions { + width: number; + height: number; +} +export declare class Dimensions implements IDimensions { + private _width; + private _height; + constructor(width: number, height: number); + get width(): number; + get height(): number; + reverse(): Dimensions; +} diff --git a/types/classes/FaceDetection.d.ts b/types/classes/FaceDetection.d.ts new file mode 100644 index 0000000..5377318 --- /dev/null +++ b/types/classes/FaceDetection.d.ts @@ -0,0 +1,12 @@ +import { Box } from './Box'; +import { IDimensions } from './Dimensions'; +import { ObjectDetection } from './ObjectDetection'; +import { Rect } from './Rect'; +export interface IFaceDetecion { + score: number; + box: Box; +} +export declare class FaceDetection extends ObjectDetection implements IFaceDetecion { + constructor(score: number, relativeBox: Rect, imageDims: IDimensions); + forSize(width: number, height: number): FaceDetection; +} diff --git a/types/classes/FaceLandmarks.d.ts b/types/classes/FaceLandmarks.d.ts new file mode 100644 index 0000000..ead3ca9 --- /dev/null +++ b/types/classes/FaceLandmarks.d.ts @@ -0,0 +1,42 @@ +import { IBoundingBox } from './BoundingBox'; +import { Box } from './Box'; +import { Dimensions, IDimensions } from './Dimensions'; +import { FaceDetection } from './FaceDetection'; +import { Point } from './Point'; +import { IRect } from './Rect'; +export interface IFaceLandmarks { + positions: Point[]; + shift: Point; +} +export declare class FaceLandmarks implements IFaceLandmarks { + protected _shift: Point; + protected _positions: Point[]; + protected _imgDims: Dimensions; + constructor(relativeFaceLandmarkPositions: Point[], imgDims: IDimensions, shift?: Point); + get shift(): Point; + get imageWidth(): number; + get imageHeight(): number; + get positions(): Point[]; + get relativePositions(): Point[]; + forSize(width: number, height: number): T; + shiftBy(x: number, y: number): T; + shiftByPoint(pt: Point): T; + /** + * Aligns the face landmarks after face detection from the relative positions of the faces + * bounding box, or it's current shift. This function should be used to align the face images + * after face detection has been performed, before they are passed to the face recognition net. + * This will make the computed face descriptor more accurate. + * + * @param detection (optional) The bounding box of the face or the face detection result. If + * no argument was passed the position of the face landmarks are assumed to be relative to + * it's current shift. + * @returns The bounding box of the aligned face. + */ + align(detection?: FaceDetection | IRect | IBoundingBox | null, options?: { + useDlibAlignment?: boolean; + minBoxPadding?: number; + }): Box; + private alignDlib; + private alignMinBbox; + protected getRefPointsForAlignment(): Point[]; +} diff --git a/types/classes/FaceLandmarks5.d.ts b/types/classes/FaceLandmarks5.d.ts new file mode 100644 index 0000000..e514bcf --- /dev/null +++ b/types/classes/FaceLandmarks5.d.ts @@ -0,0 +1,5 @@ +import { FaceLandmarks } from './FaceLandmarks'; +import { Point } from './Point'; +export declare class FaceLandmarks5 extends FaceLandmarks { + protected getRefPointsForAlignment(): Point[]; +} diff --git a/types/classes/FaceLandmarks68.d.ts b/types/classes/FaceLandmarks68.d.ts new file mode 100644 index 0000000..dce3ba5 --- /dev/null +++ b/types/classes/FaceLandmarks68.d.ts @@ -0,0 +1,12 @@ +import { FaceLandmarks } from './FaceLandmarks'; +import { Point } from './Point'; +export declare class FaceLandmarks68 extends FaceLandmarks { + getJawOutline(): Point[]; + getLeftEyeBrow(): Point[]; + getRightEyeBrow(): Point[]; + getNose(): Point[]; + getLeftEye(): Point[]; + getRightEye(): Point[]; + getMouth(): Point[]; + protected getRefPointsForAlignment(): Point[]; +} diff --git a/types/classes/FaceMatch.d.ts b/types/classes/FaceMatch.d.ts new file mode 100644 index 0000000..01e4a27 --- /dev/null +++ b/types/classes/FaceMatch.d.ts @@ -0,0 +1,12 @@ +export interface IFaceMatch { + label: string; + distance: number; +} +export declare class FaceMatch implements IFaceMatch { + private _label; + private _distance; + constructor(label: string, distance: number); + get label(): string; + get distance(): number; + toString(withDistance?: boolean): string; +} diff --git a/types/classes/LabeledBox.d.ts b/types/classes/LabeledBox.d.ts new file mode 100644 index 0000000..6cf39c0 --- /dev/null +++ b/types/classes/LabeledBox.d.ts @@ -0,0 +1,9 @@ +import { IBoundingBox } from './BoundingBox'; +import { Box } from './Box'; +import { IRect } from './Rect'; +export declare class LabeledBox extends Box { + static assertIsValidLabeledBox(box: any, callee: string): void; + private _label; + constructor(box: IBoundingBox | IRect | any, label: number); + get label(): number; +} diff --git a/types/classes/LabeledFaceDescriptors.d.ts b/types/classes/LabeledFaceDescriptors.d.ts new file mode 100644 index 0000000..6015429 --- /dev/null +++ b/types/classes/LabeledFaceDescriptors.d.ts @@ -0,0 +1,9 @@ +export declare class LabeledFaceDescriptors { + private _label; + private _descriptors; + constructor(label: string, descriptors: Float32Array[]); + get label(): string; + get descriptors(): Float32Array[]; + toJSON(): any; + static fromJSON(json: any): LabeledFaceDescriptors; +} diff --git a/types/classes/ObjectDetection.d.ts b/types/classes/ObjectDetection.d.ts new file mode 100644 index 0000000..feae090 --- /dev/null +++ b/types/classes/ObjectDetection.d.ts @@ -0,0 +1,20 @@ +import { Box } from './Box'; +import { Dimensions, IDimensions } from './Dimensions'; +import { IRect } from './Rect'; +export declare class ObjectDetection { + private _score; + private _classScore; + private _className; + private _box; + private _imageDims; + constructor(score: number, classScore: number, className: string, relativeBox: IRect, imageDims: IDimensions); + get score(): number; + get classScore(): number; + get className(): string; + get box(): Box; + get imageDims(): Dimensions; + get imageWidth(): number; + get imageHeight(): number; + get relativeBox(): Box; + forSize(width: number, height: number): ObjectDetection; +} diff --git a/types/classes/Point.d.ts b/types/classes/Point.d.ts new file mode 100644 index 0000000..2c330fb --- /dev/null +++ b/types/classes/Point.d.ts @@ -0,0 +1,18 @@ +export interface IPoint { + x: number; + y: number; +} +export declare class Point implements IPoint { + private _x; + private _y; + constructor(x: number, y: number); + get x(): number; + get y(): number; + add(pt: IPoint): Point; + sub(pt: IPoint): Point; + mul(pt: IPoint): Point; + div(pt: IPoint): Point; + abs(): Point; + magnitude(): number; + floor(): Point; +} diff --git a/types/classes/PredictedBox.d.ts b/types/classes/PredictedBox.d.ts new file mode 100644 index 0000000..8a72117 --- /dev/null +++ b/types/classes/PredictedBox.d.ts @@ -0,0 +1,11 @@ +import { IBoundingBox } from './BoundingBox'; +import { LabeledBox } from './LabeledBox'; +import { IRect } from './Rect'; +export declare class PredictedBox extends LabeledBox { + static assertIsValidPredictedBox(box: any, callee: string): void; + private _score; + private _classScore; + constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number); + get score(): number; + get classScore(): number; +} diff --git a/types/classes/Rect.d.ts b/types/classes/Rect.d.ts new file mode 100644 index 0000000..c88c89a --- /dev/null +++ b/types/classes/Rect.d.ts @@ -0,0 +1,10 @@ +import { Box } from './Box'; +export interface IRect { + x: number; + y: number; + width: number; + height: number; +} +export declare class Rect extends Box implements IRect { + constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions?: boolean); +} diff --git a/types/classes/index.d.ts b/types/classes/index.d.ts new file mode 100644 index 0000000..b66b71e --- /dev/null +++ b/types/classes/index.d.ts @@ -0,0 +1,14 @@ +export * from './BoundingBox'; +export * from './Box'; +export * from './Dimensions'; +export * from './FaceDetection'; +export * from './FaceLandmarks'; +export * from './FaceLandmarks5'; +export * from './FaceLandmarks68'; +export * from './FaceMatch'; +export * from './LabeledBox'; +export * from './LabeledFaceDescriptors'; +export * from './ObjectDetection'; +export * from './Point'; +export * from './PredictedBox'; +export * from './Rect'; diff --git a/types/common/convLayer.d.ts b/types/common/convLayer.d.ts new file mode 100644 index 0000000..44f8510 --- /dev/null +++ b/types/common/convLayer.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ConvParams } from './types'; +export declare function convLayer(x: tf.Tensor4D, params: ConvParams, padding?: 'valid' | 'same', withRelu?: boolean): tf.Tensor4D; diff --git a/types/common/depthwiseSeparableConv.d.ts b/types/common/depthwiseSeparableConv.d.ts new file mode 100644 index 0000000..6352c70 --- /dev/null +++ b/types/common/depthwiseSeparableConv.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { SeparableConvParams } from './types'; +export declare function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams, stride: [number, number]): tf.Tensor4D; diff --git a/types/common/disposeUnusedWeightTensors.d.ts b/types/common/disposeUnusedWeightTensors.d.ts new file mode 100644 index 0000000..927401b --- /dev/null +++ b/types/common/disposeUnusedWeightTensors.d.ts @@ -0,0 +1,2 @@ +import { ParamMapping } from './types'; +export declare function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]): void; diff --git a/types/common/extractConvParamsFactory.d.ts b/types/common/extractConvParamsFactory.d.ts new file mode 100644 index 0000000..03908f7 --- /dev/null +++ b/types/common/extractConvParamsFactory.d.ts @@ -0,0 +1,2 @@ +import { ConvParams, ExtractWeightsFunction, ParamMapping } from './types'; +export declare function extractConvParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, filterSize: number, mappedPrefix: string) => ConvParams; diff --git a/types/common/extractFCParamsFactory.d.ts b/types/common/extractFCParamsFactory.d.ts new file mode 100644 index 0000000..173afc4 --- /dev/null +++ b/types/common/extractFCParamsFactory.d.ts @@ -0,0 +1,2 @@ +import { ExtractWeightsFunction, FCParams, ParamMapping } from './types'; +export declare function extractFCParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, mappedPrefix: string) => FCParams; diff --git a/types/common/extractSeparableConvParamsFactory.d.ts b/types/common/extractSeparableConvParamsFactory.d.ts new file mode 100644 index 0000000..1e20f3b --- /dev/null +++ b/types/common/extractSeparableConvParamsFactory.d.ts @@ -0,0 +1,3 @@ +import { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types'; +export declare function extractSeparableConvParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, mappedPrefix: string) => SeparableConvParams; +export declare function loadSeparableConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T): (prefix: string) => SeparableConvParams; diff --git a/types/common/extractWeightEntryFactory.d.ts b/types/common/extractWeightEntryFactory.d.ts new file mode 100644 index 0000000..b7901e9 --- /dev/null +++ b/types/common/extractWeightEntryFactory.d.ts @@ -0,0 +1,2 @@ +import { ParamMapping } from './types'; +export declare function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]): (originalPath: string, paramRank: number, mappedPath?: string | undefined) => any; diff --git a/types/common/extractWeightsFactory.d.ts b/types/common/extractWeightsFactory.d.ts new file mode 100644 index 0000000..baf2ef9 --- /dev/null +++ b/types/common/extractWeightsFactory.d.ts @@ -0,0 +1,4 @@ +export declare function extractWeightsFactory(weights: Float32Array): { + extractWeights: (numWeights: number) => Float32Array; + getRemainingWeights: () => Float32Array; +}; diff --git a/types/common/fullyConnectedLayer.d.ts b/types/common/fullyConnectedLayer.d.ts new file mode 100644 index 0000000..fefc5d4 --- /dev/null +++ b/types/common/fullyConnectedLayer.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { FCParams } from './types'; +export declare function fullyConnectedLayer(x: tf.Tensor2D, params: FCParams): tf.Tensor2D; diff --git a/types/common/getModelUris.d.ts b/types/common/getModelUris.d.ts new file mode 100644 index 0000000..9a5f64a --- /dev/null +++ b/types/common/getModelUris.d.ts @@ -0,0 +1,4 @@ +export declare function getModelUris(uri: string | undefined, defaultModelName: string): { + modelBaseUri: string; + manifestUri: string; +}; diff --git a/types/common/index.d.ts b/types/common/index.d.ts new file mode 100644 index 0000000..fc307a0 --- /dev/null +++ b/types/common/index.d.ts @@ -0,0 +1,10 @@ +export * from './convLayer'; +export * from './depthwiseSeparableConv'; +export * from './disposeUnusedWeightTensors'; +export * from './extractConvParamsFactory'; +export * from './extractFCParamsFactory'; +export * from './extractSeparableConvParamsFactory'; +export * from './extractWeightEntryFactory'; +export * from './extractWeightsFactory'; +export * from './getModelUris'; +export * from './types'; diff --git a/types/common/loadConvParamsFactory.d.ts b/types/common/loadConvParamsFactory.d.ts new file mode 100644 index 0000000..c139c7b --- /dev/null +++ b/types/common/loadConvParamsFactory.d.ts @@ -0,0 +1,2 @@ +import { ConvParams } from './types'; +export declare function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T): (prefix: string) => ConvParams; diff --git a/types/common/types.d.ts b/types/common/types.d.ts new file mode 100644 index 0000000..75e734f --- /dev/null +++ b/types/common/types.d.ts @@ -0,0 +1,20 @@ +import * as tf from '../../dist/tfjs.esm.js'; +export declare type ExtractWeightsFunction = (numWeights: number) => Float32Array; +export declare type ParamMapping = { + originalPath?: string; + paramPath: string; +}; +export declare type ConvParams = { + filters: tf.Tensor4D; + bias: tf.Tensor1D; +}; +export declare type FCParams = { + weights: tf.Tensor2D; + bias: tf.Tensor1D; +}; +export declare class SeparableConvParams { + depthwise_filter: tf.Tensor4D; + pointwise_filter: tf.Tensor4D; + bias: tf.Tensor1D; + constructor(depthwise_filter: tf.Tensor4D, pointwise_filter: tf.Tensor4D, bias: tf.Tensor1D); +} diff --git a/types/dom/NetInput.d.ts b/types/dom/NetInput.d.ts new file mode 100644 index 0000000..1c045b4 --- /dev/null +++ b/types/dom/NetInput.d.ts @@ -0,0 +1,34 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { Dimensions } from '../classes/Dimensions'; +import { TResolvedNetInput } from './types'; +export declare class NetInput { + private _imageTensors; + private _canvases; + private _batchSize; + private _treatAsBatchInput; + private _inputDimensions; + private _inputSize; + constructor(inputs: Array, treatAsBatchInput?: boolean); + get imageTensors(): Array; + get canvases(): HTMLCanvasElement[]; + get isBatchInput(): boolean; + get batchSize(): number; + get inputDimensions(): number[][]; + get inputSize(): number | undefined; + get reshapedInputDimensions(): Dimensions[]; + getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement; + getInputDimensions(batchIdx: number): number[]; + getInputHeight(batchIdx: number): number; + getInputWidth(batchIdx: number): number; + getReshapedInputDimensions(batchIdx: number): Dimensions; + /** + * Create a batch tensor from all input canvases and tensors + * with size [batchSize, inputSize, inputSize, 3]. + * + * @param inputSize Height and width of the tensor. + * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on + * both sides of the minor dimension oof the image. + * @returns The batch tensor. + */ + toBatchTensor(inputSize: number, isCenterInputs?: boolean): tf.Tensor4D; +} diff --git a/types/dom/awaitMediaLoaded.d.ts b/types/dom/awaitMediaLoaded.d.ts new file mode 100644 index 0000000..d8eca6a --- /dev/null +++ b/types/dom/awaitMediaLoaded.d.ts @@ -0,0 +1 @@ +export declare function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement): Promise; diff --git a/types/dom/bufferToImage.d.ts b/types/dom/bufferToImage.d.ts new file mode 100644 index 0000000..f153ac7 --- /dev/null +++ b/types/dom/bufferToImage.d.ts @@ -0,0 +1 @@ +export declare function bufferToImage(buf: Blob): Promise; diff --git a/types/dom/createCanvas.d.ts b/types/dom/createCanvas.d.ts new file mode 100644 index 0000000..73ea4d5 --- /dev/null +++ b/types/dom/createCanvas.d.ts @@ -0,0 +1,3 @@ +import { IDimensions } from '../classes/Dimensions'; +export declare function createCanvas({ width, height }: IDimensions): HTMLCanvasElement; +export declare function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement; diff --git a/types/dom/extractFaceTensors.d.ts b/types/dom/extractFaceTensors.d.ts new file mode 100644 index 0000000..071df38 --- /dev/null +++ b/types/dom/extractFaceTensors.d.ts @@ -0,0 +1,14 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { Rect } from '../classes/index'; +import { FaceDetection } from '../classes/FaceDetection'; +/** + * Extracts the tensors of the image regions containing the detected faces. + * Useful if you want to compute the face descriptors for the face images. + * Using this method is faster then extracting a canvas for each face and + * converting them to tensors individually. + * + * @param imageTensor The image tensor that face detection has been performed on. + * @param detections The face detection results or face bounding boxes for that image. + * @returns Tensors of the corresponding image region for each detected face. + */ +export declare function extractFaceTensors(imageTensor: tf.Tensor3D | tf.Tensor4D, detections: Array): Promise; diff --git a/types/dom/extractFaces.d.ts b/types/dom/extractFaces.d.ts new file mode 100644 index 0000000..562e7da --- /dev/null +++ b/types/dom/extractFaces.d.ts @@ -0,0 +1,11 @@ +import { FaceDetection } from '../classes/FaceDetection'; +import { Rect } from '../classes/Rect'; +import { TNetInput } from './types'; +/** + * Extracts the image regions containing the detected faces. + * + * @param input The image that face detection has been performed on. + * @param detections The face detection results or face bounding boxes for that image. + * @returns The Canvases of the corresponding image region for each detected face. + */ +export declare function extractFaces(input: TNetInput, detections: Array): Promise; diff --git a/types/dom/fetchImage.d.ts b/types/dom/fetchImage.d.ts new file mode 100644 index 0000000..f072b3e --- /dev/null +++ b/types/dom/fetchImage.d.ts @@ -0,0 +1 @@ +export declare function fetchImage(uri: string): Promise; diff --git a/types/dom/fetchJson.d.ts b/types/dom/fetchJson.d.ts new file mode 100644 index 0000000..bdb5a0b --- /dev/null +++ b/types/dom/fetchJson.d.ts @@ -0,0 +1 @@ +export declare function fetchJson(uri: string): Promise; diff --git a/types/dom/fetchNetWeights.d.ts b/types/dom/fetchNetWeights.d.ts new file mode 100644 index 0000000..f0875fe --- /dev/null +++ b/types/dom/fetchNetWeights.d.ts @@ -0,0 +1 @@ +export declare function fetchNetWeights(uri: string): Promise; diff --git a/types/dom/fetchOrThrow.d.ts b/types/dom/fetchOrThrow.d.ts new file mode 100644 index 0000000..a73c618 --- /dev/null +++ b/types/dom/fetchOrThrow.d.ts @@ -0,0 +1 @@ +export declare function fetchOrThrow(url: string, init?: RequestInit): Promise; diff --git a/types/dom/getContext2dOrThrow.d.ts b/types/dom/getContext2dOrThrow.d.ts new file mode 100644 index 0000000..d9dcd4a --- /dev/null +++ b/types/dom/getContext2dOrThrow.d.ts @@ -0,0 +1 @@ +export declare function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D; diff --git a/types/dom/getMediaDimensions.d.ts b/types/dom/getMediaDimensions.d.ts new file mode 100644 index 0000000..a946f38 --- /dev/null +++ b/types/dom/getMediaDimensions.d.ts @@ -0,0 +1,2 @@ +import { Dimensions, IDimensions } from '../classes/Dimensions'; +export declare function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions; diff --git a/types/dom/imageTensorToCanvas.d.ts b/types/dom/imageTensorToCanvas.d.ts new file mode 100644 index 0000000..726f69b --- /dev/null +++ b/types/dom/imageTensorToCanvas.d.ts @@ -0,0 +1,2 @@ +import * as tf from '../../dist/tfjs.esm.js'; +export declare function imageTensorToCanvas(imgTensor: tf.Tensor, canvas?: HTMLCanvasElement): Promise; diff --git a/types/dom/imageToSquare.d.ts b/types/dom/imageToSquare.d.ts new file mode 100644 index 0000000..7276c53 --- /dev/null +++ b/types/dom/imageToSquare.d.ts @@ -0,0 +1 @@ +export declare function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage?: boolean): HTMLCanvasElement; diff --git a/types/dom/index.d.ts b/types/dom/index.d.ts new file mode 100644 index 0000000..10e5aff --- /dev/null +++ b/types/dom/index.d.ts @@ -0,0 +1,21 @@ +export * from './awaitMediaLoaded'; +export * from './bufferToImage'; +export * from './createCanvas'; +export * from './extractFaces'; +export * from './extractFaceTensors'; +export * from './fetchImage'; +export * from './fetchJson'; +export * from './fetchNetWeights'; +export * from './fetchOrThrow'; +export * from './getContext2dOrThrow'; +export * from './getMediaDimensions'; +export * from './imageTensorToCanvas'; +export * from './imageToSquare'; +export * from './isMediaElement'; +export * from './isMediaLoaded'; +export * from './loadWeightMap'; +export * from './matchDimensions'; +export * from './NetInput'; +export * from './resolveInput'; +export * from './toNetInput'; +export * from './types'; diff --git a/types/dom/isMediaElement.d.ts b/types/dom/isMediaElement.d.ts new file mode 100644 index 0000000..1d359c2 --- /dev/null +++ b/types/dom/isMediaElement.d.ts @@ -0,0 +1 @@ +export declare function isMediaElement(input: any): boolean; diff --git a/types/dom/isMediaLoaded.d.ts b/types/dom/isMediaLoaded.d.ts new file mode 100644 index 0000000..211e01e --- /dev/null +++ b/types/dom/isMediaLoaded.d.ts @@ -0,0 +1 @@ +export declare function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement): boolean; diff --git a/types/dom/loadWeightMap.d.ts b/types/dom/loadWeightMap.d.ts new file mode 100644 index 0000000..933fda9 --- /dev/null +++ b/types/dom/loadWeightMap.d.ts @@ -0,0 +1,2 @@ +import * as tf from '../../dist/tfjs.esm.js'; +export declare function loadWeightMap(uri: string | undefined, defaultModelName: string): Promise; diff --git a/types/dom/matchDimensions.d.ts b/types/dom/matchDimensions.d.ts new file mode 100644 index 0000000..c31b607 --- /dev/null +++ b/types/dom/matchDimensions.d.ts @@ -0,0 +1,5 @@ +import { IDimensions } from '../classes/index'; +export declare function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions?: boolean): { + width: number; + height: number; +}; diff --git a/types/dom/resolveInput.d.ts b/types/dom/resolveInput.d.ts new file mode 100644 index 0000000..2fa6a8a --- /dev/null +++ b/types/dom/resolveInput.d.ts @@ -0,0 +1 @@ +export declare function resolveInput(arg: string | any): any; diff --git a/types/dom/toNetInput.d.ts b/types/dom/toNetInput.d.ts new file mode 100644 index 0000000..b361487 --- /dev/null +++ b/types/dom/toNetInput.d.ts @@ -0,0 +1,10 @@ +import { NetInput } from './NetInput'; +import { TNetInput } from './types'; +/** + * Validates the input to make sure, they are valid net inputs and awaits all media elements + * to be finished loading. + * + * @param input The input, which can be a media element or an array of different media elements. + * @returns A NetInput instance, which can be passed into one of the neural networks. + */ +export declare function toNetInput(inputs: TNetInput): Promise; diff --git a/types/dom/types.d.ts b/types/dom/types.d.ts new file mode 100644 index 0000000..6cdfc6c --- /dev/null +++ b/types/dom/types.d.ts @@ -0,0 +1,6 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { NetInput } from './NetInput'; +export declare type TMediaElement = HTMLImageElement | HTMLVideoElement | HTMLCanvasElement; +export declare type TResolvedNetInput = TMediaElement | tf.Tensor3D | tf.Tensor4D; +export declare type TNetInputArg = string | TResolvedNetInput; +export declare type TNetInput = TNetInputArg | Array | NetInput | tf.Tensor4D; diff --git a/types/draw/DrawBox.d.ts b/types/draw/DrawBox.d.ts new file mode 100644 index 0000000..246490d --- /dev/null +++ b/types/draw/DrawBox.d.ts @@ -0,0 +1,21 @@ +import { Box, IBoundingBox, IRect } from '../classes/index'; +import { DrawTextFieldOptions, IDrawTextFieldOptions } from './DrawTextField'; +export interface IDrawBoxOptions { + boxColor?: string; + lineWidth?: number; + drawLabelOptions?: IDrawTextFieldOptions; + label?: string; +} +export declare class DrawBoxOptions { + boxColor: string; + lineWidth: number; + drawLabelOptions: DrawTextFieldOptions; + label?: string; + constructor(options?: IDrawBoxOptions); +} +export declare class DrawBox { + box: Box; + options: DrawBoxOptions; + constructor(box: IBoundingBox | IRect, options?: IDrawBoxOptions); + draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; +} diff --git a/types/draw/DrawFaceLandmarks.d.ts b/types/draw/DrawFaceLandmarks.d.ts new file mode 100644 index 0000000..4833c4b --- /dev/null +++ b/types/draw/DrawFaceLandmarks.d.ts @@ -0,0 +1,28 @@ +import { FaceLandmarks } from '../classes/FaceLandmarks'; +import { WithFaceDetection } from '../factories/WithFaceDetection'; +import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; +export interface IDrawFaceLandmarksOptions { + drawLines?: boolean; + drawPoints?: boolean; + lineWidth?: number; + pointSize?: number; + lineColor?: string; + pointColor?: string; +} +export declare class DrawFaceLandmarksOptions { + drawLines: boolean; + drawPoints: boolean; + lineWidth: number; + pointSize: number; + lineColor: string; + pointColor: string; + constructor(options?: IDrawFaceLandmarksOptions); +} +export declare class DrawFaceLandmarks { + faceLandmarks: FaceLandmarks; + options: DrawFaceLandmarksOptions; + constructor(faceLandmarks: FaceLandmarks, options?: IDrawFaceLandmarksOptions); + draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; +} +export declare type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>; +export declare function drawFaceLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: DrawFaceLandmarksInput | Array): void; diff --git a/types/draw/DrawTextField.d.ts b/types/draw/DrawTextField.d.ts new file mode 100644 index 0000000..bd16571 --- /dev/null +++ b/types/draw/DrawTextField.d.ts @@ -0,0 +1,34 @@ +import { IDimensions, IPoint } from '../classes/index'; +export declare enum AnchorPosition { + TOP_LEFT = "TOP_LEFT", + TOP_RIGHT = "TOP_RIGHT", + BOTTOM_LEFT = "BOTTOM_LEFT", + BOTTOM_RIGHT = "BOTTOM_RIGHT" +} +export interface IDrawTextFieldOptions { + anchorPosition?: AnchorPosition; + backgroundColor?: string; + fontColor?: string; + fontSize?: number; + fontStyle?: string; + padding?: number; +} +export declare class DrawTextFieldOptions implements IDrawTextFieldOptions { + anchorPosition: AnchorPosition; + backgroundColor: string; + fontColor: string; + fontSize: number; + fontStyle: string; + padding: number; + constructor(options?: IDrawTextFieldOptions); +} +export declare class DrawTextField { + text: string[]; + anchor: IPoint; + options: DrawTextFieldOptions; + constructor(text: string | string[] | DrawTextField, anchor: IPoint, options?: IDrawTextFieldOptions); + measureWidth(ctx: CanvasRenderingContext2D): number; + measureHeight(): number; + getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint; + draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; +} diff --git a/types/draw/drawContour.d.ts b/types/draw/drawContour.d.ts new file mode 100644 index 0000000..ca0b4ea --- /dev/null +++ b/types/draw/drawContour.d.ts @@ -0,0 +1,2 @@ +import { Point } from '../classes/index'; +export declare function drawContour(ctx: CanvasRenderingContext2D, points: Point[], isClosed?: boolean): void; diff --git a/types/draw/drawDetections.d.ts b/types/draw/drawDetections.d.ts new file mode 100644 index 0000000..625851a --- /dev/null +++ b/types/draw/drawDetections.d.ts @@ -0,0 +1,5 @@ +import { IBoundingBox, IRect } from '../classes/index'; +import { FaceDetection } from '../classes/FaceDetection'; +import { WithFaceDetection } from '../factories/WithFaceDetection'; +export declare type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>; +export declare function drawDetections(canvasArg: string | HTMLCanvasElement, detections: TDrawDetectionsInput | Array): void; diff --git a/types/draw/drawFaceExpressions.d.ts b/types/draw/drawFaceExpressions.d.ts new file mode 100644 index 0000000..09cce2f --- /dev/null +++ b/types/draw/drawFaceExpressions.d.ts @@ -0,0 +1,5 @@ +import { IPoint } from '../classes/index'; +import { FaceExpressions } from '../faceExpressionNet/index'; +import { WithFaceExpressions } from '../factories/WithFaceExpressions'; +export declare type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>; +export declare function drawFaceExpressions(canvasArg: string | HTMLCanvasElement, faceExpressions: DrawFaceExpressionsInput | Array, minConfidence?: number, textFieldAnchor?: IPoint): void; diff --git a/types/draw/index.d.ts b/types/draw/index.d.ts new file mode 100644 index 0000000..520d940 --- /dev/null +++ b/types/draw/index.d.ts @@ -0,0 +1,6 @@ +export * from './drawContour'; +export * from './drawDetections'; +export * from './drawFaceExpressions'; +export * from './DrawBox'; +export * from './DrawFaceLandmarks'; +export * from './DrawTextField'; diff --git a/types/env/createBrowserEnv.d.ts b/types/env/createBrowserEnv.d.ts new file mode 100644 index 0000000..f7f144c --- /dev/null +++ b/types/env/createBrowserEnv.d.ts @@ -0,0 +1,2 @@ +import { Environment } from './types'; +export declare function createBrowserEnv(): Environment; diff --git a/types/env/createFileSystem.d.ts b/types/env/createFileSystem.d.ts new file mode 100644 index 0000000..9e53e28 --- /dev/null +++ b/types/env/createFileSystem.d.ts @@ -0,0 +1,2 @@ +import { FileSystem } from './types'; +export declare function createFileSystem(fs?: any): FileSystem; diff --git a/types/env/createNodejsEnv.d.ts b/types/env/createNodejsEnv.d.ts new file mode 100644 index 0000000..a64159b --- /dev/null +++ b/types/env/createNodejsEnv.d.ts @@ -0,0 +1,2 @@ +import { Environment } from './types'; +export declare function createNodejsEnv(): Environment; diff --git a/types/env/index.d.ts b/types/env/index.d.ts new file mode 100644 index 0000000..1407e25 --- /dev/null +++ b/types/env/index.d.ts @@ -0,0 +1,22 @@ +import { createBrowserEnv } from './createBrowserEnv'; +import { createFileSystem } from './createFileSystem'; +import { createNodejsEnv } from './createNodejsEnv'; +import { isBrowser } from './isBrowser'; +import { isNodejs } from './isNodejs'; +import { Environment } from './types'; +declare function getEnv(): Environment; +declare function setEnv(env: Environment): void; +declare function initialize(): void | null; +declare function monkeyPatch(env: Partial): void; +export declare const env: { + getEnv: typeof getEnv; + setEnv: typeof setEnv; + initialize: typeof initialize; + createBrowserEnv: typeof createBrowserEnv; + createFileSystem: typeof createFileSystem; + createNodejsEnv: typeof createNodejsEnv; + monkeyPatch: typeof monkeyPatch; + isBrowser: typeof isBrowser; + isNodejs: typeof isNodejs; +}; +export * from './types'; diff --git a/types/env/isBrowser.d.ts b/types/env/isBrowser.d.ts new file mode 100644 index 0000000..adcd129 --- /dev/null +++ b/types/env/isBrowser.d.ts @@ -0,0 +1 @@ +export declare function isBrowser(): boolean; diff --git a/types/env/isNodejs.d.ts b/types/env/isNodejs.d.ts new file mode 100644 index 0000000..6c90f35 --- /dev/null +++ b/types/env/isNodejs.d.ts @@ -0,0 +1 @@ +export declare function isNodejs(): boolean; diff --git a/types/env/types.d.ts b/types/env/types.d.ts new file mode 100644 index 0000000..5337ab3 --- /dev/null +++ b/types/env/types.d.ts @@ -0,0 +1,14 @@ +/// +export declare type FileSystem = { + readFile: (filePath: string) => Promise; +}; +export declare type Environment = FileSystem & { + Canvas: typeof HTMLCanvasElement; + CanvasRenderingContext2D: typeof CanvasRenderingContext2D; + Image: typeof HTMLImageElement; + ImageData: typeof ImageData; + Video: typeof HTMLVideoElement; + createCanvasElement: () => HTMLCanvasElement; + createImageElement: () => HTMLImageElement; + fetch: (url: string, init?: RequestInit) => Promise; +}; diff --git a/types/euclideanDistance.d.ts b/types/euclideanDistance.d.ts new file mode 100644 index 0000000..d555de2 --- /dev/null +++ b/types/euclideanDistance.d.ts @@ -0,0 +1 @@ +export declare function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array): number; diff --git a/types/faceExpressionNet/FaceExpressionNet.d.ts b/types/faceExpressionNet/FaceExpressionNet.d.ts new file mode 100644 index 0000000..c825197 --- /dev/null +++ b/types/faceExpressionNet/FaceExpressionNet.d.ts @@ -0,0 +1,15 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { NetInput, TNetInput } from '../dom/index'; +import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor'; +import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; +import { FaceProcessor } from '../faceProcessor/FaceProcessor'; +import { FaceExpressions } from './FaceExpressions'; +export declare class FaceExpressionNet extends FaceProcessor { + constructor(faceFeatureExtractor?: FaceFeatureExtractor); + forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D; + forward(input: TNetInput): Promise; + predictExpressions(input: TNetInput): Promise; + protected getDefaultModelName(): string; + protected getClassifierChannelsIn(): number; + protected getClassifierChannelsOut(): number; +} diff --git a/types/faceExpressionNet/FaceExpressions.d.ts b/types/faceExpressionNet/FaceExpressions.d.ts new file mode 100644 index 0000000..4e01ae3 --- /dev/null +++ b/types/faceExpressionNet/FaceExpressions.d.ts @@ -0,0 +1,15 @@ +export declare const FACE_EXPRESSION_LABELS: string[]; +export declare class FaceExpressions { + neutral: number; + happy: number; + sad: number; + angry: number; + fearful: number; + disgusted: number; + surprised: number; + constructor(probabilities: number[] | Float32Array); + asSortedArray(): { + expression: string; + probability: number; + }[]; +} diff --git a/types/faceExpressionNet/index.d.ts b/types/faceExpressionNet/index.d.ts new file mode 100644 index 0000000..d79c683 --- /dev/null +++ b/types/faceExpressionNet/index.d.ts @@ -0,0 +1,2 @@ +export * from './FaceExpressionNet'; +export * from './FaceExpressions'; diff --git a/types/faceFeatureExtractor/FaceFeatureExtractor.d.ts b/types/faceFeatureExtractor/FaceFeatureExtractor.d.ts new file mode 100644 index 0000000..59e5813 --- /dev/null +++ b/types/faceFeatureExtractor/FaceFeatureExtractor.d.ts @@ -0,0 +1,18 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { NetInput, TNetInput } from '../dom/index'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types'; +export declare class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { + constructor(); + forwardInput(input: NetInput): tf.Tensor4D; + forward(input: TNetInput): Promise; + protected getDefaultModelName(): string; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: FaceFeatureExtractorParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParams(weights: Float32Array): { + params: FaceFeatureExtractorParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; +} diff --git a/types/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts b/types/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts new file mode 100644 index 0000000..ca285ad --- /dev/null +++ b/types/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts @@ -0,0 +1,18 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { NetInput, TNetInput } from '../dom/index'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types'; +export declare class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { + constructor(); + forwardInput(input: NetInput): tf.Tensor4D; + forward(input: TNetInput): Promise; + protected getDefaultModelName(): string; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: TinyFaceFeatureExtractorParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParams(weights: Float32Array): { + params: TinyFaceFeatureExtractorParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; +} diff --git a/types/faceFeatureExtractor/denseBlock.d.ts b/types/faceFeatureExtractor/denseBlock.d.ts new file mode 100644 index 0000000..eda1156 --- /dev/null +++ b/types/faceFeatureExtractor/denseBlock.d.ts @@ -0,0 +1,4 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { DenseBlock3Params, DenseBlock4Params } from './types'; +export declare function denseBlock3(x: tf.Tensor4D, denseBlockParams: DenseBlock3Params, isFirstLayer?: boolean): tf.Tensor4D; +export declare function denseBlock4(x: tf.Tensor4D, denseBlockParams: DenseBlock4Params, isFirstLayer?: boolean, isScaleDown?: boolean): tf.Tensor4D; diff --git a/types/faceFeatureExtractor/extractParams.d.ts b/types/faceFeatureExtractor/extractParams.d.ts new file mode 100644 index 0000000..2cee92e --- /dev/null +++ b/types/faceFeatureExtractor/extractParams.d.ts @@ -0,0 +1,6 @@ +import { ParamMapping } from '../common/index'; +import { FaceFeatureExtractorParams } from './types'; +export declare function extractParams(weights: Float32Array): { + params: FaceFeatureExtractorParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts b/types/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts new file mode 100644 index 0000000..c0aead0 --- /dev/null +++ b/types/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts @@ -0,0 +1,7 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ParamMapping } from '../common/index'; +import { FaceFeatureExtractorParams } from './types'; +export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: FaceFeatureExtractorParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts b/types/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts new file mode 100644 index 0000000..5861cee --- /dev/null +++ b/types/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts @@ -0,0 +1,7 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ParamMapping } from '../common/index'; +import { TinyFaceFeatureExtractorParams } from './types'; +export declare function extractParamsFromWeigthMapTiny(weightMap: tf.NamedTensorMap): { + params: TinyFaceFeatureExtractorParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/faceFeatureExtractor/extractParamsTiny.d.ts b/types/faceFeatureExtractor/extractParamsTiny.d.ts new file mode 100644 index 0000000..25829a8 --- /dev/null +++ b/types/faceFeatureExtractor/extractParamsTiny.d.ts @@ -0,0 +1,6 @@ +import { ParamMapping } from '../common/index'; +import { TinyFaceFeatureExtractorParams } from './types'; +export declare function extractParamsTiny(weights: Float32Array): { + params: TinyFaceFeatureExtractorParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/faceFeatureExtractor/extractorsFactory.d.ts b/types/faceFeatureExtractor/extractorsFactory.d.ts new file mode 100644 index 0000000..2332155 --- /dev/null +++ b/types/faceFeatureExtractor/extractorsFactory.d.ts @@ -0,0 +1,6 @@ +import { ExtractWeightsFunction, ParamMapping } from '../common/index'; +import { DenseBlock3Params, DenseBlock4Params } from './types'; +export declare function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): { + extractDenseBlock3Params: (channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer?: boolean) => DenseBlock3Params; + extractDenseBlock4Params: (channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer?: boolean) => DenseBlock4Params; +}; diff --git a/types/faceFeatureExtractor/loadParamsFactory.d.ts b/types/faceFeatureExtractor/loadParamsFactory.d.ts new file mode 100644 index 0000000..f8746f0 --- /dev/null +++ b/types/faceFeatureExtractor/loadParamsFactory.d.ts @@ -0,0 +1,6 @@ +import { ParamMapping } from '../common/index'; +import { DenseBlock3Params, DenseBlock4Params } from './types'; +export declare function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]): { + extractDenseBlock3Params: (prefix: string, isFirstLayer?: boolean) => DenseBlock3Params; + extractDenseBlock4Params: (prefix: string, isFirstLayer?: boolean) => DenseBlock4Params; +}; diff --git a/types/faceFeatureExtractor/types.d.ts b/types/faceFeatureExtractor/types.d.ts new file mode 100644 index 0000000..eb60f18 --- /dev/null +++ b/types/faceFeatureExtractor/types.d.ts @@ -0,0 +1,40 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { NetInput, TNetInput } from '../index'; +import { ConvParams, SeparableConvParams } from '../common/index'; +import { NeuralNetwork } from '../NeuralNetwork'; +export declare type BatchNormParams = { + mean: tf.Tensor1D; + variance: tf.Tensor1D; + scale: tf.Tensor1D; + offset: tf.Tensor1D; +}; +export declare type ConvWithBatchNormParams = BatchNormParams & { + filter: tf.Tensor4D; +}; +export declare type SeparableConvWithBatchNormParams = { + depthwise: ConvWithBatchNormParams; + pointwise: ConvWithBatchNormParams; +}; +export declare type DenseBlock3Params = { + conv0: SeparableConvParams | ConvParams; + conv1: SeparableConvParams; + conv2: SeparableConvParams; +}; +export declare type DenseBlock4Params = DenseBlock3Params & { + conv3: SeparableConvParams; +}; +export declare type TinyFaceFeatureExtractorParams = { + dense0: DenseBlock3Params; + dense1: DenseBlock3Params; + dense2: DenseBlock3Params; +}; +export declare type FaceFeatureExtractorParams = { + dense0: DenseBlock4Params; + dense1: DenseBlock4Params; + dense2: DenseBlock4Params; + dense3: DenseBlock4Params; +}; +export interface IFaceFeatureExtractor extends NeuralNetwork { + forwardInput(input: NetInput): tf.Tensor4D; + forward(input: TNetInput): Promise; +} diff --git a/types/faceLandmarkNet/FaceLandmark68Net.d.ts b/types/faceLandmarkNet/FaceLandmark68Net.d.ts new file mode 100644 index 0000000..ba213c9 --- /dev/null +++ b/types/faceLandmarkNet/FaceLandmark68Net.d.ts @@ -0,0 +1,8 @@ +import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor'; +import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; +import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; +export declare class FaceLandmark68Net extends FaceLandmark68NetBase { + constructor(faceFeatureExtractor?: FaceFeatureExtractor); + protected getDefaultModelName(): string; + protected getClassifierChannelsIn(): number; +} diff --git a/types/faceLandmarkNet/FaceLandmark68NetBase.d.ts b/types/faceLandmarkNet/FaceLandmark68NetBase.d.ts new file mode 100644 index 0000000..6c15032 --- /dev/null +++ b/types/faceLandmarkNet/FaceLandmark68NetBase.d.ts @@ -0,0 +1,13 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { IDimensions } from '../classes/index'; +import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; +import { NetInput, TNetInput } from '../dom/index'; +import { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; +import { FaceProcessor } from '../faceProcessor/FaceProcessor'; +export declare abstract class FaceLandmark68NetBase extends FaceProcessor { + postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D; + forwardInput(input: NetInput): tf.Tensor2D; + forward(input: TNetInput): Promise; + detectLandmarks(input: TNetInput): Promise; + protected getClassifierChannelsOut(): number; +} diff --git a/types/faceLandmarkNet/FaceLandmark68TinyNet.d.ts b/types/faceLandmarkNet/FaceLandmark68TinyNet.d.ts new file mode 100644 index 0000000..5811187 --- /dev/null +++ b/types/faceLandmarkNet/FaceLandmark68TinyNet.d.ts @@ -0,0 +1,8 @@ +import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor'; +import { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; +import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; +export declare class FaceLandmark68TinyNet extends FaceLandmark68NetBase { + constructor(faceFeatureExtractor?: TinyFaceFeatureExtractor); + protected getDefaultModelName(): string; + protected getClassifierChannelsIn(): number; +} diff --git a/types/faceLandmarkNet/index.d.ts b/types/faceLandmarkNet/index.d.ts new file mode 100644 index 0000000..b49c3e8 --- /dev/null +++ b/types/faceLandmarkNet/index.d.ts @@ -0,0 +1,5 @@ +import { FaceLandmark68Net } from './FaceLandmark68Net'; +export * from './FaceLandmark68Net'; +export * from './FaceLandmark68TinyNet'; +export declare class FaceLandmarkNet extends FaceLandmark68Net { +} diff --git a/types/faceProcessor/FaceProcessor.d.ts b/types/faceProcessor/FaceProcessor.d.ts new file mode 100644 index 0000000..1a5b703 --- /dev/null +++ b/types/faceProcessor/FaceProcessor.d.ts @@ -0,0 +1,28 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { NetInput } from '../dom/index'; +import { FaceFeatureExtractorParams, IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { NetParams } from './types'; +export declare abstract class FaceProcessor extends NeuralNetwork { + protected _faceFeatureExtractor: IFaceFeatureExtractor; + constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor); + get faceFeatureExtractor(): IFaceFeatureExtractor; + protected abstract getDefaultModelName(): string; + protected abstract getClassifierChannelsIn(): number; + protected abstract getClassifierChannelsOut(): number; + runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D; + dispose(throwOnRedispose?: boolean): void; + loadClassifierParams(weights: Float32Array): void; + extractClassifierParams(weights: Float32Array): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParams(weights: Float32Array): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; +} diff --git a/types/faceProcessor/extractParams.d.ts b/types/faceProcessor/extractParams.d.ts new file mode 100644 index 0000000..6d8d805 --- /dev/null +++ b/types/faceProcessor/extractParams.d.ts @@ -0,0 +1,6 @@ +import { ParamMapping } from '../common/index'; +import { NetParams } from './types'; +export declare function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { + params: NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/faceProcessor/extractParamsFromWeigthMap.d.ts b/types/faceProcessor/extractParamsFromWeigthMap.d.ts new file mode 100644 index 0000000..e0a1aff --- /dev/null +++ b/types/faceProcessor/extractParamsFromWeigthMap.d.ts @@ -0,0 +1,7 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ParamMapping } from '../common/index'; +import { NetParams } from './types'; +export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/faceProcessor/types.d.ts b/types/faceProcessor/types.d.ts new file mode 100644 index 0000000..01ecb80 --- /dev/null +++ b/types/faceProcessor/types.d.ts @@ -0,0 +1,4 @@ +import { FCParams } from '../common/index'; +export declare type NetParams = { + fc: FCParams; +}; diff --git a/types/faceProcessor/util.d.ts b/types/faceProcessor/util.d.ts new file mode 100644 index 0000000..e4af11d --- /dev/null +++ b/types/faceProcessor/util.d.ts @@ -0,0 +1,5 @@ +import * as tf from '../../dist/tfjs.esm.js'; +export declare function seperateWeightMaps(weightMap: tf.NamedTensorMap): { + featureExtractorMap: any; + classifierMap: any; +}; diff --git a/types/faceRecognitionNet/FaceRecognitionNet.d.ts b/types/faceRecognitionNet/FaceRecognitionNet.d.ts new file mode 100644 index 0000000..e39ef52 --- /dev/null +++ b/types/faceRecognitionNet/FaceRecognitionNet.d.ts @@ -0,0 +1,19 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { NetInput, TNetInput } from '../dom/index'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { NetParams } from './types'; +export declare class FaceRecognitionNet extends NeuralNetwork { + constructor(); + forwardInput(input: NetInput): tf.Tensor2D; + forward(input: TNetInput): Promise; + computeFaceDescriptor(input: TNetInput): Promise; + protected getDefaultModelName(): string; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParams(weights: Float32Array): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; +} diff --git a/types/faceRecognitionNet/convLayer.d.ts b/types/faceRecognitionNet/convLayer.d.ts new file mode 100644 index 0000000..2316af1 --- /dev/null +++ b/types/faceRecognitionNet/convLayer.d.ts @@ -0,0 +1,5 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ConvLayerParams } from './types'; +export declare function conv(x: tf.Tensor4D, params: ConvLayerParams): any; +export declare function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams): any; +export declare function convDown(x: tf.Tensor4D, params: ConvLayerParams): any; diff --git a/types/faceRecognitionNet/extractParams.d.ts b/types/faceRecognitionNet/extractParams.d.ts new file mode 100644 index 0000000..bc8f246 --- /dev/null +++ b/types/faceRecognitionNet/extractParams.d.ts @@ -0,0 +1,6 @@ +import { ParamMapping } from '../common/index'; +import { NetParams } from './types'; +export declare function extractParams(weights: Float32Array): { + params: NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/faceRecognitionNet/extractParamsFromWeigthMap.d.ts b/types/faceRecognitionNet/extractParamsFromWeigthMap.d.ts new file mode 100644 index 0000000..e0a1aff --- /dev/null +++ b/types/faceRecognitionNet/extractParamsFromWeigthMap.d.ts @@ -0,0 +1,7 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ParamMapping } from '../common/index'; +import { NetParams } from './types'; +export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/faceRecognitionNet/index.d.ts b/types/faceRecognitionNet/index.d.ts new file mode 100644 index 0000000..487d6af --- /dev/null +++ b/types/faceRecognitionNet/index.d.ts @@ -0,0 +1,3 @@ +import { FaceRecognitionNet } from './FaceRecognitionNet'; +export * from './FaceRecognitionNet'; +export declare function createFaceRecognitionNet(weights: Float32Array): FaceRecognitionNet; diff --git a/types/faceRecognitionNet/residualLayer.d.ts b/types/faceRecognitionNet/residualLayer.d.ts new file mode 100644 index 0000000..fcbe422 --- /dev/null +++ b/types/faceRecognitionNet/residualLayer.d.ts @@ -0,0 +1,4 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ResidualLayerParams } from './types'; +export declare function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D; +export declare function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D; diff --git a/types/faceRecognitionNet/scaleLayer.d.ts b/types/faceRecognitionNet/scaleLayer.d.ts new file mode 100644 index 0000000..d3826c9 --- /dev/null +++ b/types/faceRecognitionNet/scaleLayer.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ScaleLayerParams } from './types'; +export declare function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D; diff --git a/types/faceRecognitionNet/types.d.ts b/types/faceRecognitionNet/types.d.ts new file mode 100644 index 0000000..f5ae712 --- /dev/null +++ b/types/faceRecognitionNet/types.d.ts @@ -0,0 +1,32 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ConvParams } from '../common/index'; +export declare type ScaleLayerParams = { + weights: tf.Tensor1D; + biases: tf.Tensor1D; +}; +export declare type ConvLayerParams = { + conv: ConvParams; + scale: ScaleLayerParams; +}; +export declare type ResidualLayerParams = { + conv1: ConvLayerParams; + conv2: ConvLayerParams; +}; +export declare type NetParams = { + conv32_down: ConvLayerParams; + conv32_1: ResidualLayerParams; + conv32_2: ResidualLayerParams; + conv32_3: ResidualLayerParams; + conv64_down: ResidualLayerParams; + conv64_1: ResidualLayerParams; + conv64_2: ResidualLayerParams; + conv64_3: ResidualLayerParams; + conv128_down: ResidualLayerParams; + conv128_1: ResidualLayerParams; + conv128_2: ResidualLayerParams; + conv256_down: ResidualLayerParams; + conv256_1: ResidualLayerParams; + conv256_2: ResidualLayerParams; + conv256_down_out: ResidualLayerParams; + fc: tf.Tensor2D; +}; diff --git a/types/factories/WithAge.d.ts b/types/factories/WithAge.d.ts new file mode 100644 index 0000000..b924852 --- /dev/null +++ b/types/factories/WithAge.d.ts @@ -0,0 +1,5 @@ +export declare type WithAge = TSource & { + age: number; +}; +export declare function isWithAge(obj: any): obj is WithAge<{}>; +export declare function extendWithAge(sourceObj: TSource, age: number): WithAge; diff --git a/types/factories/WithFaceDescriptor.d.ts b/types/factories/WithFaceDescriptor.d.ts new file mode 100644 index 0000000..45175ba --- /dev/null +++ b/types/factories/WithFaceDescriptor.d.ts @@ -0,0 +1,4 @@ +export declare type WithFaceDescriptor = TSource & { + descriptor: Float32Array; +}; +export declare function extendWithFaceDescriptor(sourceObj: TSource, descriptor: Float32Array): WithFaceDescriptor; diff --git a/types/factories/WithFaceDetection.d.ts b/types/factories/WithFaceDetection.d.ts new file mode 100644 index 0000000..718ea71 --- /dev/null +++ b/types/factories/WithFaceDetection.d.ts @@ -0,0 +1,6 @@ +import { FaceDetection } from '../classes/FaceDetection'; +export declare type WithFaceDetection = TSource & { + detection: FaceDetection; +}; +export declare function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}>; +export declare function extendWithFaceDetection(sourceObj: TSource, detection: FaceDetection): WithFaceDetection; diff --git a/types/factories/WithFaceExpressions.d.ts b/types/factories/WithFaceExpressions.d.ts new file mode 100644 index 0000000..f7960b2 --- /dev/null +++ b/types/factories/WithFaceExpressions.d.ts @@ -0,0 +1,6 @@ +import { FaceExpressions } from '../faceExpressionNet/FaceExpressions'; +export declare type WithFaceExpressions = TSource & { + expressions: FaceExpressions; +}; +export declare function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}>; +export declare function extendWithFaceExpressions(sourceObj: TSource, expressions: FaceExpressions): WithFaceExpressions; diff --git a/types/factories/WithFaceLandmarks.d.ts b/types/factories/WithFaceLandmarks.d.ts new file mode 100644 index 0000000..99b9315 --- /dev/null +++ b/types/factories/WithFaceLandmarks.d.ts @@ -0,0 +1,11 @@ +import { FaceDetection } from '../classes/FaceDetection'; +import { FaceLandmarks } from '../classes/FaceLandmarks'; +import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; +import { WithFaceDetection } from './WithFaceDetection'; +export declare type WithFaceLandmarks, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> = TSource & { + landmarks: TFaceLandmarks; + unshiftedLandmarks: TFaceLandmarks; + alignedRect: FaceDetection; +}; +export declare function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks>; +export declare function extendWithFaceLandmarks, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68>(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks; diff --git a/types/factories/WithGender.d.ts b/types/factories/WithGender.d.ts new file mode 100644 index 0000000..6f26c11 --- /dev/null +++ b/types/factories/WithGender.d.ts @@ -0,0 +1,7 @@ +import { Gender } from '../ageGenderNet/types'; +export declare type WithGender = TSource & { + gender: Gender; + genderProbability: number; +}; +export declare function isWithGender(obj: any): obj is WithGender<{}>; +export declare function extendWithGender(sourceObj: TSource, gender: Gender, genderProbability: number): WithGender; diff --git a/types/factories/index.d.ts b/types/factories/index.d.ts new file mode 100644 index 0000000..c5094ab --- /dev/null +++ b/types/factories/index.d.ts @@ -0,0 +1,6 @@ +export * from './WithFaceDescriptor'; +export * from './WithFaceDetection'; +export * from './WithFaceExpressions'; +export * from './WithFaceLandmarks'; +export * from './WithAge'; +export * from './WithGender'; diff --git a/types/globalApi/ComposableTask.d.ts b/types/globalApi/ComposableTask.d.ts new file mode 100644 index 0000000..b7203e3 --- /dev/null +++ b/types/globalApi/ComposableTask.d.ts @@ -0,0 +1,4 @@ +export declare class ComposableTask { + then(onfulfilled: (value: T) => T | PromiseLike): Promise; + run(): Promise; +} diff --git a/types/globalApi/ComputeFaceDescriptorsTasks.d.ts b/types/globalApi/ComputeFaceDescriptorsTasks.d.ts new file mode 100644 index 0000000..c97f71e --- /dev/null +++ b/types/globalApi/ComputeFaceDescriptorsTasks.d.ts @@ -0,0 +1,22 @@ +import { TNetInput } from '../dom/index'; +import { WithFaceDescriptor } from '../factories/WithFaceDescriptor'; +import { WithFaceDetection } from '../factories/WithFaceDetection'; +import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; +import { ComposableTask } from './ComposableTask'; +import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask'; +import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask'; +export declare class ComputeFaceDescriptorsTaskBase extends ComposableTask { + protected parentTask: ComposableTask | Promise; + protected input: TNetInput; + constructor(parentTask: ComposableTask | Promise, input: TNetInput); +} +export declare class ComputeAllFaceDescriptorsTask>> extends ComputeFaceDescriptorsTaskBase[], TSource[]> { + run(): Promise[]>; + withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>; + withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; +} +export declare class ComputeSingleFaceDescriptorTask>> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> { + run(): Promise | undefined>; + withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>; + withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; +} diff --git a/types/globalApi/DetectFaceLandmarksTasks.d.ts b/types/globalApi/DetectFaceLandmarksTasks.d.ts new file mode 100644 index 0000000..a34ae0f --- /dev/null +++ b/types/globalApi/DetectFaceLandmarksTasks.d.ts @@ -0,0 +1,29 @@ +import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; +import { TNetInput } from '../dom/index'; +import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; +import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; +import { WithFaceDetection } from '../factories/WithFaceDetection'; +import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; +import { ComposableTask } from './ComposableTask'; +import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; +import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask'; +import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask'; +export declare class DetectFaceLandmarksTaskBase extends ComposableTask { + protected parentTask: ComposableTask | Promise; + protected input: TNetInput; + protected useTinyLandmarkNet: boolean; + constructor(parentTask: ComposableTask | Promise, input: TNetInput, useTinyLandmarkNet: boolean); + protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet; +} +export declare class DetectAllFaceLandmarksTask> extends DetectFaceLandmarksTaskBase[], TSource[]> { + run(): Promise[]>; + withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>; + withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; + withFaceDescriptors(): ComputeAllFaceDescriptorsTask>; +} +export declare class DetectSingleFaceLandmarksTask> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> { + run(): Promise | undefined>; + withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>; + withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; + withFaceDescriptor(): ComputeSingleFaceDescriptorTask>; +} diff --git a/types/globalApi/DetectFacesTasks.d.ts b/types/globalApi/DetectFacesTasks.d.ts new file mode 100644 index 0000000..a909dec --- /dev/null +++ b/types/globalApi/DetectFacesTasks.d.ts @@ -0,0 +1,38 @@ +import { FaceDetection } from '../classes/FaceDetection'; +import { TNetInput } from '../dom/index'; +import { ComposableTask } from './ComposableTask'; +import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks'; +import { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask'; +import { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask'; +import { FaceDetectionOptions } from './types'; +export declare class DetectFacesTaskBase extends ComposableTask { + protected input: TNetInput; + protected options: FaceDetectionOptions; + constructor(input: TNetInput, options?: FaceDetectionOptions); +} +export declare class DetectAllFacesTask extends DetectFacesTaskBase { + run(): Promise; + private runAndExtendWithFaceDetections; + withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectAllFaceLandmarksTask<{ + detection: FaceDetection; + }>; + withFaceExpressions(): PredictAllFaceExpressionsTask<{ + detection: FaceDetection; + }>; + withAgeAndGender(): PredictAllAgeAndGenderTask<{ + detection: FaceDetection; + }>; +} +export declare class DetectSingleFaceTask extends DetectFacesTaskBase { + run(): Promise; + private runAndExtendWithFaceDetection; + withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectSingleFaceLandmarksTask<{ + detection: FaceDetection; + }>; + withFaceExpressions(): PredictSingleFaceExpressionsTask<{ + detection: FaceDetection; + }>; + withAgeAndGender(): PredictSingleAgeAndGenderTask<{ + detection: FaceDetection; + }>; +} diff --git a/types/globalApi/FaceMatcher.d.ts b/types/globalApi/FaceMatcher.d.ts new file mode 100644 index 0000000..08f5e88 --- /dev/null +++ b/types/globalApi/FaceMatcher.d.ts @@ -0,0 +1,15 @@ +import { FaceMatch } from '../classes/FaceMatch'; +import { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors'; +import { WithFaceDescriptor } from '../factories/index'; +export declare class FaceMatcher { + private _labeledDescriptors; + private _distanceThreshold; + constructor(inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>, distanceThreshold?: number); + get labeledDescriptors(): LabeledFaceDescriptors[]; + get distanceThreshold(): number; + computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number; + matchDescriptor(queryDescriptor: Float32Array): FaceMatch; + findBestMatch(queryDescriptor: Float32Array): FaceMatch; + toJSON(): any; + static fromJSON(json: any): FaceMatcher; +} diff --git a/types/globalApi/PredictAgeAndGenderTask.d.ts b/types/globalApi/PredictAgeAndGenderTask.d.ts new file mode 100644 index 0000000..f5488be --- /dev/null +++ b/types/globalApi/PredictAgeAndGenderTask.d.ts @@ -0,0 +1,30 @@ +import { TNetInput } from '../dom/index'; +import { WithAge } from '../factories/WithAge'; +import { WithFaceDetection } from '../factories/WithFaceDetection'; +import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; +import { WithGender } from '../factories/WithGender'; +import { ComposableTask } from './ComposableTask'; +import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; +import { PredictAllFaceExpressionsTask, PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask'; +export declare class PredictAgeAndGenderTaskBase extends ComposableTask { + protected parentTask: ComposableTask | Promise; + protected input: TNetInput; + protected extractedFaces?: any[] | undefined; + constructor(parentTask: ComposableTask | Promise, input: TNetInput, extractedFaces?: any[] | undefined); +} +export declare class PredictAllAgeAndGenderTask> extends PredictAgeAndGenderTaskBase>[], TSource[]> { + run(): Promise>[]>; + withFaceExpressions(): PredictAllFaceExpressionsTask>>; +} +export declare class PredictSingleAgeAndGenderTask> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> { + run(): Promise> | undefined>; + withFaceExpressions(): PredictSingleFaceExpressionsTask>>; +} +export declare class PredictAllAgeAndGenderWithFaceAlignmentTask>> extends PredictAllAgeAndGenderTask { + withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>>; + withFaceDescriptors(): ComputeAllFaceDescriptorsTask>>; +} +export declare class PredictSingleAgeAndGenderWithFaceAlignmentTask>> extends PredictSingleAgeAndGenderTask { + withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>>; + withFaceDescriptor(): ComputeSingleFaceDescriptorTask>>; +} diff --git a/types/globalApi/PredictFaceExpressionsTask.d.ts b/types/globalApi/PredictFaceExpressionsTask.d.ts new file mode 100644 index 0000000..8b1d004 --- /dev/null +++ b/types/globalApi/PredictFaceExpressionsTask.d.ts @@ -0,0 +1,29 @@ +import { TNetInput } from '../dom/index'; +import { WithFaceDetection } from '../factories/WithFaceDetection'; +import { WithFaceExpressions } from '../factories/WithFaceExpressions'; +import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; +import { ComposableTask } from './ComposableTask'; +import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; +import { PredictAllAgeAndGenderTask, PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask'; +export declare class PredictFaceExpressionsTaskBase extends ComposableTask { + protected parentTask: ComposableTask | Promise; + protected input: TNetInput; + protected extractedFaces?: any[] | undefined; + constructor(parentTask: ComposableTask | Promise, input: TNetInput, extractedFaces?: any[] | undefined); +} +export declare class PredictAllFaceExpressionsTask> extends PredictFaceExpressionsTaskBase[], TSource[]> { + run(): Promise[]>; + withAgeAndGender(): PredictAllAgeAndGenderTask>; +} +export declare class PredictSingleFaceExpressionsTask> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> { + run(): Promise | undefined>; + withAgeAndGender(): PredictSingleAgeAndGenderTask>; +} +export declare class PredictAllFaceExpressionsWithFaceAlignmentTask>> extends PredictAllFaceExpressionsTask { + withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; + withFaceDescriptors(): ComputeAllFaceDescriptorsTask>; +} +export declare class PredictSingleFaceExpressionsWithFaceAlignmentTask>> extends PredictSingleFaceExpressionsTask { + withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; + withFaceDescriptor(): ComputeSingleFaceDescriptorTask>; +} diff --git a/types/globalApi/allFaces.d.ts b/types/globalApi/allFaces.d.ts new file mode 100644 index 0000000..63b81ed --- /dev/null +++ b/types/globalApi/allFaces.d.ts @@ -0,0 +1,6 @@ +import { TNetInput } from '../dom/index'; +import { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index'; +import { ITinyYolov2Options } from '../tinyYolov2/index'; +export declare function allFacesSsdMobilenetv1(input: TNetInput, minConfidence?: number): Promise>>[]>; +export declare function allFacesTinyYolov2(input: TNetInput, forwardParams?: ITinyYolov2Options): Promise>>[]>; +export declare const allFaces: typeof allFacesSsdMobilenetv1; diff --git a/types/globalApi/detectFaces.d.ts b/types/globalApi/detectFaces.d.ts new file mode 100644 index 0000000..f251264 --- /dev/null +++ b/types/globalApi/detectFaces.d.ts @@ -0,0 +1,5 @@ +import { TNetInput } from '../dom/index'; +import { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks'; +import { FaceDetectionOptions } from './types'; +export declare function detectSingleFace(input: TNetInput, options?: FaceDetectionOptions): DetectSingleFaceTask; +export declare function detectAllFaces(input: TNetInput, options?: FaceDetectionOptions): DetectAllFacesTask; diff --git a/types/globalApi/extractFacesAndComputeResults.d.ts b/types/globalApi/extractFacesAndComputeResults.d.ts new file mode 100644 index 0000000..aa42a92 --- /dev/null +++ b/types/globalApi/extractFacesAndComputeResults.d.ts @@ -0,0 +1,7 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { FaceDetection } from '../classes/FaceDetection'; +import { TNetInput } from '../dom/index'; +import { WithFaceDetection } from '../factories/WithFaceDetection'; +import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; +export declare function extractAllFacesAndComputeResults, TResult>(parentResults: TSource[], input: TNetInput, computeResults: (faces: Array) => Promise, extractedFaces?: Array | null, getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection): Promise; +export declare function extractSingleFaceAndComputeResult, TResult>(parentResult: TSource, input: TNetInput, computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise, extractedFaces?: Array | null, getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection): Promise; diff --git a/types/globalApi/index.d.ts b/types/globalApi/index.d.ts new file mode 100644 index 0000000..de0e0c0 --- /dev/null +++ b/types/globalApi/index.d.ts @@ -0,0 +1,9 @@ +export * from './allFaces'; +export * from './ComposableTask'; +export * from './ComputeFaceDescriptorsTasks'; +export * from './detectFaces'; +export * from './DetectFacesTasks'; +export * from './DetectFaceLandmarksTasks'; +export * from './FaceMatcher'; +export * from './nets'; +export * from './types'; diff --git a/types/globalApi/nets.d.ts b/types/globalApi/nets.d.ts new file mode 100644 index 0000000..bdd1350 --- /dev/null +++ b/types/globalApi/nets.d.ts @@ -0,0 +1,105 @@ +import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet'; +import { AgeAndGenderPrediction } from '../ageGenderNet/types'; +import { FaceDetection } from '../classes/FaceDetection'; +import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; +import { TNetInput } from '../dom/index'; +import { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet'; +import { FaceExpressions } from '../faceExpressionNet/FaceExpressions'; +import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; +import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; +import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet'; +import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; +import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector'; +import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; +import { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index'; +export declare const nets: { + ssdMobilenetv1: SsdMobilenetv1; + tinyFaceDetector: TinyFaceDetector; + tinyYolov2: TinyYolov2; + faceLandmark68Net: FaceLandmark68Net; + faceLandmark68TinyNet: FaceLandmark68TinyNet; + faceRecognitionNet: FaceRecognitionNet; + faceExpressionNet: FaceExpressionNet; + ageGenderNet: AgeGenderNet; +}; +/** + * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. + * + * @param input The input image. + * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). + * @returns Bounding box of each face with score. + */ +export declare const ssdMobilenetv1: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; +/** + * Attempts to detect all faces in an image using the Tiny Face Detector. + * + * @param input The input image. + * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters). + * @returns Bounding box of each face with score. + */ +export declare const tinyFaceDetector: (input: TNetInput, options: TinyFaceDetectorOptions) => Promise; +/** + * Attempts to detect all faces in an image using the Tiny Yolov2 Network. + * + * @param input The input image. + * @param options (optional, default: see TinyYolov2Options constructor for default parameters). + * @returns Bounding box of each face with score. + */ +export declare const tinyYolov2: (input: TNetInput, options: ITinyYolov2Options) => Promise; +/** + * Detects the 68 point face landmark positions of the face shown in an image. + * + * @param inputs The face image extracted from the bounding box of a face. Can + * also be an array of input images, which will be batch processed. + * @returns 68 point face landmarks or array thereof in case of batch input. + */ +export declare const detectFaceLandmarks: (input: TNetInput) => Promise; +/** + * Detects the 68 point face landmark positions of the face shown in an image + * using a tinier version of the 68 point face landmark model, which is slightly + * faster at inference, but also slightly less accurate. + * + * @param inputs The face image extracted from the bounding box of a face. Can + * also be an array of input images, which will be batch processed. + * @returns 68 point face landmarks or array thereof in case of batch input. + */ +export declare const detectFaceLandmarksTiny: (input: TNetInput) => Promise; +/** + * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image, + * which uniquely represents the features of that persons face. The computed face descriptor can + * be used to measure the similarity between faces, by computing the euclidean distance of two + * face descriptors. + * + * @param inputs The face image extracted from the aligned bounding box of a face. Can + * also be an array of input images, which will be batch processed. + * @returns Face descriptor with 128 entries or array thereof in case of batch input. + */ +export declare const computeFaceDescriptor: (input: TNetInput) => Promise; +/** + * Recognizes the facial expressions from a face image. + * + * @param inputs The face image extracted from the bounding box of a face. Can + * also be an array of input images, which will be batch processed. + * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input. + */ +export declare const recognizeFaceExpressions: (input: TNetInput) => Promise; +/** + * Predicts age and gender from a face image. + * + * @param inputs The face image extracted from the bounding box of a face. Can + * also be an array of input images, which will be batch processed. + * @returns Predictions with age, gender and gender probability or array thereof in case of batch input. + */ +export declare const predictAgeAndGender: (input: TNetInput) => Promise; +export declare const loadSsdMobilenetv1Model: (url: string) => Promise; +export declare const loadTinyFaceDetectorModel: (url: string) => Promise; +export declare const loadTinyYolov2Model: (url: string) => Promise; +export declare const loadFaceLandmarkModel: (url: string) => Promise; +export declare const loadFaceLandmarkTinyModel: (url: string) => Promise; +export declare const loadFaceRecognitionModel: (url: string) => Promise; +export declare const loadFaceExpressionModel: (url: string) => Promise; +export declare const loadAgeGenderModel: (url: string) => Promise; +export declare const loadFaceDetectionModel: (url: string) => Promise; +export declare const locateFaces: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; +export declare const detectLandmarks: (input: TNetInput) => Promise; diff --git a/types/globalApi/types.d.ts b/types/globalApi/types.d.ts new file mode 100644 index 0000000..aed1eb9 --- /dev/null +++ b/types/globalApi/types.d.ts @@ -0,0 +1,7 @@ +import { FaceDetection } from '../classes/FaceDetection'; +import { TNetInput } from '../dom/index'; +import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; +import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; +import { TinyYolov2Options } from '../tinyYolov2/index'; +export declare type FaceDetectionOptions = TinyFaceDetectorOptions | SsdMobilenetv1Options | TinyYolov2Options; +export declare type FaceDetectionFunction = (input: TNetInput) => Promise; diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 0000000..d6c3353 --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,25 @@ +import * as tf from '../dist/tfjs.esm.js'; +import * as draw from './draw/index'; +import * as utils from './utils/index'; +export { tf, draw, utils }; +export * from './ageGenderNet/index'; +export * from './classes/index'; +export * from './dom/index'; +export * from './env/index'; +export * from './faceExpressionNet/index'; +export * from './faceLandmarkNet/index'; +export * from './faceRecognitionNet/index'; +export * from './factories/index'; +export * from './globalApi/index'; +export * from './ops/index'; +export * from './ssdMobilenetv1/index'; +export * from './tinyFaceDetector/index'; +export * from './tinyYolov2/index'; +export * from './euclideanDistance'; +export * from './NeuralNetwork'; +export * from './resizeResults'; +export declare const version: { + faceapi: string; + node: boolean; + browser: boolean; +}; diff --git a/types/ops/index.d.ts b/types/ops/index.d.ts new file mode 100644 index 0000000..825d345 --- /dev/null +++ b/types/ops/index.d.ts @@ -0,0 +1,8 @@ +export * from './iou'; +export * from './minBbox'; +export * from './nonMaxSuppression'; +export * from './normalize'; +export * from './padToSquare'; +export * from './shuffleArray'; +export declare function sigmoid(x: number): number; +export declare function inverseSigmoid(x: number): number; diff --git a/types/ops/iou.d.ts b/types/ops/iou.d.ts new file mode 100644 index 0000000..0e800d7 --- /dev/null +++ b/types/ops/iou.d.ts @@ -0,0 +1,2 @@ +import { Box } from '../classes/Box'; +export declare function iou(box1: Box, box2: Box, isIOU?: boolean): number; diff --git a/types/ops/minBbox.d.ts b/types/ops/minBbox.d.ts new file mode 100644 index 0000000..1a50ccb --- /dev/null +++ b/types/ops/minBbox.d.ts @@ -0,0 +1,2 @@ +import { BoundingBox, IPoint } from '../classes/index'; +export declare function minBbox(pts: IPoint[]): BoundingBox; diff --git a/types/ops/nonMaxSuppression.d.ts b/types/ops/nonMaxSuppression.d.ts new file mode 100644 index 0000000..bba434a --- /dev/null +++ b/types/ops/nonMaxSuppression.d.ts @@ -0,0 +1,2 @@ +import { Box } from '../classes/Box'; +export declare function nonMaxSuppression(boxes: Box[], scores: number[], iouThreshold: number, isIOU?: boolean): number[]; diff --git a/types/ops/normalize.d.ts b/types/ops/normalize.d.ts new file mode 100644 index 0000000..3442367 --- /dev/null +++ b/types/ops/normalize.d.ts @@ -0,0 +1,2 @@ +import * as tf from '../../dist/tfjs.esm.js'; +export declare function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D; diff --git a/types/ops/padToSquare.d.ts b/types/ops/padToSquare.d.ts new file mode 100644 index 0000000..c23442e --- /dev/null +++ b/types/ops/padToSquare.d.ts @@ -0,0 +1,10 @@ +import * as tf from '../../dist/tfjs.esm.js'; +/** + * Pads the smaller dimension of an image tensor with zeros, such that width === height. + * + * @param imgTensor The image tensor. + * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on + * both sides of the minor dimension oof the image. + * @returns The padded tensor with width === height. + */ +export declare function padToSquare(imgTensor: tf.Tensor4D, isCenterImage?: boolean): tf.Tensor4D; diff --git a/types/ops/shuffleArray.d.ts b/types/ops/shuffleArray.d.ts new file mode 100644 index 0000000..2783fec --- /dev/null +++ b/types/ops/shuffleArray.d.ts @@ -0,0 +1 @@ +export declare function shuffleArray(inputArray: any[]): any[]; diff --git a/types/resizeResults.d.ts b/types/resizeResults.d.ts new file mode 100644 index 0000000..971c8b8 --- /dev/null +++ b/types/resizeResults.d.ts @@ -0,0 +1,2 @@ +import { IDimensions } from './classes/index'; +export declare function resizeResults(results: T, dimensions: IDimensions): T; diff --git a/types/ssdMobilenetv1/SsdMobilenetv1.d.ts b/types/ssdMobilenetv1/SsdMobilenetv1.d.ts new file mode 100644 index 0000000..f47c802 --- /dev/null +++ b/types/ssdMobilenetv1/SsdMobilenetv1.d.ts @@ -0,0 +1,21 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { FaceDetection } from '../classes/FaceDetection'; +import { NetInput, TNetInput } from '../dom/index'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { ISsdMobilenetv1Options } from './SsdMobilenetv1Options'; +import { NetParams } from './types'; +export declare class SsdMobilenetv1 extends NeuralNetwork { + constructor(); + forwardInput(input: NetInput): any; + forward(input: TNetInput): Promise; + locateFaces(input: TNetInput, options?: ISsdMobilenetv1Options): Promise; + protected getDefaultModelName(): string; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParams(weights: Float32Array): { + params: NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; +} diff --git a/types/ssdMobilenetv1/SsdMobilenetv1Options.d.ts b/types/ssdMobilenetv1/SsdMobilenetv1Options.d.ts new file mode 100644 index 0000000..0317a9b --- /dev/null +++ b/types/ssdMobilenetv1/SsdMobilenetv1Options.d.ts @@ -0,0 +1,12 @@ +export interface ISsdMobilenetv1Options { + minConfidence?: number; + maxResults?: number; +} +export declare class SsdMobilenetv1Options { + protected _name: string; + private _minConfidence; + private _maxResults; + constructor({ minConfidence, maxResults }?: ISsdMobilenetv1Options); + get minConfidence(): number; + get maxResults(): number; +} diff --git a/types/ssdMobilenetv1/boxPredictionLayer.d.ts b/types/ssdMobilenetv1/boxPredictionLayer.d.ts new file mode 100644 index 0000000..59f5a14 --- /dev/null +++ b/types/ssdMobilenetv1/boxPredictionLayer.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { BoxPredictionParams } from './types'; +export declare function boxPredictionLayer(x: tf.Tensor4D, params: BoxPredictionParams): any; diff --git a/types/ssdMobilenetv1/extractParams.d.ts b/types/ssdMobilenetv1/extractParams.d.ts new file mode 100644 index 0000000..bc8f246 --- /dev/null +++ b/types/ssdMobilenetv1/extractParams.d.ts @@ -0,0 +1,6 @@ +import { ParamMapping } from '../common/index'; +import { NetParams } from './types'; +export declare function extractParams(weights: Float32Array): { + params: NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts b/types/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts new file mode 100644 index 0000000..e0a1aff --- /dev/null +++ b/types/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts @@ -0,0 +1,7 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ParamMapping } from '../common/index'; +import { NetParams } from './types'; +export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/ssdMobilenetv1/index.d.ts b/types/ssdMobilenetv1/index.d.ts new file mode 100644 index 0000000..b83f479 --- /dev/null +++ b/types/ssdMobilenetv1/index.d.ts @@ -0,0 +1,7 @@ +import { SsdMobilenetv1 } from './SsdMobilenetv1'; +export * from './SsdMobilenetv1'; +export * from './SsdMobilenetv1Options'; +export declare function createSsdMobilenetv1(weights: Float32Array): SsdMobilenetv1; +export declare function createFaceDetectionNet(weights: Float32Array): SsdMobilenetv1; +export declare class FaceDetectionNet extends SsdMobilenetv1 { +} diff --git a/types/ssdMobilenetv1/mobileNetV1.d.ts b/types/ssdMobilenetv1/mobileNetV1.d.ts new file mode 100644 index 0000000..02c5129 --- /dev/null +++ b/types/ssdMobilenetv1/mobileNetV1.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { MobileNetV1 } from './types'; +export declare function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params): any; diff --git a/types/ssdMobilenetv1/nonMaxSuppression.d.ts b/types/ssdMobilenetv1/nonMaxSuppression.d.ts new file mode 100644 index 0000000..c8cb64c --- /dev/null +++ b/types/ssdMobilenetv1/nonMaxSuppression.d.ts @@ -0,0 +1,2 @@ +import * as tf from '../../dist/tfjs.esm.js'; +export declare function nonMaxSuppression(boxes: tf.Tensor2D, scores: number[], maxOutputSize: number, iouThreshold: number, scoreThreshold: number): number[]; diff --git a/types/ssdMobilenetv1/outputLayer.d.ts b/types/ssdMobilenetv1/outputLayer.d.ts new file mode 100644 index 0000000..9c0f133 --- /dev/null +++ b/types/ssdMobilenetv1/outputLayer.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { OutputLayerParams } from './types'; +export declare function outputLayer(boxPredictions: tf.Tensor4D, classPredictions: tf.Tensor4D, params: OutputLayerParams): any; diff --git a/types/ssdMobilenetv1/pointwiseConvLayer.d.ts b/types/ssdMobilenetv1/pointwiseConvLayer.d.ts new file mode 100644 index 0000000..f8694b9 --- /dev/null +++ b/types/ssdMobilenetv1/pointwiseConvLayer.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { PointwiseConvParams } from './types'; +export declare function pointwiseConvLayer(x: tf.Tensor4D, params: PointwiseConvParams, strides: [number, number]): any; diff --git a/types/ssdMobilenetv1/predictionLayer.d.ts b/types/ssdMobilenetv1/predictionLayer.d.ts new file mode 100644 index 0000000..f6c6e9d --- /dev/null +++ b/types/ssdMobilenetv1/predictionLayer.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { PredictionLayerParams } from './types'; +export declare function predictionLayer(x: tf.Tensor4D, conv11: tf.Tensor4D, params: PredictionLayerParams): any; diff --git a/types/ssdMobilenetv1/types.d.ts b/types/ssdMobilenetv1/types.d.ts new file mode 100644 index 0000000..56dde37 --- /dev/null +++ b/types/ssdMobilenetv1/types.d.ts @@ -0,0 +1,63 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ConvParams } from '../common/index'; +export declare type PointwiseConvParams = { + filters: tf.Tensor4D; + batch_norm_offset: tf.Tensor1D; +}; +export declare namespace MobileNetV1 { + type DepthwiseConvParams = { + filters: tf.Tensor4D; + batch_norm_scale: tf.Tensor1D; + batch_norm_offset: tf.Tensor1D; + batch_norm_mean: tf.Tensor1D; + batch_norm_variance: tf.Tensor1D; + }; + type ConvPairParams = { + depthwise_conv: DepthwiseConvParams; + pointwise_conv: PointwiseConvParams; + }; + type Params = { + conv_0: PointwiseConvParams; + conv_1: ConvPairParams; + conv_2: ConvPairParams; + conv_3: ConvPairParams; + conv_4: ConvPairParams; + conv_5: ConvPairParams; + conv_6: ConvPairParams; + conv_7: ConvPairParams; + conv_8: ConvPairParams; + conv_9: ConvPairParams; + conv_10: ConvPairParams; + conv_11: ConvPairParams; + conv_12: ConvPairParams; + conv_13: ConvPairParams; + }; +} +export declare type BoxPredictionParams = { + box_encoding_predictor: ConvParams; + class_predictor: ConvParams; +}; +export declare type PredictionLayerParams = { + conv_0: PointwiseConvParams; + conv_1: PointwiseConvParams; + conv_2: PointwiseConvParams; + conv_3: PointwiseConvParams; + conv_4: PointwiseConvParams; + conv_5: PointwiseConvParams; + conv_6: PointwiseConvParams; + conv_7: PointwiseConvParams; + box_predictor_0: BoxPredictionParams; + box_predictor_1: BoxPredictionParams; + box_predictor_2: BoxPredictionParams; + box_predictor_3: BoxPredictionParams; + box_predictor_4: BoxPredictionParams; + box_predictor_5: BoxPredictionParams; +}; +export declare type OutputLayerParams = { + extra_dim: tf.Tensor3D; +}; +export declare type NetParams = { + mobilenetv1: MobileNetV1.Params; + prediction_layer: PredictionLayerParams; + output_layer: OutputLayerParams; +}; diff --git a/types/tinyFaceDetector/TinyFaceDetector.d.ts b/types/tinyFaceDetector/TinyFaceDetector.d.ts new file mode 100644 index 0000000..d7cce74 --- /dev/null +++ b/types/tinyFaceDetector/TinyFaceDetector.d.ts @@ -0,0 +1,17 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { FaceDetection, Point } from '../classes/index'; +import { ParamMapping } from '../common/index'; +import { TNetInput } from '../dom/index'; +import { ITinyYolov2Options } from '../tinyYolov2/index'; +import { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base'; +import { TinyYolov2NetParams } from '../tinyYolov2/types'; +export declare class TinyFaceDetector extends TinyYolov2Base { + constructor(); + get anchors(): Point[]; + locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise; + protected getDefaultModelName(): string; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: TinyYolov2NetParams; + paramMappings: ParamMapping[]; + }; +} diff --git a/types/tinyFaceDetector/TinyFaceDetectorOptions.d.ts b/types/tinyFaceDetector/TinyFaceDetectorOptions.d.ts new file mode 100644 index 0000000..73bc6fe --- /dev/null +++ b/types/tinyFaceDetector/TinyFaceDetectorOptions.d.ts @@ -0,0 +1,6 @@ +import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index'; +export interface ITinyFaceDetectorOptions extends ITinyYolov2Options { +} +export declare class TinyFaceDetectorOptions extends TinyYolov2Options { + protected _name: string; +} diff --git a/types/tinyFaceDetector/const.d.ts b/types/tinyFaceDetector/const.d.ts new file mode 100644 index 0000000..b43ebf4 --- /dev/null +++ b/types/tinyFaceDetector/const.d.ts @@ -0,0 +1,4 @@ +import { Point } from '../classes/index'; +export declare const IOU_THRESHOLD = 0.4; +export declare const BOX_ANCHORS: Point[]; +export declare const MEAN_RGB: [number, number, number]; diff --git a/types/tinyFaceDetector/index.d.ts b/types/tinyFaceDetector/index.d.ts new file mode 100644 index 0000000..cde93ca --- /dev/null +++ b/types/tinyFaceDetector/index.d.ts @@ -0,0 +1,4 @@ +import { TinyFaceDetector } from './TinyFaceDetector'; +export * from './TinyFaceDetector'; +export * from './TinyFaceDetectorOptions'; +export declare function createTinyFaceDetector(weights: Float32Array): TinyFaceDetector; diff --git a/types/tinyYolov2/TinyYolov2.d.ts b/types/tinyYolov2/TinyYolov2.d.ts new file mode 100644 index 0000000..721b394 --- /dev/null +++ b/types/tinyYolov2/TinyYolov2.d.ts @@ -0,0 +1,18 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { FaceDetection, Point } from '../classes/index'; +import { ParamMapping } from '../common/types'; +import { TNetInput } from '../dom/types'; +import { TinyYolov2Base } from './TinyYolov2Base'; +import { ITinyYolov2Options } from './TinyYolov2Options'; +import { TinyYolov2NetParams } from './types'; +export declare class TinyYolov2 extends TinyYolov2Base { + constructor(withSeparableConvs?: boolean); + get withSeparableConvs(): boolean; + get anchors(): Point[]; + locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise; + protected getDefaultModelName(): string; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: TinyYolov2NetParams; + paramMappings: ParamMapping[]; + }; +} diff --git a/types/tinyYolov2/TinyYolov2Base.d.ts b/types/tinyYolov2/TinyYolov2Base.d.ts new file mode 100644 index 0000000..ad58969 --- /dev/null +++ b/types/tinyYolov2/TinyYolov2Base.d.ts @@ -0,0 +1,33 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { Dimensions } from '../classes/Dimensions'; +import { ObjectDetection } from '../classes/ObjectDetection'; +import { NetInput } from '../dom/NetInput'; +import { TNetInput } from '../dom/types'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { TinyYolov2Config } from './config'; +import { ITinyYolov2Options } from './TinyYolov2Options'; +import { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types'; +export declare class TinyYolov2Base extends NeuralNetwork { + static DEFAULT_FILTER_SIZES: number[]; + private _config; + constructor(config: TinyYolov2Config); + get config(): TinyYolov2Config; + get withClassScores(): boolean; + get boxEncodingSize(): number; + runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D; + runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D; + forwardInput(input: NetInput, inputSize: number): tf.Tensor4D; + forward(input: TNetInput, inputSize: number): Promise; + detect(input: TNetInput, forwardParams?: ITinyYolov2Options): Promise; + protected getDefaultModelName(): string; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: TinyYolov2NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParams(weights: Float32Array): { + params: TinyYolov2NetParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractBoxes(outputTensor: tf.Tensor4D, inputBlobDimensions: Dimensions, scoreThreshold?: number): Promise; + private extractPredictedClass; +} diff --git a/types/tinyYolov2/TinyYolov2Options.d.ts b/types/tinyYolov2/TinyYolov2Options.d.ts new file mode 100644 index 0000000..b94a7a5 --- /dev/null +++ b/types/tinyYolov2/TinyYolov2Options.d.ts @@ -0,0 +1,12 @@ +export interface ITinyYolov2Options { + inputSize?: number; + scoreThreshold?: number; +} +export declare class TinyYolov2Options { + protected _name: string; + private _inputSize; + private _scoreThreshold; + constructor({ inputSize, scoreThreshold }?: ITinyYolov2Options); + get inputSize(): number; + get scoreThreshold(): number; +} diff --git a/types/tinyYolov2/config.d.ts b/types/tinyYolov2/config.d.ts new file mode 100644 index 0000000..4158ad0 --- /dev/null +++ b/types/tinyYolov2/config.d.ts @@ -0,0 +1,12 @@ +import { Point } from '../classes/Point'; +export declare type TinyYolov2Config = { + withSeparableConvs: boolean; + iouThreshold: number; + anchors: Point[]; + classes: string[]; + meanRgb?: [number, number, number]; + withClassScores?: boolean; + filterSizes?: number[]; + isFirstLayerConv2d?: boolean; +}; +export declare function validateConfig(config: any): void; diff --git a/types/tinyYolov2/const.d.ts b/types/tinyYolov2/const.d.ts new file mode 100644 index 0000000..05140e8 --- /dev/null +++ b/types/tinyYolov2/const.d.ts @@ -0,0 +1,7 @@ +import { Point } from '../classes/index'; +export declare const IOU_THRESHOLD = 0.4; +export declare const BOX_ANCHORS: Point[]; +export declare const BOX_ANCHORS_SEPARABLE: Point[]; +export declare const MEAN_RGB_SEPARABLE: [number, number, number]; +export declare const DEFAULT_MODEL_NAME = "tiny_yolov2_model"; +export declare const DEFAULT_MODEL_NAME_SEPARABLE_CONV = "tiny_yolov2_separable_conv_model"; diff --git a/types/tinyYolov2/convWithBatchNorm.d.ts b/types/tinyYolov2/convWithBatchNorm.d.ts new file mode 100644 index 0000000..ce94166 --- /dev/null +++ b/types/tinyYolov2/convWithBatchNorm.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ConvWithBatchNorm } from './types'; +export declare function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D; diff --git a/types/tinyYolov2/depthwiseSeparableConv.d.ts b/types/tinyYolov2/depthwiseSeparableConv.d.ts new file mode 100644 index 0000000..b8a01e8 --- /dev/null +++ b/types/tinyYolov2/depthwiseSeparableConv.d.ts @@ -0,0 +1,3 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { SeparableConvParams } from '../common/types'; +export declare function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D; diff --git a/types/tinyYolov2/extractParams.d.ts b/types/tinyYolov2/extractParams.d.ts new file mode 100644 index 0000000..2722193 --- /dev/null +++ b/types/tinyYolov2/extractParams.d.ts @@ -0,0 +1,7 @@ +import { ParamMapping } from '../common/types'; +import { TinyYolov2Config } from './config'; +import { TinyYolov2NetParams } from './types'; +export declare function extractParams(weights: Float32Array, config: TinyYolov2Config, boxEncodingSize: number, filterSizes: number[]): { + params: TinyYolov2NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/tinyYolov2/extractParamsFromWeigthMap.d.ts b/types/tinyYolov2/extractParamsFromWeigthMap.d.ts new file mode 100644 index 0000000..25a05a1 --- /dev/null +++ b/types/tinyYolov2/extractParamsFromWeigthMap.d.ts @@ -0,0 +1,8 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ParamMapping } from '../common/types'; +import { TinyYolov2Config } from './config'; +import { TinyYolov2NetParams } from './types'; +export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap, config: TinyYolov2Config): { + params: TinyYolov2NetParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/tinyYolov2/index.d.ts b/types/tinyYolov2/index.d.ts new file mode 100644 index 0000000..bfef96a --- /dev/null +++ b/types/tinyYolov2/index.d.ts @@ -0,0 +1,6 @@ +import { TinyYolov2 } from './TinyYolov2'; +export * from './TinyYolov2Options'; +export * from './config'; +export * from './types'; +export { TinyYolov2 }; +export declare function createTinyYolov2(weights: Float32Array, withSeparableConvs?: boolean): TinyYolov2; diff --git a/types/tinyYolov2/leaky.d.ts b/types/tinyYolov2/leaky.d.ts new file mode 100644 index 0000000..01a54ce --- /dev/null +++ b/types/tinyYolov2/leaky.d.ts @@ -0,0 +1,2 @@ +import * as tf from '../../dist/tfjs.esm.js'; +export declare function leaky(x: tf.Tensor4D): tf.Tensor4D; diff --git a/types/tinyYolov2/types.d.ts b/types/tinyYolov2/types.d.ts new file mode 100644 index 0000000..ce7804e --- /dev/null +++ b/types/tinyYolov2/types.d.ts @@ -0,0 +1,34 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ConvParams } from '../common/index'; +import { SeparableConvParams } from '../common/types'; +export declare type BatchNorm = { + sub: tf.Tensor1D; + truediv: tf.Tensor1D; +}; +export declare type ConvWithBatchNorm = { + conv: ConvParams; + bn: BatchNorm; +}; +export declare type MobilenetParams = { + conv0: SeparableConvParams | ConvParams; + conv1: SeparableConvParams; + conv2: SeparableConvParams; + conv3: SeparableConvParams; + conv4: SeparableConvParams; + conv5: SeparableConvParams; + conv6?: SeparableConvParams; + conv7?: SeparableConvParams; + conv8: ConvParams; +}; +export declare type DefaultTinyYolov2NetParams = { + conv0: ConvWithBatchNorm; + conv1: ConvWithBatchNorm; + conv2: ConvWithBatchNorm; + conv3: ConvWithBatchNorm; + conv4: ConvWithBatchNorm; + conv5: ConvWithBatchNorm; + conv6: ConvWithBatchNorm; + conv7: ConvWithBatchNorm; + conv8: ConvParams; +}; +export declare type TinyYolov2NetParams = DefaultTinyYolov2NetParams | MobilenetParams; diff --git a/types/utils/index.d.ts b/types/utils/index.d.ts new file mode 100644 index 0000000..0bcb8da --- /dev/null +++ b/types/utils/index.d.ts @@ -0,0 +1,17 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { Point } from '../classes/index'; +import { Dimensions, IDimensions } from '../classes/Dimensions'; +export declare function isTensor(tensor: any, dim: number): boolean; +export declare function isTensor1D(tensor: any): tensor is tf.Tensor1D; +export declare function isTensor2D(tensor: any): tensor is tf.Tensor2D; +export declare function isTensor3D(tensor: any): tensor is tf.Tensor3D; +export declare function isTensor4D(tensor: any): tensor is tf.Tensor4D; +export declare function isFloat(num: number): boolean; +export declare function isEven(num: number): boolean; +export declare function round(num: number, prec?: number): number; +export declare function isDimensions(obj: any): boolean; +export declare function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number): Dimensions; +export declare function getCenterPoint(pts: Point[]): Point; +export declare function range(num: number, start: number, step: number): number[]; +export declare function isValidNumber(num: any): boolean; +export declare function isValidProbablitiy(num: any): boolean; diff --git a/types/xception/TinyXception.d.ts b/types/xception/TinyXception.d.ts new file mode 100644 index 0000000..b0f58d7 --- /dev/null +++ b/types/xception/TinyXception.d.ts @@ -0,0 +1,19 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { NetInput, TNetInput } from '../dom/index'; +import { NeuralNetwork } from '../NeuralNetwork'; +import { TinyXceptionParams } from './types'; +export declare class TinyXception extends NeuralNetwork { + private _numMainBlocks; + constructor(numMainBlocks: number); + forwardInput(input: NetInput): tf.Tensor4D; + forward(input: TNetInput): Promise; + protected getDefaultModelName(): string; + protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { + params: TinyXceptionParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; + protected extractParams(weights: Float32Array): { + params: TinyXceptionParams; + paramMappings: import("../common/types.js").ParamMapping[]; + }; +} diff --git a/types/xception/extractParams.d.ts b/types/xception/extractParams.d.ts new file mode 100644 index 0000000..886c5ca --- /dev/null +++ b/types/xception/extractParams.d.ts @@ -0,0 +1,6 @@ +import { ParamMapping } from '../common/types'; +import { TinyXceptionParams } from './types'; +export declare function extractParams(weights: Float32Array, numMainBlocks: number): { + params: TinyXceptionParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/xception/extractParamsFromWeigthMap.d.ts b/types/xception/extractParamsFromWeigthMap.d.ts new file mode 100644 index 0000000..ab56a36 --- /dev/null +++ b/types/xception/extractParamsFromWeigthMap.d.ts @@ -0,0 +1,7 @@ +import * as tf from '../../dist/tfjs.esm.js'; +import { ParamMapping } from '../common/index'; +import { TinyXceptionParams } from './types'; +export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap, numMainBlocks: number): { + params: TinyXceptionParams; + paramMappings: ParamMapping[]; +}; diff --git a/types/xception/types.d.ts b/types/xception/types.d.ts new file mode 100644 index 0000000..24ecf72 --- /dev/null +++ b/types/xception/types.d.ts @@ -0,0 +1,23 @@ +import { ConvParams, SeparableConvParams } from '../common/index'; +export declare type ReductionBlockParams = { + separable_conv0: SeparableConvParams; + separable_conv1: SeparableConvParams; + expansion_conv: ConvParams; +}; +export declare type MainBlockParams = { + separable_conv0: SeparableConvParams; + separable_conv1: SeparableConvParams; + separable_conv2: SeparableConvParams; +}; +export declare type TinyXceptionParams = { + entry_flow: { + conv_in: ConvParams; + reduction_block_0: ReductionBlockParams; + reduction_block_1: ReductionBlockParams; + }; + middle_flow: any; + exit_flow: { + reduction_block: ReductionBlockParams; + separable_conv: SeparableConvParams; + }; +};